react-native-unit-components 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +133 -13
- package/ios/UnitReactNativeComponents.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/ios/UnitReactNativeComponents.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/UnitReactNativeComponents.xcodeproj/project.xcworkspace/xcuserdata/alonshprung.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/UnitReactNativeComponents.xcodeproj/xcuserdata/alonshprung.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/lib/commonjs/components/UNACHCreditComponent/UNACHCreditComponent.js +24 -1
- package/lib/commonjs/components/UNACHCreditComponent/UNACHCreditComponent.js.map +1 -1
- package/lib/commonjs/components/UNACHDebitComponent/UNACHDebitComponent.js +24 -1
- package/lib/commonjs/components/UNACHDebitComponent/UNACHDebitComponent.js.map +1 -1
- package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.js +25 -3
- package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.js.map +1 -1
- package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.utils.js +5 -1
- package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.utils.js.map +1 -1
- package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.js +24 -1
- package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.js.map +1 -1
- package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.utils.js +2 -0
- package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.utils.js.map +1 -1
- package/lib/commonjs/components/UNBookPaymentComponent/UNBookPaymentComponent.js +18 -1
- package/lib/commonjs/components/UNBookPaymentComponent/UNBookPaymentComponent.js.map +1 -1
- package/lib/commonjs/components/UNBottomSheetComponent/UNBottomSheetComponent.js +3 -0
- package/lib/commonjs/components/UNBottomSheetComponent/UNBottomSheetComponent.js.map +1 -1
- package/lib/commonjs/components/UNCardComponent/UNCardComponent.js +37 -3
- package/lib/commonjs/components/UNCardComponent/UNCardComponent.js.map +1 -1
- package/lib/commonjs/components/UNCardComponent/UNCardComponent.utils.js +9 -1
- package/lib/commonjs/components/UNCardComponent/UNCardComponent.utils.js.map +1 -1
- package/lib/commonjs/messages/webMessages/cardMessage.js +1 -0
- package/lib/commonjs/messages/webMessages/cardMessage.js.map +1 -1
- package/lib/commonjs/messages/webMessages/onLoadMessage.js +17 -0
- package/lib/commonjs/messages/webMessages/onLoadMessage.js.map +1 -0
- package/lib/commonjs/messages/webMessages/unitMessages.js.map +1 -1
- package/lib/commonjs/scripts/html/bodyScript.js +23 -1
- package/lib/commonjs/scripts/html/bodyScript.js.map +1 -1
- package/lib/commonjs/sharedTypes/account.types.js.map +1 -1
- package/lib/commonjs/sharedTypes/achCredit.types.js.map +1 -1
- package/lib/commonjs/sharedTypes/activity.types.js +6 -0
- package/lib/commonjs/sharedTypes/activity.types.js.map +1 -0
- package/lib/commonjs/sharedTypes/authorization.types.js +2 -0
- package/lib/commonjs/sharedTypes/authorization.types.js.map +1 -0
- package/lib/commonjs/sharedTypes/card.types.js +15 -0
- package/lib/commonjs/sharedTypes/card.types.js.map +1 -1
- package/lib/commonjs/sharedTypes/index.js.map +1 -1
- package/lib/commonjs/sharedTypes/onLoadResponse.types.js +0 -4
- package/lib/commonjs/sharedTypes/onLoadResponse.types.js.map +1 -1
- package/lib/commonjs/sharedTypes/transactions.types.js +52 -0
- package/lib/commonjs/sharedTypes/transactions.types.js.map +1 -0
- package/lib/commonjs/webComponent/WebComponent.js +4 -2
- package/lib/commonjs/webComponent/WebComponent.js.map +1 -1
- package/lib/commonjs/webComponent/html.js +6 -0
- package/lib/commonjs/webComponent/html.js.map +1 -1
- package/lib/module/components/UNACHCreditComponent/UNACHCreditComponent.js +24 -1
- package/lib/module/components/UNACHCreditComponent/UNACHCreditComponent.js.map +1 -1
- package/lib/module/components/UNACHDebitComponent/UNACHDebitComponent.js +24 -1
- package/lib/module/components/UNACHDebitComponent/UNACHDebitComponent.js.map +1 -1
- package/lib/module/components/UNAccountComponent/UNAccountComponent.js +27 -5
- package/lib/module/components/UNAccountComponent/UNAccountComponent.js.map +1 -1
- package/lib/module/components/UNAccountComponent/UNAccountComponent.utils.js +3 -0
- package/lib/module/components/UNAccountComponent/UNAccountComponent.utils.js.map +1 -1
- package/lib/module/components/UNActivityComponent/UNActivityComponent.js +24 -1
- package/lib/module/components/UNActivityComponent/UNActivityComponent.js.map +1 -1
- package/lib/module/components/UNActivityComponent/UNActivityComponent.utils.js +2 -0
- package/lib/module/components/UNActivityComponent/UNActivityComponent.utils.js.map +1 -1
- package/lib/module/components/UNBookPaymentComponent/UNBookPaymentComponent.js +18 -1
- package/lib/module/components/UNBookPaymentComponent/UNBookPaymentComponent.js.map +1 -1
- package/lib/module/components/UNBottomSheetComponent/UNBottomSheetComponent.js +3 -0
- package/lib/module/components/UNBottomSheetComponent/UNBottomSheetComponent.js.map +1 -1
- package/lib/module/components/UNCardComponent/UNCardComponent.js +39 -5
- package/lib/module/components/UNCardComponent/UNCardComponent.js.map +1 -1
- package/lib/module/components/UNCardComponent/UNCardComponent.utils.js +6 -0
- package/lib/module/components/UNCardComponent/UNCardComponent.utils.js.map +1 -1
- package/lib/module/messages/webMessages/cardMessage.js +1 -0
- package/lib/module/messages/webMessages/cardMessage.js.map +1 -1
- package/lib/module/messages/webMessages/onLoadMessage.js +10 -0
- package/lib/module/messages/webMessages/onLoadMessage.js.map +1 -0
- package/lib/module/messages/webMessages/unitMessages.js.map +1 -1
- package/lib/module/scripts/html/bodyScript.js +20 -0
- package/lib/module/scripts/html/bodyScript.js.map +1 -1
- package/lib/module/sharedTypes/account.types.js.map +1 -1
- package/lib/module/sharedTypes/achCredit.types.js.map +1 -1
- package/lib/module/sharedTypes/activity.types.js +2 -0
- package/lib/module/sharedTypes/activity.types.js.map +1 -0
- package/lib/module/sharedTypes/authorization.types.js +2 -0
- package/lib/module/sharedTypes/authorization.types.js.map +1 -0
- package/lib/module/sharedTypes/card.types.js +13 -1
- package/lib/module/sharedTypes/card.types.js.map +1 -1
- package/lib/module/sharedTypes/index.js +1 -1
- package/lib/module/sharedTypes/index.js.map +1 -1
- package/lib/module/sharedTypes/onLoadResponse.types.js +1 -1
- package/lib/module/sharedTypes/onLoadResponse.types.js.map +1 -1
- package/lib/module/sharedTypes/transactions.types.js +44 -0
- package/lib/module/sharedTypes/transactions.types.js.map +1 -0
- package/lib/module/webComponent/WebComponent.js +4 -2
- package/lib/module/webComponent/WebComponent.js.map +1 -1
- package/lib/module/webComponent/html.js +7 -1
- package/lib/module/webComponent/html.js.map +1 -1
- package/lib/typescript/components/UNACHCreditComponent/UNACHCreditComponent.d.ts +2 -2
- package/lib/typescript/components/UNACHDebitComponent/UNACHDebitComponent.d.ts +2 -2
- package/lib/typescript/components/UNAccountComponent/UNAccountComponent.d.ts +7 -3
- package/lib/typescript/components/UNAccountComponent/UNAccountComponent.utils.d.ts +1 -0
- package/lib/typescript/components/UNActivityComponent/UNActivityComponent.d.ts +4 -2
- package/lib/typescript/components/UNBookPaymentComponent/UNBookPaymentComponent.d.ts +2 -2
- package/lib/typescript/components/UNCardComponent/UNCardComponent.d.ts +9 -3
- package/lib/typescript/components/UNCardComponent/UNCardComponent.utils.d.ts +3 -0
- package/lib/typescript/messages/webMessages/cardMessage.d.ts +5 -1
- package/lib/typescript/messages/webMessages/onLoadMessage.d.ts +30 -0
- package/lib/typescript/messages/webMessages/unitMessages.d.ts +2 -2
- package/lib/typescript/scripts/html/bodyScript.d.ts +3 -0
- package/lib/typescript/sharedTypes/account.types.d.ts +13 -4
- package/lib/typescript/sharedTypes/achCredit.types.d.ts +6 -0
- package/lib/typescript/sharedTypes/activity.types.d.ts +7 -0
- package/lib/typescript/sharedTypes/authorization.types.d.ts +20 -0
- package/lib/typescript/sharedTypes/card.types.d.ts +12 -0
- package/lib/typescript/sharedTypes/index.d.ts +1 -1
- package/lib/typescript/sharedTypes/onLoadResponse.types.d.ts +12 -16
- package/lib/typescript/sharedTypes/transactions.types.d.ts +80 -0
- package/package.json +1 -1
- package/src/components/UNACHCreditComponent/UNACHCreditComponent.tsx +30 -3
- package/src/components/UNACHDebitComponent/UNACHDebitComponent.tsx +30 -3
- package/src/components/UNAccountComponent/UNAccountComponent.tsx +40 -9
- package/src/components/UNAccountComponent/UNAccountComponent.utils.ts +4 -0
- package/src/components/UNActivityComponent/UNActivityComponent.tsx +32 -3
- package/src/components/UNActivityComponent/UNActivityComponent.utils.ts +2 -0
- package/src/components/UNBookPaymentComponent/UNBookPaymentComponent.tsx +23 -3
- package/src/components/UNBottomSheetComponent/UNBottomSheetComponent.tsx +4 -1
- package/src/components/UNCardComponent/UNCardComponent.tsx +49 -7
- package/src/components/UNCardComponent/UNCardComponent.utils.ts +9 -0
- package/src/messages/webMessages/cardMessage.ts +6 -0
- package/src/messages/webMessages/onLoadMessage.ts +45 -0
- package/src/messages/webMessages/unitMessages.ts +2 -2
- package/src/scripts/html/bodyScript.ts +22 -0
- package/src/sharedTypes/account.types.ts +25 -17
- package/src/sharedTypes/achCredit.types.ts +7 -0
- package/src/sharedTypes/activity.types.ts +8 -0
- package/src/sharedTypes/authorization.types.ts +22 -0
- package/src/sharedTypes/card.types.ts +13 -0
- package/src/sharedTypes/index.ts +1 -1
- package/src/sharedTypes/onLoadResponse.types.ts +15 -23
- package/src/sharedTypes/transactions.types.ts +84 -0
- package/src/webComponent/WebComponent.tsx +4 -2
- package/src/webComponent/html.ts +7 -1
- package/android/src/main/res/values/themes.xml +0 -16
- package/android/src/main/res/values-night/themes.xml +0 -16
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import React, { useEffect, useRef, useState } from 'react';
|
|
1
|
+
import React, { useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
2
2
|
import { Dimensions, View } from 'react-native';
|
|
3
3
|
import { PageMessage } from '../..//messages/webMessages/pageMessage';
|
|
4
4
|
import { UnitMessage } from '../../messages/webMessages/unitMessages';
|
|
5
5
|
import EventBus from '../../helpers/EventBus';
|
|
6
6
|
import { WebComponent, WebComponentType } from '../../webComponent/WebComponent';
|
|
7
|
-
import { getAccountParams, getAccountScript, injectRefreshEventIfNeeded } from './UNAccountComponent.utils';
|
|
7
|
+
import { getAccountParams, getAccountScript, injectOpenActionsMenuScript, injectRefreshEventIfNeeded } from './UNAccountComponent.utils';
|
|
8
8
|
import { PresentationMode } from '../../scripts/html/bodyHtml';
|
|
9
9
|
import { useListenerToBus } from '../../hooks/listenerToBus';
|
|
10
10
|
import { AccountMessage } from '../../messages/webMessages/accountMessage';
|
|
11
|
+
import { RESPONSE_KEYS } from '../../messages/webMessages/onLoadMessage';
|
|
11
12
|
export let AccountAction;
|
|
12
13
|
(function (AccountAction) {
|
|
13
14
|
AccountAction["List"] = "account-list";
|
|
14
15
|
AccountAction["Menu"] = "account-menu";
|
|
15
16
|
})(AccountAction || (AccountAction = {}));
|
|
16
|
-
export const UNAccountComponent = props
|
|
17
|
+
export const UNAccountComponent = /*#__PURE__*/React.forwardRef(function UNAccountComponent(props, accountRef) {
|
|
17
18
|
const [height, setHeight] = useState(0);
|
|
18
19
|
const windowWidth = Dimensions.get('window').width;
|
|
19
20
|
const [requestRefreshEvent, setRequestRefreshEvent] = useState(null);
|
|
@@ -24,6 +25,22 @@ export const UNAccountComponent = props => {
|
|
|
24
25
|
const requestRefresh = data => {
|
|
25
26
|
setRequestRefreshEvent(data);
|
|
26
27
|
};
|
|
28
|
+
const handleUnitOnLoad = response => {
|
|
29
|
+
if (!props.onLoad) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (RESPONSE_KEYS.errors in response) {
|
|
33
|
+
props.onLoad(response);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (RESPONSE_KEYS.account in response) {
|
|
37
|
+
// AccountsOnLoadResponse;
|
|
38
|
+
props.onLoad(response[RESPONSE_KEYS.account]);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
console.error('On Load Error: unexpected response type.');
|
|
42
|
+
return;
|
|
43
|
+
};
|
|
27
44
|
useListenerToBus({
|
|
28
45
|
busEventKey: UnitMessage.UNIT_REQUEST_REFRESH,
|
|
29
46
|
action: requestRefresh
|
|
@@ -35,10 +52,15 @@ export const UNAccountComponent = props => {
|
|
|
35
52
|
useEffect(() => {
|
|
36
53
|
injectRefreshEventIfNeeded(webRef.current, requestRefreshEvent);
|
|
37
54
|
}, [requestRefreshEvent]);
|
|
55
|
+
useImperativeHandle(accountRef, () => ({
|
|
56
|
+
openActionsMenu() {
|
|
57
|
+
injectOpenActionsMenuScript(webRef.current);
|
|
58
|
+
}
|
|
59
|
+
}));
|
|
38
60
|
const handleMessage = message => {
|
|
39
61
|
switch (message.type) {
|
|
40
62
|
case UnitMessage.UNIT_ON_LOAD:
|
|
41
|
-
|
|
63
|
+
handleUnitOnLoad(message.details);
|
|
42
64
|
break;
|
|
43
65
|
case UnitMessage.UNIT_REQUEST_RENDERING:
|
|
44
66
|
{
|
|
@@ -70,5 +92,5 @@ export const UNAccountComponent = props => {
|
|
|
70
92
|
width: windowWidth,
|
|
71
93
|
isScrollable: false
|
|
72
94
|
}));
|
|
73
|
-
};
|
|
95
|
+
});
|
|
74
96
|
//# sourceMappingURL=UNAccountComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","useState","Dimensions","View","PageMessage","UnitMessage","EventBus","WebComponent","WebComponentType","getAccountParams","getAccountScript","injectRefreshEventIfNeeded","PresentationMode","useListenerToBus","AccountMessage","AccountAction","UNAccountComponent","props","height","setHeight","windowWidth","get","width","requestRefreshEvent","setRequestRefreshEvent","webRef","handleAccountChanged","account","onAccountChanged","requestRefresh","data","busEventKey","UNIT_REQUEST_REFRESH","action","UNIT_ACCOUNT_CHANGED","current","handleMessage","message","type","UNIT_ON_LOAD","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useImperativeHandle","useRef","useState","Dimensions","View","PageMessage","UnitMessage","EventBus","WebComponent","WebComponentType","getAccountParams","getAccountScript","injectOpenActionsMenuScript","injectRefreshEventIfNeeded","PresentationMode","useListenerToBus","AccountMessage","RESPONSE_KEYS","AccountAction","UNAccountComponent","forwardRef","props","accountRef","height","setHeight","windowWidth","get","width","requestRefreshEvent","setRequestRefreshEvent","webRef","handleAccountChanged","account","onAccountChanged","requestRefresh","data","handleUnitOnLoad","response","onLoad","errors","console","error","busEventKey","UNIT_REQUEST_REFRESH","action","UNIT_ACCOUNT_CHANGED","current","openActionsMenu","handleMessage","message","type","UNIT_ON_LOAD","details","UNIT_REQUEST_RENDERING","event","componentName","componentResourceId","accountId","requestRenderingEvent","Instance","PAGE_HEIGHT","createElement","style","ref","presentationMode","Default","params","script","theme","onMessage","isScrollable"],"sources":["UNAccountComponent.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { Dimensions, View } from 'react-native';\nimport type WebView from 'react-native-webview';\nimport { HeightEvent, PageMessage } from '../..//messages/webMessages/pageMessage';\nimport { RequestRefreshEvent, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport EventBus from '../../helpers/EventBus';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport { getAccountParams, getAccountScript, injectOpenActionsMenuScript, injectRefreshEventIfNeeded } from './UNAccountComponent.utils';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport type { BottomSheetSlotData } from '../UNBottomSheetComponent/UNBottomSheetComponent';\nimport type { UNError, UNOnLoadResponse, UNOnLoadResponseData } from '../../sharedTypes';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { UNAccountData } from '../../sharedTypes/account.types';\nimport { AccountMessage } from '../../messages/webMessages/accountMessage';\nimport { RESPONSE_KEYS, UnitOnLoadResponseEvent } from '../../messages/webMessages/onLoadMessage';\n\nexport interface UNAccountComponentProps {\n accountId?: string;\n customerToken: string;\n theme?: string;\n onLoad?: (response: UNOnLoadResponse<[UNAccountData]>) => void;\n onAccountChanged?: (account: UNAccountData) => void;\n}\n\nexport interface UNAccountRef {\n openActionsMenu: () => void;\n}\n\nexport enum AccountAction {\n List = 'account-list',\n Menu = 'account-menu'\n}\n\nexport const UNAccountComponent = React.forwardRef<UNAccountRef, UNAccountComponentProps>(function UNAccountComponent(props, accountRef) {\n const [height, setHeight] = useState(0);\n const windowWidth = Dimensions.get('window').width;\n\n const [requestRefreshEvent, setRequestRefreshEvent] = useState<RequestRefreshEvent | null>(null);\n\n const webRef = useRef<WebView>(null);\n\n const handleAccountChanged = (account: UNAccountData) => {\n props.onAccountChanged && props.onAccountChanged(account);\n };\n\n const requestRefresh = (data: RequestRefreshEvent) => {\n setRequestRefreshEvent(data);\n };\n\n const handleUnitOnLoad = (response: UnitOnLoadResponseEvent) => {\n if (!props.onLoad) {\n return;\n }\n\n if (RESPONSE_KEYS.errors in response) {\n props.onLoad(response as UNError);\n return;\n }\n\n if (RESPONSE_KEYS.account in response) {\n // AccountsOnLoadResponse;\n props.onLoad(response[RESPONSE_KEYS.account] as UNOnLoadResponseData<[UNAccountData]>);\n return;\n }\n\n console.error('On Load Error: unexpected response type.');\n return;\n };\n\n useListenerToBus({ busEventKey: UnitMessage.UNIT_REQUEST_REFRESH, action: requestRefresh });\n useListenerToBus({ busEventKey: AccountMessage.UNIT_ACCOUNT_CHANGED, action: handleAccountChanged });\n\n useEffect(() => {\n injectRefreshEventIfNeeded(webRef.current, requestRefreshEvent);\n }, [requestRefreshEvent]);\n\n useImperativeHandle(accountRef, () => ({\n openActionsMenu() {\n injectOpenActionsMenuScript(webRef.current);\n }\n }));\n\n const handleMessage = (message: WebViewMessage) => {\n switch (message.type) {\n case UnitMessage.UNIT_ON_LOAD:\n handleUnitOnLoad(message.details as UnitOnLoadResponseEvent);\n break;\n case UnitMessage.UNIT_REQUEST_RENDERING: {\n const event: BottomSheetSlotData = {\n componentName: WebComponentType.account,\n componentResourceId: props.accountId,\n requestRenderingEvent: message.details as RequestRenderingEvent\n };\n EventBus.Instance.event(UnitMessage.UNIT_REQUEST_RENDERING, event);\n break;\n }\n case PageMessage.PAGE_HEIGHT:\n setHeight((message.details as HeightEvent).height);\n break;\n }\n };\n\n return (\n <View style={{ height }}>\n <WebComponent\n ref={webRef}\n type={WebComponentType.account}\n presentationMode={PresentationMode.Default}\n params={getAccountParams(props)}\n script={getAccountScript()}\n theme={props.theme}\n onMessage={message => handleMessage(message)}\n width={windowWidth}\n isScrollable={false}\n />\n </View>\n );\n});\n"],"mappings":"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"}
|
|
@@ -15,6 +15,9 @@ export const getAccountScript = () => {
|
|
|
15
15
|
}
|
|
16
16
|
`;
|
|
17
17
|
};
|
|
18
|
+
export const injectOpenActionsMenuScript = currentWeb => {
|
|
19
|
+
currentWeb === null || currentWeb === void 0 ? void 0 : currentWeb.injectJavaScript(`dispatchOpenActionsMenu('${WebComponentType.account}')`);
|
|
20
|
+
};
|
|
18
21
|
export const injectRefreshEventIfNeeded = (currentWeb, requestRefreshEvent) => {
|
|
19
22
|
if (requestRefreshEvent && requestRefreshEvent.dependencies.includes(WebComponentType.account.valueOf())) {
|
|
20
23
|
currentWeb === null || currentWeb === void 0 ? void 0 : currentWeb.injectJavaScript(`dispatchRefreshEvent('${JSON.stringify(requestRefreshEvent)}')`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AccountAction","UnitMessage","WebComponentType","getAccountParams","props","accountId","customerToken","getAccountScript","UNIT_REQUEST_REFRESH","
|
|
1
|
+
{"version":3,"names":["AccountAction","UnitMessage","WebComponentType","getAccountParams","props","accountId","customerToken","getAccountScript","UNIT_REQUEST_REFRESH","injectOpenActionsMenuScript","currentWeb","injectJavaScript","account","injectRefreshEventIfNeeded","requestRefreshEvent","dependencies","includes","valueOf","JSON","stringify","getAccountActionType","requestRendering","data","nativeComponent","List","Menu"],"sources":["UNAccountComponent.utils.ts"],"sourcesContent":["import { AccountAction, UNAccountComponentProps } from './UNAccountComponent';\nimport { RequestRefreshEvent, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport type WebView from 'react-native-webview';\nimport { WebComponentType } from '../../webComponent/WebComponent';\n\nexport const getAccountParams = (props: UNAccountComponentProps) => {\n return `\n account-id=\"${props.accountId}\"\n customer-token=\"${props.customerToken}\"\n `;\n};\n\nexport const getAccountScript = () => {\n return `\n const dispatchRefreshEvent = (details) => {\n const event = new CustomEvent(\"${UnitMessage.UNIT_REQUEST_REFRESH}\",{ detail: JSON.parse(details) })\n window.dispatchEvent(event)\n }\n `;\n};\n\nexport const injectOpenActionsMenuScript = (currentWeb: WebView | null) => {\n currentWeb?.injectJavaScript(`dispatchOpenActionsMenu('${WebComponentType.account}')`);\n};\n\nexport const injectRefreshEventIfNeeded = (currentWeb: WebView | null, requestRefreshEvent: RequestRefreshEvent | null) => {\n if (requestRefreshEvent && requestRefreshEvent.dependencies.includes(WebComponentType.account.valueOf())) {\n currentWeb?.injectJavaScript(`dispatchRefreshEvent('${JSON.stringify(requestRefreshEvent)}')`);\n }\n};\n\nexport const getAccountActionType = (requestRendering: RequestRenderingEvent) => {\n return requestRendering.data.nativeComponent.includes(AccountAction.List) ? AccountAction.List : AccountAction.Menu;\n};\n"],"mappings":"AAAA,SAASA,aAAa,QAAiC,sBAAsB;AAC7E,SAAqDC,WAAW,QAAQ,yCAAyC;AAEjH,SAASC,gBAAgB,QAAQ,iCAAiC;AAElE,OAAO,MAAMC,gBAAgB,GAAIC,KAA8B,IAAK;EAClE,OAAQ;AACV,kBAAkBA,KAAK,CAACC,SAAU;AAClC,sBAAsBD,KAAK,CAACE,aAAc;AAC1C,GAAG;AACH,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EACpC,OAAQ;AACV;AACA,qCAAqCN,WAAW,CAACO,oBAAqB;AACtE;AACA;AACA,GAAG;AACH,CAAC;AAED,OAAO,MAAMC,2BAA2B,GAAIC,UAA0B,IAAK;EACzEA,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEC,gBAAgB,CAAE,4BAA2BT,gBAAgB,CAACU,OAAQ,IAAG,CAAC;AACxF,CAAC;AAED,OAAO,MAAMC,0BAA0B,GAAGA,CAACH,UAA0B,EAAEI,mBAA+C,KAAK;EACzH,IAAIA,mBAAmB,IAAIA,mBAAmB,CAACC,YAAY,CAACC,QAAQ,CAACd,gBAAgB,CAACU,OAAO,CAACK,OAAO,EAAE,CAAC,EAAE;IACxGP,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEC,gBAAgB,CAAE,yBAAwBO,IAAI,CAACC,SAAS,CAACL,mBAAmB,CAAE,IAAG,CAAC;EAChG;AACF,CAAC;AAED,OAAO,MAAMM,oBAAoB,GAAIC,gBAAuC,IAAK;EAC/E,OAAOA,gBAAgB,CAACC,IAAI,CAACC,eAAe,CAACP,QAAQ,CAAChB,aAAa,CAACwB,IAAI,CAAC,GAAGxB,aAAa,CAACwB,IAAI,GAAGxB,aAAa,CAACyB,IAAI;AACrH,CAAC"}
|
|
@@ -7,6 +7,7 @@ import { PresentationMode } from '../../scripts/html/bodyHtml';
|
|
|
7
7
|
import { WebComponent, WebComponentType } from '../../webComponent/WebComponent';
|
|
8
8
|
import { getActivityParams, getActivityScript, injectRefreshEventIfNeeded } from './UNActivityComponent.utils';
|
|
9
9
|
import EventBus from '../../helpers/EventBus';
|
|
10
|
+
import { RESPONSE_KEYS } from '../../messages/webMessages/onLoadMessage';
|
|
10
11
|
const DEFAULT_HEIGHT = Dimensions.get('window').height * 0.5;
|
|
11
12
|
export const UNActivityComponent = props => {
|
|
12
13
|
const webRef = useRef(null);
|
|
@@ -18,6 +19,28 @@ export const UNActivityComponent = props => {
|
|
|
18
19
|
busEventKey: UnitMessage.UNIT_REQUEST_REFRESH,
|
|
19
20
|
action: requestRefresh
|
|
20
21
|
});
|
|
22
|
+
const handleUnitOnLoad = response => {
|
|
23
|
+
if (!props.onLoad) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (RESPONSE_KEYS.errors in response) {
|
|
27
|
+
props.onLoad(response);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (RESPONSE_KEYS.authorization in response && RESPONSE_KEYS.transactions in response) {
|
|
31
|
+
// ActivityOnLoadResponse;
|
|
32
|
+
const activityOnLoad = {
|
|
33
|
+
data: {
|
|
34
|
+
[RESPONSE_KEYS.authorization]: response[RESPONSE_KEYS.authorization].data,
|
|
35
|
+
[RESPONSE_KEYS.transactions]: response[RESPONSE_KEYS.transactions].data
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
props.onLoad(activityOnLoad);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
console.error('On Load Error: unexpected response type');
|
|
42
|
+
return;
|
|
43
|
+
};
|
|
21
44
|
const handleWebViewMessage = message => {
|
|
22
45
|
switch (message.type) {
|
|
23
46
|
case UnitMessage.UNIT_REQUEST_RENDERING:
|
|
@@ -31,7 +54,7 @@ export const UNActivityComponent = props => {
|
|
|
31
54
|
break;
|
|
32
55
|
}
|
|
33
56
|
case UnitMessage.UNIT_ON_LOAD:
|
|
34
|
-
|
|
57
|
+
handleUnitOnLoad(message.details);
|
|
35
58
|
break;
|
|
36
59
|
case PageMessage.PAGE_HEIGHT:
|
|
37
60
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useRef","useState","Dimensions","View","UnitMessage","useListenerToBus","PageMessage","PresentationMode","WebComponent","WebComponentType","getActivityParams","getActivityScript","injectRefreshEventIfNeeded","EventBus","DEFAULT_HEIGHT","get","height","UNActivityComponent","props","webRef","defaultHeight","setDefaultHeight","requestRefresh","data","current","busEventKey","UNIT_REQUEST_REFRESH","action","handleWebViewMessage","message","type","UNIT_REQUEST_RENDERING","event","componentName","activity","componentResourceId","accountId","requestRenderingEvent","details","Instance","UNIT_ON_LOAD","
|
|
1
|
+
{"version":3,"names":["React","useRef","useState","Dimensions","View","UnitMessage","useListenerToBus","PageMessage","PresentationMode","WebComponent","WebComponentType","getActivityParams","getActivityScript","injectRefreshEventIfNeeded","EventBus","RESPONSE_KEYS","DEFAULT_HEIGHT","get","height","UNActivityComponent","props","webRef","defaultHeight","setDefaultHeight","requestRefresh","data","current","busEventKey","UNIT_REQUEST_REFRESH","action","handleUnitOnLoad","response","onLoad","errors","authorization","transactions","activityOnLoad","console","error","handleWebViewMessage","message","type","UNIT_REQUEST_RENDERING","event","componentName","activity","componentResourceId","accountId","requestRenderingEvent","details","Instance","UNIT_ON_LOAD","PAGE_HEIGHT","currentHeight","renderActivityWebView","createElement","ref","presentationMode","Inherit","params","onMessage","nestedScrollEnabled","theme","script","style"],"sources":["UNActivityComponent.tsx"],"sourcesContent":["import React, { useRef, useState } from 'react';\nimport { Dimensions, View } from 'react-native';\nimport { RequestRefreshEvent, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport type { UNError, UNOnLoadResponse, UNOnLoadResponseData } from '../../sharedTypes';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { getActivityParams, getActivityScript, injectRefreshEventIfNeeded } from './UNActivityComponent.utils';\nimport type WebView from 'react-native-webview';\nimport type { BottomSheetSlotData } from '../UNBottomSheetComponent/UNBottomSheetComponent';\nimport EventBus from '../../helpers/EventBus';\nimport type { UNActivityOnLoadData } from '../../sharedTypes/activity.types';\nimport { RESPONSE_KEYS, UnitOnLoadResponseEvent } from '../../messages/webMessages/onLoadMessage';\n\nconst DEFAULT_HEIGHT = Dimensions.get('window').height * 0.5;\nexport interface UNActivityComponentProps {\n accountId: string;\n customerToken: string;\n theme?: string;\n onLoad?: (response: UNOnLoadResponse<UNActivityOnLoadData>) => void;\n queryFilter?: string\n}\n\nexport const UNActivityComponent = (props: UNActivityComponentProps) => {\n const webRef = useRef<WebView>(null);\n const [defaultHeight, setDefaultHeight] = useState<number>();\n\n const requestRefresh = (data: RequestRefreshEvent) => {\n injectRefreshEventIfNeeded(webRef.current, data);\n };\n\n useListenerToBus({ busEventKey: UnitMessage.UNIT_REQUEST_REFRESH, action: requestRefresh });\n\n const handleUnitOnLoad = (response: UnitOnLoadResponseEvent) => {\n if (!props.onLoad) {\n return;\n }\n\n if (RESPONSE_KEYS.errors in response) {\n props.onLoad(response as UNError);\n return;\n }\n\n if (RESPONSE_KEYS.authorization in response && RESPONSE_KEYS.transactions in response) {\n // ActivityOnLoadResponse;\n const activityOnLoad: UNOnLoadResponseData<UNActivityOnLoadData> = {\n data: {\n [RESPONSE_KEYS.authorization]: response[RESPONSE_KEYS.authorization].data,\n [RESPONSE_KEYS.transactions]: response[RESPONSE_KEYS.transactions].data\n }\n };\n props.onLoad(activityOnLoad);\n return;\n }\n\n console.error('On Load Error: unexpected response type');\n return;\n };\n\n const handleWebViewMessage = (message: WebViewMessage) => {\n switch (message.type) {\n case UnitMessage.UNIT_REQUEST_RENDERING: {\n const event: BottomSheetSlotData = {\n componentName: WebComponentType.activity,\n componentResourceId: props.accountId,\n requestRenderingEvent: message.details as RequestRenderingEvent\n };\n EventBus.Instance.event(UnitMessage.UNIT_REQUEST_RENDERING, event);\n break;\n }\n case UnitMessage.UNIT_ON_LOAD:\n handleUnitOnLoad(message.details as UnitOnLoadResponseEvent);\n break;\n case PageMessage.PAGE_HEIGHT: {\n const currentHeight = (message.details as HeightEvent).height;\n currentHeight === 0 && setDefaultHeight(DEFAULT_HEIGHT);\n break;\n }\n }\n };\n\n const renderActivityWebView = () => {\n return (\n <WebComponent\n ref={webRef}\n type={WebComponentType.activity}\n presentationMode={PresentationMode.Inherit}\n params={getActivityParams(props)}\n onMessage={(message: WebViewMessage) => handleWebViewMessage(message)}\n nestedScrollEnabled={true}\n theme={props.theme}\n script={getActivityScript()}\n />\n );\n };\n\n if (!defaultHeight) {\n return renderActivityWebView();\n }\n\n return (\n <View style={{ height: defaultHeight }}>\n {renderActivityWebView()}\n </View>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { WebComponentType } from './../../webComponent/WebComponent';
|
|
2
2
|
import { DISPATCH_REQUEST_REFRESH } from './../../scripts/html/bodyScript';
|
|
3
3
|
export const getActivityParams = props => {
|
|
4
|
+
const queryFilterParam = props.queryFilter ? `query-filter="${props.queryFilter}"` : '';
|
|
4
5
|
return `
|
|
5
6
|
account-id="${props.accountId}"
|
|
6
7
|
customer-token="${props.customerToken}"
|
|
8
|
+
${queryFilterParam}
|
|
7
9
|
style="height: 100%"
|
|
8
10
|
`;
|
|
9
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WebComponentType","DISPATCH_REQUEST_REFRESH","getActivityParams","props","accountId","customerToken","getActivityScript","injectRefreshEventIfNeeded","currentWeb","requestRefreshEvent","dependencies","includes","activity","valueOf","injectJavaScript","JSON","stringify"],"sources":["UNActivityComponent.utils.ts"],"sourcesContent":["import { WebComponentType } from './../../webComponent/WebComponent';\nimport type { RequestRefreshEvent } from './../../messages/webMessages/unitMessages';\nimport type { WebView } from 'react-native-webview';\nimport { DISPATCH_REQUEST_REFRESH } from './../../scripts/html/bodyScript';\nimport type { UNActivityComponentProps } from './UNActivityComponent';\n\nexport const getActivityParams = (props: UNActivityComponentProps) => {\n return `\n account-id=\"${props.accountId}\"\n customer-token=\"${props.customerToken}\"\n style=\"height: 100%\"\n `;\n};\n\nexport const getActivityScript = () => {\n return DISPATCH_REQUEST_REFRESH;\n};\n\nexport const injectRefreshEventIfNeeded = (currentWeb: WebView | null, requestRefreshEvent: RequestRefreshEvent | null) => {\n if (requestRefreshEvent && requestRefreshEvent.dependencies.includes(WebComponentType.activity.valueOf())) {\n currentWeb?.injectJavaScript(`dispatchRefreshEvent('${JSON.stringify(requestRefreshEvent)}')`);\n }\n};\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,mCAAmC;AAGpE,SAASC,wBAAwB,QAAQ,iCAAiC;AAG1E,OAAO,MAAMC,iBAAiB,GAAIC,KAA+B,IAAK;EACpE,OAAQ;AACV,
|
|
1
|
+
{"version":3,"names":["WebComponentType","DISPATCH_REQUEST_REFRESH","getActivityParams","props","queryFilterParam","queryFilter","accountId","customerToken","getActivityScript","injectRefreshEventIfNeeded","currentWeb","requestRefreshEvent","dependencies","includes","activity","valueOf","injectJavaScript","JSON","stringify"],"sources":["UNActivityComponent.utils.ts"],"sourcesContent":["import { WebComponentType } from './../../webComponent/WebComponent';\nimport type { RequestRefreshEvent } from './../../messages/webMessages/unitMessages';\nimport type { WebView } from 'react-native-webview';\nimport { DISPATCH_REQUEST_REFRESH } from './../../scripts/html/bodyScript';\nimport type { UNActivityComponentProps } from './UNActivityComponent';\n\nexport const getActivityParams = (props: UNActivityComponentProps) => {\n const queryFilterParam = props.queryFilter ? `query-filter=\"${props.queryFilter}\"` : '';\n return `\n account-id=\"${props.accountId}\"\n customer-token=\"${props.customerToken}\"\n ${queryFilterParam}\n style=\"height: 100%\"\n `;\n};\n\nexport const getActivityScript = () => {\n return DISPATCH_REQUEST_REFRESH;\n};\n\nexport const injectRefreshEventIfNeeded = (currentWeb: WebView | null, requestRefreshEvent: RequestRefreshEvent | null) => {\n if (requestRefreshEvent && requestRefreshEvent.dependencies.includes(WebComponentType.activity.valueOf())) {\n currentWeb?.injectJavaScript(`dispatchRefreshEvent('${JSON.stringify(requestRefreshEvent)}')`);\n }\n};\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,mCAAmC;AAGpE,SAASC,wBAAwB,QAAQ,iCAAiC;AAG1E,OAAO,MAAMC,iBAAiB,GAAIC,KAA+B,IAAK;EACpE,MAAMC,gBAAgB,GAAGD,KAAK,CAACE,WAAW,GAAI,iBAAgBF,KAAK,CAACE,WAAY,GAAE,GAAG,EAAE;EACvF,OAAQ;AACV,kBAAkBF,KAAK,CAACG,SAAU;AAClC,sBAAsBH,KAAK,CAACI,aAAc;AAC1C,MAAMH,gBAAiB;AACvB;AACA,GAAG;AACH,CAAC;AAED,OAAO,MAAMI,iBAAiB,GAAGA,CAAA,KAAM;EACrC,OAAOP,wBAAwB;AACjC,CAAC;AAED,OAAO,MAAMQ,0BAA0B,GAAGA,CAACC,UAA0B,EAAEC,mBAA+C,KAAK;EACzH,IAAIA,mBAAmB,IAAIA,mBAAmB,CAACC,YAAY,CAACC,QAAQ,CAACb,gBAAgB,CAACc,QAAQ,CAACC,OAAO,EAAE,CAAC,EAAE;IACzGL,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEM,gBAAgB,CAAE,yBAAwBC,IAAI,CAACC,SAAS,CAACP,mBAAmB,CAAE,IAAG,CAAC;EAChG;AACF,CAAC"}
|
|
@@ -6,9 +6,26 @@ import { PageMessage } from '../../messages/webMessages/pageMessage';
|
|
|
6
6
|
import { View } from 'react-native';
|
|
7
7
|
import { UnitMessage } from '../../messages/webMessages/unitMessages';
|
|
8
8
|
import { PaymentMessage } from '../../messages/webMessages/paymentsMessage';
|
|
9
|
+
import { RESPONSE_KEYS } from '../../messages/webMessages/onLoadMessage';
|
|
9
10
|
export const UNBookPaymentComponent = props => {
|
|
10
11
|
const [height, setHeight] = useState(0);
|
|
11
12
|
const [presentationMode, setPresentationMode] = useState(PresentationMode.Inherit);
|
|
13
|
+
const handleUnitOnLoad = response => {
|
|
14
|
+
if (!props.onLoad) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (RESPONSE_KEYS.errors in response) {
|
|
18
|
+
props.onLoad(response);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (RESPONSE_KEYS.account in response) {
|
|
22
|
+
// AccountOnLoadResponse;
|
|
23
|
+
props.onLoad(response[RESPONSE_KEYS.account]);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
console.error('On Load Error: unexpected response type');
|
|
27
|
+
return;
|
|
28
|
+
};
|
|
12
29
|
const handleWebViewMessage = message => {
|
|
13
30
|
if (!message || !message.details) return;
|
|
14
31
|
switch (message.type) {
|
|
@@ -16,7 +33,7 @@ export const UNBookPaymentComponent = props => {
|
|
|
16
33
|
props.onPaymentCreated && props.onPaymentCreated(message.details.data);
|
|
17
34
|
break;
|
|
18
35
|
case UnitMessage.UNIT_ON_LOAD:
|
|
19
|
-
|
|
36
|
+
handleUnitOnLoad(message.details);
|
|
20
37
|
break;
|
|
21
38
|
case PageMessage.PAGE_HEIGHT:
|
|
22
39
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","WebComponent","WebComponentType","PresentationMode","getBookPaymentParams","getBookPaymentScript","PageMessage","View","UnitMessage","PaymentMessage","UNBookPaymentComponent","props","height","setHeight","presentationMode","setPresentationMode","Inherit","handleWebViewMessage","message","details","type","PAYMENT_CREATED","onPaymentCreated","data","UNIT_ON_LOAD","
|
|
1
|
+
{"version":3,"names":["React","useState","WebComponent","WebComponentType","PresentationMode","getBookPaymentParams","getBookPaymentScript","PageMessage","View","UnitMessage","PaymentMessage","RESPONSE_KEYS","UNBookPaymentComponent","props","height","setHeight","presentationMode","setPresentationMode","Inherit","handleUnitOnLoad","response","onLoad","errors","account","console","error","handleWebViewMessage","message","details","type","PAYMENT_CREATED","onPaymentCreated","data","UNIT_ON_LOAD","PAGE_HEIGHT","currentHeight","Default","renderBookPaymentWebView","createElement","bookPayment","params","script","onMessage","isScrollable","theme","style"],"sources":["UNBookPaymentComponent.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport { getBookPaymentParams, getBookPaymentScript } from './UNBookPaymentComponent.utils';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport type { UNOnLoadResponse, UNBookPaymentData, UNError, UNAccountData, UNOnLoadResponseData } from '../../sharedTypes';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { View } from 'react-native';\nimport { UnitMessage } from '../../messages/webMessages/unitMessages';\nimport { PaymentMessage } from '../../messages/webMessages/paymentsMessage';\nimport type { BookPaymentEvent } from '../../messages/webMessages/bookPaymentMessage';\nimport { RESPONSE_KEYS, UnitOnLoadResponseEvent } from '../../messages/webMessages/onLoadMessage';\n\nexport interface UNBookPaymentComponentProps {\n accountId: string;\n customerToken: string;\n isSameCustomer: boolean;\n counterPartyAccountId: string;\n counterPartyName: string;\n theme?: string;\n onPaymentCreated?: (data: UNBookPaymentData) => void;\n onLoad?: (response: UNOnLoadResponse<UNAccountData>) => void;\n}\n\nexport const UNBookPaymentComponent = (props: UNBookPaymentComponentProps) => {\n const [height, setHeight] = useState<number>(0);\n const [presentationMode, setPresentationMode] = useState<PresentationMode>(PresentationMode.Inherit);\n\n const handleUnitOnLoad = (response: UnitOnLoadResponseEvent) => {\n if (!props.onLoad) {\n return;\n }\n\n if (RESPONSE_KEYS.errors in response) {\n props.onLoad(response as UNError);\n return;\n }\n\n if (RESPONSE_KEYS.account in response) {\n // AccountOnLoadResponse;\n props.onLoad(response[RESPONSE_KEYS.account] as UNOnLoadResponseData<UNAccountData>);\n return;\n }\n\n console.error('On Load Error: unexpected response type');\n return;\n };\n const handleWebViewMessage = (message: WebViewMessage) => {\n if (!message || !message.details) return;\n\n switch (message.type) {\n case PaymentMessage.PAYMENT_CREATED:\n props.onPaymentCreated && props.onPaymentCreated((message.details as BookPaymentEvent).data);\n break;\n case UnitMessage.UNIT_ON_LOAD:\n handleUnitOnLoad(message.details as UnitOnLoadResponseEvent);\n break;\n case PageMessage.PAGE_HEIGHT: {\n const currentHeight = (message.details as HeightEvent).height;\n setHeight(currentHeight);\n if (presentationMode === PresentationMode.Inherit && currentHeight === 0) {\n setPresentationMode(PresentationMode.Default);\n }\n break;\n }\n }\n };\n\n const renderBookPaymentWebView = () => {\n return (\n <WebComponent\n type={WebComponentType.bookPayment}\n presentationMode={presentationMode}\n params={getBookPaymentParams(props)}\n script={getBookPaymentScript()}\n onMessage={(message: WebViewMessage) => handleWebViewMessage(message)}\n isScrollable={false}\n theme={props.theme}\n />\n );\n };\n\n if (presentationMode === PresentationMode.Inherit) {\n return renderBookPaymentWebView();\n }\n\n return (\n <View style={{ height: height }}>\n {renderBookPaymentWebView()}\n </View>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,YAAY,EAAEC,gBAAgB,QAAQ,iCAAiC;AAChF,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,SAASC,oBAAoB,EAAEC,oBAAoB,QAAQ,gCAAgC;AAG3F,SAAsBC,WAAW,QAAQ,wCAAwC;AACjF,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,WAAW,QAAQ,yCAAyC;AACrE,SAASC,cAAc,QAAQ,4CAA4C;AAE3E,SAASC,aAAa,QAAiC,0CAA0C;AAajG,OAAO,MAAMC,sBAAsB,GAAIC,KAAkC,IAAK;EAC5E,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGd,QAAQ,CAAS,CAAC,CAAC;EAC/C,MAAM,CAACe,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGhB,QAAQ,CAAmBG,gBAAgB,CAACc,OAAO,CAAC;EAEpG,MAAMC,gBAAgB,GAAIC,QAAiC,IAAK;IAC9D,IAAI,CAACP,KAAK,CAACQ,MAAM,EAAE;MACjB;IACF;IAEA,IAAIV,aAAa,CAACW,MAAM,IAAIF,QAAQ,EAAE;MACpCP,KAAK,CAACQ,MAAM,CAACD,QAAQ,CAAY;MACjC;IACF;IAEA,IAAIT,aAAa,CAACY,OAAO,IAAIH,QAAQ,EAAE;MACrC;MACAP,KAAK,CAACQ,MAAM,CAACD,QAAQ,CAACT,aAAa,CAACY,OAAO,CAAC,CAAwC;MACpF;IACF;IAEAC,OAAO,CAACC,KAAK,CAAC,yCAAyC,CAAC;IACxD;EACF,CAAC;EACD,MAAMC,oBAAoB,GAAIC,OAAuB,IAAK;IACxD,IAAI,CAACA,OAAO,IAAI,CAACA,OAAO,CAACC,OAAO,EAAE;IAElC,QAAQD,OAAO,CAACE,IAAI;MAClB,KAAKnB,cAAc,CAACoB,eAAe;QACjCjB,KAAK,CAACkB,gBAAgB,IAAIlB,KAAK,CAACkB,gBAAgB,CAAEJ,OAAO,CAACC,OAAO,CAAsBI,IAAI,CAAC;QAC5F;MACF,KAAKvB,WAAW,CAACwB,YAAY;QAC3Bd,gBAAgB,CAACQ,OAAO,CAACC,OAAO,CAA4B;QAC5D;MACF,KAAKrB,WAAW,CAAC2B,WAAW;QAAE;UAC5B,MAAMC,aAAa,GAAIR,OAAO,CAACC,OAAO,CAAiBd,MAAM;UAC7DC,SAAS,CAACoB,aAAa,CAAC;UACxB,IAAInB,gBAAgB,KAAKZ,gBAAgB,CAACc,OAAO,IAAIiB,aAAa,KAAK,CAAC,EAAE;YACxElB,mBAAmB,CAACb,gBAAgB,CAACgC,OAAO,CAAC;UAC/C;UACA;QACF;IAAC;EAEL,CAAC;EAED,MAAMC,wBAAwB,GAAGA,CAAA,KAAM;IACrC,oBACErC,KAAA,CAAAsC,aAAA,CAACpC,YAAY;MACX2B,IAAI,EAAE1B,gBAAgB,CAACoC,WAAY;MACnCvB,gBAAgB,EAAEA,gBAAiB;MACnCwB,MAAM,EAAEnC,oBAAoB,CAACQ,KAAK,CAAE;MACpC4B,MAAM,EAAEnC,oBAAoB,EAAG;MAC/BoC,SAAS,EAAGf,OAAuB,IAAKD,oBAAoB,CAACC,OAAO,CAAE;MACtEgB,YAAY,EAAE,KAAM;MACpBC,KAAK,EAAE/B,KAAK,CAAC+B;IAAM,EACnB;EAEN,CAAC;EAED,IAAI5B,gBAAgB,KAAKZ,gBAAgB,CAACc,OAAO,EAAE;IACjD,OAAOmB,wBAAwB,EAAE;EACnC;EAEA,oBACErC,KAAA,CAAAsC,aAAA,CAAC9B,IAAI;IAACqC,KAAK,EAAE;MAAE/B,MAAM,EAAEA;IAAO;EAAE,GAC7BuB,wBAAwB,EAAE,CACtB;AAEX,CAAC"}
|
|
@@ -135,6 +135,9 @@ export const UNBottomSheetComponent = () => {
|
|
|
135
135
|
}
|
|
136
136
|
break;
|
|
137
137
|
}
|
|
138
|
+
case CardMessage.CARD_ACTIVATED:
|
|
139
|
+
EventBus.Instance.event(CardMessage.CARD_ACTIVATED, message.details.card);
|
|
140
|
+
break;
|
|
138
141
|
case CardMessage.CARD_STATUS_CHANGED:
|
|
139
142
|
EventBus.Instance.event(CardMessage.CARD_STATUS_CHANGED, message.details.card);
|
|
140
143
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","useState","WebComponent","WebComponentType","Dimensions","Linking","View","BottomSheet","EventBus","PageMessage","UnitMessage","CardMessage","useListenerToBus","getBottomSheetScript","handleHtmlFullHeight","renderingBottomSheetRequest","resetHtml","getStylesObject","PresentationMode","useAppStateListener","UNAddToWalletBottomSheetItem","getAccountActionType","AccountAction","AccountMessage","ScrollState","CustomDialog","UNBottomSheetComponent","isBottomSheetActive","setIsBottomSheetActive","height","setHeight","bottomSheetSlotData","setBottomSheetSlotData","requestRenderingEvent","setRequestRenderingEvent","scrollState","setScrollState","onTop","waitForLoadingNewComponent","setWaitForLoadingNewComponent","newHeightMessage","setNewHeightMessage","customDialog","setCustomDialog","isAppActive","styles","webRef","handleRequestRendering","data","handleCloseFlow","current","undefined","setNewHeight","busEventKey","UNIT_REQUEST_RENDERING","action","UNIT_REQUEST_CLOSE_FLOW","message","componentName","account","accountActionType","List","unScrollable","card","addToWallet","nativePlace","bottomSheetNewHeight","get","details","onWebMessage","type","PAGE_HEIGHT","_requestRenderingEven","requestRendering","nativeComponent","includes","setTimeout","CARD_STATUS_CHANGED","Instance","event","UNIT_ACCOUNT_CHANGED","UNIT_REQUEST_OPEN_LINK","href","openURL","onScrollWebView","currY","nativeEvent","contentOffset","y","onlyBottomSheet","onlyWebView","handleWebViewScroll","renderBottomSheetItem","createElement","renderingRequest","cardId","componentResourceId","ref","slot","presentationMode","CoverInjectedHeight","script","onMessage","isScrollable","handleScroll","Fragment","pointerEvents","style","container","isOpen","onClose","onOpen","shouldEnableBottomSheetScroll"],"sources":["UNBottomSheetComponent.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef, useState } from 'react';\nimport type WebView from 'react-native-webview';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { Dimensions, Linking, View } from 'react-native';\nimport BottomSheet from '../../helpers/BottomSheet/BottomSheet';\nimport EventBus from '../../helpers/EventBus';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { RequestOpenLinkEvent, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport { CardMessage, CardStatusChangedEvent } from '../../messages/webMessages/cardMessage';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport {\n getBottomSheetScript,\n handleHtmlFullHeight,\n renderingBottomSheetRequest,\n resetHtml,\n} from './UNBottomSheetComponent.utils';\nimport { getStylesObject } from './UNBottomSheetComponent.styles';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\nimport { UNAddToWalletBottomSheetItem } from './components/UNAddToWalletBottomSheetItem';\nimport { getAccountActionType } from '../UNAccountComponent/UNAccountComponent.utils';\nimport { AccountAction } from '../UNAccountComponent/UNAccountComponent';\nimport type { AccountChangedEvent } from '../../messages/webMessages/accountMessage';\nimport { AccountMessage } from '../../messages/webMessages/accountMessage';\n\nexport enum ScrollState {\n /*\n Web View ScrollState -\n - Initialization:\n 'onTop': for a scrollable webView.\n (onTop means that the webview is onTop of the BottomSheet and we need to recognize the scroll direction).\n Then, it recognize the scroll direction and update the scroll state as needed.\n\n -'unScrollable': for an unscrollable webView\n */\n onTop = 'onTop',\n unScrollable = 'unScrollable',\n\n /*\n These are only for maintain the bottom sheet scrollState (not an initialize scroll state).\n It relates to the current scroll state.\n onlyWebView means that now the scroll is on webview (only).\n onlyBottomSheet means that now the scroll is on bottomSheet (only).\n */\n onlyWebView = 'webViewScroll',\n onlyBottomSheet = 'onlyBottomSheet',\n}\n\nexport type BottomSheetSlotData = {\n // The data that rendered by the web view\n componentName?: WebComponentType,\n componentResourceId?: string,\n requestRenderingEvent: RequestRenderingEvent\n}\n\nenum CustomDialog {\n addToWallet\n}\n\nexport const UNBottomSheetComponent = () => {\n const [isBottomSheetActive, setIsBottomSheetActive] = useState(false);\n const [height, setHeight] = useState(0);\n\n const [bottomSheetSlotData, setBottomSheetSlotData] = useState<BottomSheetSlotData>();\n const [requestRenderingEvent, setRequestRenderingEvent] = useState<RequestRenderingEvent>();\n const [scrollState, setScrollState] = useState<ScrollState>(ScrollState.onTop);\n\n const [waitForLoadingNewComponent, setWaitForLoadingNewComponent] = useState(false);\n const [newHeightMessage, setNewHeightMessage] = useState<WebViewMessage | null>(null);\n\n const [customDialog, setCustomDialog] = useState<CustomDialog | null>(null);\n\n const isAppActive = useAppStateListener();\n\n const styles = getStylesObject();\n\n const webRef = useRef<WebView>(null);\n\n const handleRequestRendering = (data: BottomSheetSlotData) => {\n setBottomSheetSlotData(data);\n setIsBottomSheetActive(true);\n setRequestRenderingEvent(data.requestRenderingEvent);\n };\n\n const handleCloseFlow = () => {\n setIsBottomSheetActive(false);\n };\n\n useEffect(() => {\n setRequestRenderingEvent(bottomSheetSlotData?.requestRenderingEvent);\n }, [bottomSheetSlotData]);\n\n useEffect(() => {\n if (!webRef.current) return;\n if (requestRenderingEvent) {\n renderingBottomSheetRequest(webRef.current, requestRenderingEvent);\n }\n }, [webRef.current, requestRenderingEvent]);\n\n useEffect(() => {\n if (!isBottomSheetActive) {\n webRef.current && resetHtml(webRef.current);\n setHeight(0);\n setRequestRenderingEvent(undefined);\n setScrollState(ScrollState.onTop);\n setCustomDialog(null);\n }\n }, [isBottomSheetActive]);\n\n useEffect(() => {\n if (!waitForLoadingNewComponent && newHeightMessage) {\n setWaitForLoadingNewComponent(false);\n setNewHeight(newHeightMessage);\n }\n }, [waitForLoadingNewComponent, newHeightMessage]);\n\n useListenerToBus({ busEventKey: UnitMessage.UNIT_REQUEST_RENDERING, action: handleRequestRendering });\n useListenerToBus({ busEventKey: UnitMessage.UNIT_REQUEST_CLOSE_FLOW, action: handleCloseFlow });\n\n const setNewHeight = (message: WebViewMessage) => {\n if (!requestRenderingEvent) return;\n switch (bottomSheetSlotData?.componentName) {\n case WebComponentType.account: {\n const accountActionType = getAccountActionType(requestRenderingEvent);\n setScrollState(\n accountActionType === AccountAction.List ? ScrollState.onTop : ScrollState.unScrollable\n );\n break;\n }\n case WebComponentType.card: {\n if (customDialog === CustomDialog.addToWallet) {\n setScrollState(ScrollState.unScrollable);\n } else {\n setScrollState(ScrollState.onTop);\n }\n break;\n }\n default: {\n const nativePlace = requestRenderingEvent?.data.nativePlace;\n if (nativePlace == 'overFullScreen') {\n setScrollState(ScrollState.onTop);\n } else {\n setScrollState(ScrollState.unScrollable);\n }\n }\n }\n const nativePlace = requestRenderingEvent?.data.nativePlace;\n if (nativePlace == 'overFullScreen') {\n const bottomSheetNewHeight = handleHtmlFullHeight(webRef.current, Dimensions.get('window').height);\n setHeight(bottomSheetNewHeight);\n } else {\n setHeight((message.details as HeightEvent).height);\n }\n };\n\n const onWebMessage = (message: WebViewMessage) => {\n switch (message.type) {\n case PageMessage.PAGE_HEIGHT:\n requestRenderingEvent && setNewHeightMessage(message);\n break;\n case UnitMessage.UNIT_REQUEST_RENDERING: {\n const requestRendering = (message.details as RequestRenderingEvent);\n if (requestRendering.data.nativeComponent != requestRenderingEvent?.data?.nativeComponent) {\n if (requestRendering.data.nativeComponent.includes('action=AddToWallet')) {\n setCustomDialog(CustomDialog.addToWallet);\n }\n\n setHeight(0);\n setRequestRenderingEvent(requestRendering);\n setWaitForLoadingNewComponent(true);\n setTimeout(() => setWaitForLoadingNewComponent(false), 400);\n }\n break;\n }\n case CardMessage.CARD_STATUS_CHANGED:\n EventBus.Instance.event(CardMessage.CARD_STATUS_CHANGED, (message.details as CardStatusChangedEvent).card);\n break;\n case AccountMessage.UNIT_ACCOUNT_CHANGED:\n EventBus.Instance.event(AccountMessage.UNIT_ACCOUNT_CHANGED, (message.details as AccountChangedEvent).account);\n break;\n case UnitMessage.UNIT_REQUEST_CLOSE_FLOW:\n handleCloseFlow();\n break;\n case UnitMessage.UNIT_REQUEST_OPEN_LINK:\n // eslint-disable-next-line no-case-declarations\n const { href } = (message.details as RequestOpenLinkEvent);\n Linking.openURL(href);\n break;\n }\n };\n\n const onScrollWebView = (event: any) => {\n if (scrollState === ScrollState.unScrollable) return;\n\n const currY = event.nativeEvent.contentOffset.y;\n\n if (ScrollState.onTop && currY < 5) {\n setScrollState(ScrollState.onlyBottomSheet);\n }\n\n if (scrollState !== ScrollState.onlyWebView && scrollState === ScrollState.onTop && currY > 5) {\n setScrollState(ScrollState.onlyWebView);\n }\n };\n\n const handleWebViewScroll = () => {\n if (scrollState === ScrollState.unScrollable) return;\n setScrollState(ScrollState.onlyWebView);\n };\n\n const renderBottomSheetItem = () => {\n switch (customDialog) {\n case CustomDialog.addToWallet:\n return <UNAddToWalletBottomSheetItem renderingRequest={requestRenderingEvent} cardId={bottomSheetSlotData?.componentResourceId} />;\n default:\n return (\n <WebComponent\n ref={webRef}\n type={WebComponentType.slot}\n presentationMode={PresentationMode.CoverInjectedHeight}\n script={getBottomSheetScript()}\n onMessage={onWebMessage}\n isScrollable={scrollState === ScrollState.onlyWebView || scrollState === ScrollState.onTop}\n handleScroll={onScrollWebView}\n />\n );\n }\n };\n\n return (\n <>\n <View\n pointerEvents={isBottomSheetActive ? undefined : 'none'}\n style={styles.container}\n >\n <BottomSheet\n isOpen={isBottomSheetActive}\n height={height}\n onClose={() => setIsBottomSheetActive(false)}\n onOpen={() => setIsBottomSheetActive(true)}\n handleWebViewScroll={() => handleWebViewScroll()}\n shouldEnableBottomSheetScroll={scrollState !== ScrollState.onlyWebView}\n >\n {isAppActive && renderBottomSheetItem()}\n </BottomSheet >\n </View >\n </>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","WebComponent","WebComponentType","Dimensions","Linking","View","BottomSheet","EventBus","PageMessage","UnitMessage","CardMessage","useListenerToBus","getBottomSheetScript","handleHtmlFullHeight","renderingBottomSheetRequest","resetHtml","getStylesObject","PresentationMode","useAppStateListener","UNAddToWalletBottomSheetItem","getAccountActionType","AccountAction","AccountMessage","ScrollState","CustomDialog","UNBottomSheetComponent","isBottomSheetActive","setIsBottomSheetActive","height","setHeight","bottomSheetSlotData","setBottomSheetSlotData","requestRenderingEvent","setRequestRenderingEvent","scrollState","setScrollState","onTop","waitForLoadingNewComponent","setWaitForLoadingNewComponent","newHeightMessage","setNewHeightMessage","customDialog","setCustomDialog","isAppActive","styles","webRef","handleRequestRendering","data","handleCloseFlow","current","undefined","setNewHeight","busEventKey","UNIT_REQUEST_RENDERING","action","UNIT_REQUEST_CLOSE_FLOW","message","componentName","account","accountActionType","List","unScrollable","card","addToWallet","nativePlace","bottomSheetNewHeight","get","details","onWebMessage","type","PAGE_HEIGHT","_requestRenderingEven","requestRendering","nativeComponent","includes","setTimeout","CARD_ACTIVATED","Instance","event","CARD_STATUS_CHANGED","UNIT_ACCOUNT_CHANGED","UNIT_REQUEST_OPEN_LINK","href","openURL","onScrollWebView","currY","nativeEvent","contentOffset","y","onlyBottomSheet","onlyWebView","handleWebViewScroll","renderBottomSheetItem","createElement","renderingRequest","cardId","componentResourceId","ref","slot","presentationMode","CoverInjectedHeight","script","onMessage","isScrollable","handleScroll","Fragment","pointerEvents","style","container","isOpen","onClose","onOpen","shouldEnableBottomSheetScroll"],"sources":["UNBottomSheetComponent.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef, useState } from 'react';\nimport type WebView from 'react-native-webview';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { Dimensions, Linking, View } from 'react-native';\nimport BottomSheet from '../../helpers/BottomSheet/BottomSheet';\nimport EventBus from '../../helpers/EventBus';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { RequestOpenLinkEvent, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport { CardMessage, CardActivatedEvent, CardStatusChangedEvent } from '../../messages/webMessages/cardMessage';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport {\n getBottomSheetScript,\n handleHtmlFullHeight,\n renderingBottomSheetRequest,\n resetHtml,\n} from './UNBottomSheetComponent.utils';\nimport { getStylesObject } from './UNBottomSheetComponent.styles';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\nimport { UNAddToWalletBottomSheetItem } from './components/UNAddToWalletBottomSheetItem';\nimport { getAccountActionType } from '../UNAccountComponent/UNAccountComponent.utils';\nimport { AccountAction } from '../UNAccountComponent/UNAccountComponent';\nimport type { AccountChangedEvent } from '../../messages/webMessages/accountMessage';\nimport { AccountMessage } from '../../messages/webMessages/accountMessage';\n\nexport enum ScrollState {\n /*\n Web View ScrollState -\n - Initialization:\n 'onTop': for a scrollable webView.\n (onTop means that the webview is onTop of the BottomSheet and we need to recognize the scroll direction).\n Then, it recognize the scroll direction and update the scroll state as needed.\n\n -'unScrollable': for an unscrollable webView\n */\n onTop = 'onTop',\n unScrollable = 'unScrollable',\n\n /*\n These are only for maintain the bottom sheet scrollState (not an initialize scroll state).\n It relates to the current scroll state.\n onlyWebView means that now the scroll is on webview (only).\n onlyBottomSheet means that now the scroll is on bottomSheet (only).\n */\n onlyWebView = 'webViewScroll',\n onlyBottomSheet = 'onlyBottomSheet',\n}\n\nexport type BottomSheetSlotData = {\n // The data that rendered by the web view\n componentName?: WebComponentType,\n componentResourceId?: string,\n requestRenderingEvent: RequestRenderingEvent\n}\n\nenum CustomDialog {\n addToWallet\n}\n\nexport const UNBottomSheetComponent = () => {\n const [isBottomSheetActive, setIsBottomSheetActive] = useState(false);\n const [height, setHeight] = useState(0);\n\n const [bottomSheetSlotData, setBottomSheetSlotData] = useState<BottomSheetSlotData>();\n const [requestRenderingEvent, setRequestRenderingEvent] = useState<RequestRenderingEvent>();\n const [scrollState, setScrollState] = useState<ScrollState>(ScrollState.onTop);\n\n const [waitForLoadingNewComponent, setWaitForLoadingNewComponent] = useState(false);\n const [newHeightMessage, setNewHeightMessage] = useState<WebViewMessage | null>(null);\n\n const [customDialog, setCustomDialog] = useState<CustomDialog | null>(null);\n\n const isAppActive = useAppStateListener();\n\n const styles = getStylesObject();\n\n const webRef = useRef<WebView>(null);\n\n const handleRequestRendering = (data: BottomSheetSlotData) => {\n setBottomSheetSlotData(data);\n setIsBottomSheetActive(true);\n setRequestRenderingEvent(data.requestRenderingEvent);\n };\n\n const handleCloseFlow = () => {\n setIsBottomSheetActive(false);\n };\n\n useEffect(() => {\n setRequestRenderingEvent(bottomSheetSlotData?.requestRenderingEvent);\n }, [bottomSheetSlotData]);\n\n useEffect(() => {\n if (!webRef.current) return;\n if (requestRenderingEvent) {\n renderingBottomSheetRequest(webRef.current, requestRenderingEvent);\n }\n }, [webRef.current, requestRenderingEvent]);\n\n useEffect(() => {\n if (!isBottomSheetActive) {\n webRef.current && resetHtml(webRef.current);\n setHeight(0);\n setRequestRenderingEvent(undefined);\n setScrollState(ScrollState.onTop);\n setCustomDialog(null);\n }\n }, [isBottomSheetActive]);\n\n useEffect(() => {\n if (!waitForLoadingNewComponent && newHeightMessage) {\n setWaitForLoadingNewComponent(false);\n setNewHeight(newHeightMessage);\n }\n }, [waitForLoadingNewComponent, newHeightMessage]);\n\n useListenerToBus({ busEventKey: UnitMessage.UNIT_REQUEST_RENDERING, action: handleRequestRendering });\n useListenerToBus({ busEventKey: UnitMessage.UNIT_REQUEST_CLOSE_FLOW, action: handleCloseFlow });\n\n const setNewHeight = (message: WebViewMessage) => {\n if (!requestRenderingEvent) return;\n switch (bottomSheetSlotData?.componentName) {\n case WebComponentType.account: {\n const accountActionType = getAccountActionType(requestRenderingEvent);\n setScrollState(\n accountActionType === AccountAction.List ? ScrollState.onTop : ScrollState.unScrollable\n );\n break;\n }\n case WebComponentType.card: {\n if (customDialog === CustomDialog.addToWallet) {\n setScrollState(ScrollState.unScrollable);\n } else {\n setScrollState(ScrollState.onTop);\n }\n break;\n }\n default: {\n const nativePlace = requestRenderingEvent?.data.nativePlace;\n if (nativePlace == 'overFullScreen') {\n setScrollState(ScrollState.onTop);\n } else {\n setScrollState(ScrollState.unScrollable);\n }\n }\n }\n const nativePlace = requestRenderingEvent?.data.nativePlace;\n if (nativePlace == 'overFullScreen') {\n const bottomSheetNewHeight = handleHtmlFullHeight(webRef.current, Dimensions.get('window').height);\n setHeight(bottomSheetNewHeight);\n } else {\n setHeight((message.details as HeightEvent).height);\n }\n };\n\n const onWebMessage = (message: WebViewMessage) => {\n switch (message.type) {\n case PageMessage.PAGE_HEIGHT:\n requestRenderingEvent && setNewHeightMessage(message);\n break;\n case UnitMessage.UNIT_REQUEST_RENDERING: {\n const requestRendering = (message.details as RequestRenderingEvent);\n if (requestRendering.data.nativeComponent != requestRenderingEvent?.data?.nativeComponent) {\n if (requestRendering.data.nativeComponent.includes('action=AddToWallet')) {\n setCustomDialog(CustomDialog.addToWallet);\n }\n\n setHeight(0);\n setRequestRenderingEvent(requestRendering);\n setWaitForLoadingNewComponent(true);\n setTimeout(() => setWaitForLoadingNewComponent(false), 400);\n }\n break;\n }\n case CardMessage.CARD_ACTIVATED:\n EventBus.Instance.event(CardMessage.CARD_ACTIVATED, (message.details as CardActivatedEvent).card);\n break;\n case CardMessage.CARD_STATUS_CHANGED:\n EventBus.Instance.event(CardMessage.CARD_STATUS_CHANGED, (message.details as CardStatusChangedEvent).card);\n break;\n case AccountMessage.UNIT_ACCOUNT_CHANGED:\n EventBus.Instance.event(AccountMessage.UNIT_ACCOUNT_CHANGED, (message.details as AccountChangedEvent).account);\n break;\n case UnitMessage.UNIT_REQUEST_CLOSE_FLOW:\n handleCloseFlow();\n break;\n case UnitMessage.UNIT_REQUEST_OPEN_LINK:\n // eslint-disable-next-line no-case-declarations\n const { href } = (message.details as RequestOpenLinkEvent);\n Linking.openURL(href);\n break;\n }\n };\n\n const onScrollWebView = (event: any) => {\n if (scrollState === ScrollState.unScrollable) return;\n\n const currY = event.nativeEvent.contentOffset.y;\n\n if (ScrollState.onTop && currY < 5) {\n setScrollState(ScrollState.onlyBottomSheet);\n }\n\n if (scrollState !== ScrollState.onlyWebView && scrollState === ScrollState.onTop && currY > 5) {\n setScrollState(ScrollState.onlyWebView);\n }\n };\n\n const handleWebViewScroll = () => {\n if (scrollState === ScrollState.unScrollable) return;\n setScrollState(ScrollState.onlyWebView);\n };\n\n const renderBottomSheetItem = () => {\n switch (customDialog) {\n case CustomDialog.addToWallet:\n return <UNAddToWalletBottomSheetItem renderingRequest={requestRenderingEvent} cardId={bottomSheetSlotData?.componentResourceId} />;\n default:\n return (\n <WebComponent\n ref={webRef}\n type={WebComponentType.slot}\n presentationMode={PresentationMode.CoverInjectedHeight}\n script={getBottomSheetScript()}\n onMessage={onWebMessage}\n isScrollable={scrollState === ScrollState.onlyWebView || scrollState === ScrollState.onTop}\n handleScroll={onScrollWebView}\n />\n );\n }\n };\n\n return (\n <>\n <View\n pointerEvents={isBottomSheetActive ? undefined : 'none'}\n style={styles.container}\n >\n <BottomSheet\n isOpen={isBottomSheetActive}\n height={height}\n onClose={() => setIsBottomSheetActive(false)}\n onOpen={() => setIsBottomSheetActive(true)}\n handleWebViewScroll={() => handleWebViewScroll()}\n shouldEnableBottomSheetScroll={scrollState !== ScrollState.onlyWebView}\n >\n {isAppActive && renderBottomSheetItem()}\n </BottomSheet >\n </View >\n </>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import React, { useRef, useState } from 'react';
|
|
1
|
+
import React, { useImperativeHandle, useRef, useState } from 'react';
|
|
2
2
|
import { Dimensions, View } from 'react-native';
|
|
3
3
|
import { PageMessage } from '../../messages/webMessages/pageMessage';
|
|
4
4
|
import { UnitMessage } from '../../messages/webMessages/unitMessages';
|
|
5
5
|
import EventBus from '../../helpers/EventBus';
|
|
6
6
|
import { WebComponent, WebComponentType } from '../../webComponent/WebComponent';
|
|
7
7
|
import { useListenerToBus } from '../../hooks/listenerToBus';
|
|
8
|
-
import { getCardParams, getCardScript, injectRefreshEventIfNeeded, launchStartCardProvisioning } from './UNCardComponent.utils';
|
|
8
|
+
import { getCardParams, getCardScript, injectRefreshEventIfNeeded, launchStartCardProvisioning, injectOpenActionsMenuScript, injectRequestCardActionScript } from './UNCardComponent.utils';
|
|
9
9
|
import { PresentationMode } from '../../scripts/html/bodyHtml';
|
|
10
10
|
import { CardMessage } from '../../messages/webMessages/cardMessage';
|
|
11
11
|
import { launchGetWallets } from './UNCardComponent.utils';
|
|
12
12
|
import { CardAddToWalletErrors, CardNativeMessage } from '../../messages/nativeMessages/cardMessage';
|
|
13
|
-
|
|
13
|
+
import { RESPONSE_KEYS } from '../../messages/webMessages/onLoadMessage';
|
|
14
|
+
export const UNCardComponent = /*#__PURE__*/React.forwardRef(function UNCardComponent(props, cardRef) {
|
|
14
15
|
const [height, setHeight] = useState(0);
|
|
15
16
|
const windowWidth = Dimensions.get('window').width;
|
|
16
17
|
const walletRef = useRef(null);
|
|
@@ -18,11 +19,24 @@ export const UNCardComponent = props => {
|
|
|
18
19
|
// TODO: walletState and checks it works. =)
|
|
19
20
|
|
|
20
21
|
const webRef = useRef(null);
|
|
22
|
+
useImperativeHandle(cardRef, () => ({
|
|
23
|
+
openActionsMenu() {
|
|
24
|
+
injectOpenActionsMenuScript(webRef.current);
|
|
25
|
+
},
|
|
26
|
+
openAction(action) {
|
|
27
|
+
injectRequestCardActionScript(webRef.current, action);
|
|
28
|
+
}
|
|
29
|
+
}));
|
|
21
30
|
const cardStatusChanged = card => {
|
|
22
31
|
if (props.onStatusChanged) {
|
|
23
32
|
props.onStatusChanged(card);
|
|
24
33
|
}
|
|
25
34
|
};
|
|
35
|
+
const cardActivated = card => {
|
|
36
|
+
if (props.onCardActivated) {
|
|
37
|
+
props.onCardActivated(card);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
26
40
|
const requestRefresh = data => {
|
|
27
41
|
injectRefreshEventIfNeeded(webRef.current, data, props.cardId);
|
|
28
42
|
};
|
|
@@ -34,6 +48,22 @@ export const UNCardComponent = props => {
|
|
|
34
48
|
if (data.cardId !== props.cardId) return;
|
|
35
49
|
getWallets();
|
|
36
50
|
};
|
|
51
|
+
const handleUnitOnLoad = response => {
|
|
52
|
+
if (!props.onLoad) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (RESPONSE_KEYS.errors in response) {
|
|
56
|
+
props.onLoad(response);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (RESPONSE_KEYS.card in response) {
|
|
60
|
+
// CardOnLoadResponse
|
|
61
|
+
props.onLoad(response[RESPONSE_KEYS.card]);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
console.error('On Load Error: unexpected response type');
|
|
65
|
+
return;
|
|
66
|
+
};
|
|
37
67
|
useListenerToBus({
|
|
38
68
|
busEventKey: UnitMessage.UNIT_REQUEST_REFRESH,
|
|
39
69
|
action: requestRefresh
|
|
@@ -42,6 +72,10 @@ export const UNCardComponent = props => {
|
|
|
42
72
|
busEventKey: CardMessage.CARD_STATUS_CHANGED,
|
|
43
73
|
action: cardStatusChanged
|
|
44
74
|
});
|
|
75
|
+
useListenerToBus({
|
|
76
|
+
busEventKey: CardMessage.CARD_ACTIVATED,
|
|
77
|
+
action: cardActivated
|
|
78
|
+
});
|
|
45
79
|
useListenerToBus({
|
|
46
80
|
busEventKey: CardNativeMessage.CARD_START_PUSH_PROVISIONING,
|
|
47
81
|
action: startPushProvisioning
|
|
@@ -67,7 +101,7 @@ export const UNCardComponent = props => {
|
|
|
67
101
|
setHeight(message.details.height);
|
|
68
102
|
break;
|
|
69
103
|
case UnitMessage.UNIT_ON_LOAD:
|
|
70
|
-
|
|
104
|
+
handleUnitOnLoad(message.details);
|
|
71
105
|
break;
|
|
72
106
|
}
|
|
73
107
|
};
|
|
@@ -110,5 +144,5 @@ export const UNCardComponent = props => {
|
|
|
110
144
|
width: windowWidth,
|
|
111
145
|
isScrollable: false
|
|
112
146
|
}));
|
|
113
|
-
};
|
|
147
|
+
});
|
|
114
148
|
//# sourceMappingURL=UNCardComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useRef","useState","Dimensions","View","PageMessage","UnitMessage","EventBus","WebComponent","WebComponentType","useListenerToBus","getCardParams","getCardScript","injectRefreshEventIfNeeded","launchStartCardProvisioning","PresentationMode","CardMessage","launchGetWallets","CardAddToWalletErrors","CardNativeMessage","UNCardComponent","props","height","setHeight","windowWidth","get","width","walletRef","webRef","cardStatusChanged","card","onStatusChanged","requestRefresh","data","current","cardId","startPushProvisioning","onAddToWalletClicked","getAddToWalletStatus","getWallets","busEventKey","UNIT_REQUEST_REFRESH","action","CARD_STATUS_CHANGED","CARD_START_PUSH_PROVISIONING","CARD_GET_ADD_TO_WALLET_STATUS","handleMessage","message","details","type","UNIT_REQUEST_RENDERING","event","componentName","componentResourceId","requestRenderingEvent","Instance","PAGE_HEIGHT","UNIT_ON_LOAD","onLoad","walletResponse","customerToken","pushProvisioningModule","walletStatus","status","CARD_UPDATE_ADD_TO_WALLET_STATUS","error","console","Error","parsedError","JSON","parse","code","closedNativeWalletScreen","log","createElement","style","ref","presentationMode","Default","params","theme","script","onMessage","isScrollable"],"sources":["UNCardComponent.tsx"],"sourcesContent":["import React, { useRef, useState } from 'react';\nimport { Dimensions, NativeModule, View } from 'react-native';\nimport type WebView from 'react-native-webview';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { RequestRefreshEvent, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport EventBus from '../../helpers/EventBus';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport { getCardParams, getCardScript, injectRefreshEventIfNeeded, launchStartCardProvisioning } from './UNCardComponent.utils';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport type { UNResponseUnitOnLoadEvent, UNCardData } from '../../sharedTypes';\nimport { CardMessage } from '../../messages/webMessages/cardMessage';\nimport { launchGetWallets } from './UNCardComponent.utils';\nimport type { NativeModules } from 'react-native';\nimport type { UNWallet } from 'src/sharedTypes/wallet.types';\nimport { CardAddToWalletErrors, UNCardAddToWalletStatusEvent, CardGetAddToWalletStatusEvent, CardNativeMessage, CardStartPushProvisioningEvent } from '../../messages/nativeMessages/cardMessage';\nimport type { BottomSheetSlotData } from '../UNBottomSheetComponent/UNBottomSheetComponent';\nexport interface UNCardComponentProps {\n // inputs\n cardId: string;\n customerToken: string;\n theme?: string;\n hideActionsMenuButton?: boolean;\n hideCardTitle?: boolean;\n hideSensitiveDataButton?: boolean;\n\n // events\n onLoad?: (response: UNResponseUnitOnLoadEvent) => void\n onStatusChanged?: (card: UNCardData) => void;\n pushProvisioningModule?: typeof NativeModules;\n}\n\nexport const UNCardComponent = (props: UNCardComponentProps) => {\n const [height, setHeight] = useState(0);\n const windowWidth = Dimensions.get('window').width;\n\n const walletRef = useRef<UNWallet | null>(null);\n // walletRef can be changed to a state. (After the change of the listener hook)\n // TODO: walletState and checks it works. =)\n\n const webRef = useRef<WebView>(null);\n\n const cardStatusChanged = (card: UNCardData) => {\n if (props.onStatusChanged) {\n props.onStatusChanged(card);\n }\n };\n\n const requestRefresh = (data: RequestRefreshEvent) => {\n injectRefreshEventIfNeeded(webRef.current, data, props.cardId);\n };\n\n const startPushProvisioning = async (data: CardStartPushProvisioningEvent) => {\n if (data.cardId !== props.cardId) return;\n onAddToWalletClicked();\n };\n\n const getAddToWalletStatus = (data: CardGetAddToWalletStatusEvent) => {\n if (data.cardId !== props.cardId) return;\n getWallets();\n };\n\n useListenerToBus({ busEventKey: UnitMessage.UNIT_REQUEST_REFRESH, action: requestRefresh });\n useListenerToBus({ busEventKey: CardMessage.CARD_STATUS_CHANGED, action: cardStatusChanged });\n useListenerToBus({ busEventKey: CardNativeMessage.CARD_START_PUSH_PROVISIONING, action: startPushProvisioning });\n useListenerToBus({ busEventKey: CardNativeMessage.CARD_GET_ADD_TO_WALLET_STATUS, action: getAddToWalletStatus });\n\n const handleMessage = (message: WebViewMessage) => {\n if (!message || !message.details) return;\n\n switch (message.type) {\n case UnitMessage.UNIT_REQUEST_RENDERING: {\n const event: BottomSheetSlotData = {\n componentName: WebComponentType.card,\n componentResourceId: props.cardId,\n requestRenderingEvent: message.details as RequestRenderingEvent\n };\n EventBus.Instance.event(UnitMessage.UNIT_REQUEST_RENDERING, event);\n break;\n }\n case PageMessage.PAGE_HEIGHT:\n setHeight((message.details as HeightEvent).height);\n break;\n case UnitMessage.UNIT_ON_LOAD:\n props.onLoad && props.onLoad(message.details as UNResponseUnitOnLoadEvent);\n break;\n }\n };\n\n const getWallets = async () => {\n\n try {\n\n const walletResponse = await launchGetWallets(props.customerToken, props.cardId, props.pushProvisioningModule as NativeModule);\n\n if (!walletResponse) return;\n\n walletRef.current = walletResponse;\n\n const walletStatus: UNCardAddToWalletStatusEvent = { status: walletResponse.status };\n EventBus.Instance.event(CardNativeMessage.CARD_UPDATE_ADD_TO_WALLET_STATUS, walletStatus);\n } catch (error) {\n console.error(error);\n }\n };\n\n const onAddToWalletClicked = async () => {\n try {\n await launchStartCardProvisioning(props.pushProvisioningModule as NativeModule, walletRef.current);\n } catch (error) {\n if (error instanceof Error) {\n const parsedError = JSON.parse(error.message);\n if (parsedError.code === CardAddToWalletErrors.closedNativeWalletScreen) return;\n }\n console.log(error);\n }\n };\n\n return (\n <View style={{ height }}>\n <WebComponent\n ref={webRef}\n type={WebComponentType.card}\n presentationMode={PresentationMode.Default}\n params={getCardParams(props)}\n theme={props.theme}\n script={getCardScript()}\n onMessage={message => handleMessage(message)}\n width={windowWidth}\n isScrollable={false}\n />\n </View>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useImperativeHandle","useRef","useState","Dimensions","View","PageMessage","UnitMessage","EventBus","WebComponent","WebComponentType","useListenerToBus","getCardParams","getCardScript","injectRefreshEventIfNeeded","launchStartCardProvisioning","injectOpenActionsMenuScript","injectRequestCardActionScript","PresentationMode","CardMessage","launchGetWallets","CardAddToWalletErrors","CardNativeMessage","RESPONSE_KEYS","UNCardComponent","forwardRef","props","cardRef","height","setHeight","windowWidth","get","width","walletRef","webRef","openActionsMenu","current","openAction","action","cardStatusChanged","card","onStatusChanged","cardActivated","onCardActivated","requestRefresh","data","cardId","startPushProvisioning","onAddToWalletClicked","getAddToWalletStatus","getWallets","handleUnitOnLoad","response","onLoad","errors","console","error","busEventKey","UNIT_REQUEST_REFRESH","CARD_STATUS_CHANGED","CARD_ACTIVATED","CARD_START_PUSH_PROVISIONING","CARD_GET_ADD_TO_WALLET_STATUS","handleMessage","message","details","type","UNIT_REQUEST_RENDERING","event","componentName","componentResourceId","requestRenderingEvent","Instance","PAGE_HEIGHT","UNIT_ON_LOAD","walletResponse","customerToken","pushProvisioningModule","walletStatus","status","CARD_UPDATE_ADD_TO_WALLET_STATUS","Error","parsedError","JSON","parse","code","closedNativeWalletScreen","log","createElement","style","ref","presentationMode","Default","params","theme","script","onMessage","isScrollable"],"sources":["UNCardComponent.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState } from 'react';\nimport { Dimensions, NativeModule, View } from 'react-native';\nimport type WebView from 'react-native-webview';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { RequestRefreshEvent, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport EventBus from '../../helpers/EventBus';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport { getCardParams, getCardScript, injectRefreshEventIfNeeded, launchStartCardProvisioning, injectOpenActionsMenuScript, injectRequestCardActionScript } from './UNCardComponent.utils';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport type { UNOnLoadResponse, UNCardData, UNError, UNCardMenuAction } from '../../sharedTypes';\nimport { CardMessage } from '../../messages/webMessages/cardMessage';\nimport { launchGetWallets } from './UNCardComponent.utils';\nimport type { NativeModules } from 'react-native';\nimport type { UNWallet } from 'src/sharedTypes/wallet.types';\nimport { CardAddToWalletErrors, UNCardAddToWalletStatusEvent, CardGetAddToWalletStatusEvent, CardNativeMessage, CardStartPushProvisioningEvent } from '../../messages/nativeMessages/cardMessage';\nimport type { BottomSheetSlotData } from '../UNBottomSheetComponent/UNBottomSheetComponent';\nimport { RESPONSE_KEYS, UnitOnLoadResponseEvent } from '../../messages/webMessages/onLoadMessage';\nexport interface UNCardComponentProps {\n // inputs\n cardId: string;\n customerToken: string;\n theme?: string;\n hideActionsMenuButton?: boolean;\n hideCardTitle?: boolean;\n hideSensitiveDataButton?: boolean;\n\n // events\n onLoad?: (response: UNOnLoadResponse<UNCardData>) => void\n onStatusChanged?: (card: UNCardData) => void;\n onCardActivated?: (card: UNCardData) => void;\n pushProvisioningModule?: typeof NativeModules;\n}\nexport interface CardRef {\n openActionsMenu: () => void;\n openAction:(action: UNCardMenuAction) => void;\n}\n\nexport const UNCardComponent = React.forwardRef<CardRef, UNCardComponentProps>(function UNCardComponent (props, cardRef) {\n const [height, setHeight] = useState(0);\n const windowWidth = Dimensions.get('window').width;\n\n const walletRef = useRef<UNWallet | null>(null);\n // walletRef can be changed to a state. (After the change of the listener hook)\n // TODO: walletState and checks it works. =)\n\n const webRef = useRef<WebView>(null);\n\n useImperativeHandle(cardRef, () => ({\n openActionsMenu() {\n injectOpenActionsMenuScript(webRef.current);\n },\n openAction(action: UNCardMenuAction) {\n injectRequestCardActionScript(webRef.current, action);\n }\n }));\n\n const cardStatusChanged = (card: UNCardData) => {\n if (props.onStatusChanged) {\n props.onStatusChanged(card);\n }\n };\n\n const cardActivated = (card: UNCardData) => {\n if (props.onCardActivated) {\n props.onCardActivated(card);\n }\n };\n\n const requestRefresh = (data: RequestRefreshEvent) => {\n injectRefreshEventIfNeeded(webRef.current, data, props.cardId);\n };\n\n const startPushProvisioning = async (data: CardStartPushProvisioningEvent) => {\n if (data.cardId !== props.cardId) return;\n onAddToWalletClicked();\n };\n\n const getAddToWalletStatus = (data: CardGetAddToWalletStatusEvent) => {\n if (data.cardId !== props.cardId) return;\n getWallets();\n };\n\n const handleUnitOnLoad = (response: UnitOnLoadResponseEvent) => {\n if (!props.onLoad) {\n return;\n }\n\n if (RESPONSE_KEYS.errors in response) {\n props.onLoad(response as UNError);\n return;\n }\n\n if (RESPONSE_KEYS.card in response) {\n // CardOnLoadResponse\n props.onLoad(response[RESPONSE_KEYS.card] as UNOnLoadResponse<UNCardData>);\n return;\n }\n\n console.error('On Load Error: unexpected response type');\n return;\n };\n\n useListenerToBus({ busEventKey: UnitMessage.UNIT_REQUEST_REFRESH, action: requestRefresh });\n useListenerToBus({ busEventKey: CardMessage.CARD_STATUS_CHANGED, action: cardStatusChanged });\n useListenerToBus({ busEventKey: CardMessage.CARD_ACTIVATED, action: cardActivated });\n useListenerToBus({ busEventKey: CardNativeMessage.CARD_START_PUSH_PROVISIONING, action: startPushProvisioning });\n useListenerToBus({ busEventKey: CardNativeMessage.CARD_GET_ADD_TO_WALLET_STATUS, action: getAddToWalletStatus });\n\n const handleMessage = (message: WebViewMessage) => {\n if (!message || !message.details) return;\n\n switch (message.type) {\n case UnitMessage.UNIT_REQUEST_RENDERING: {\n const event: BottomSheetSlotData = {\n componentName: WebComponentType.card,\n componentResourceId: props.cardId,\n requestRenderingEvent: message.details as RequestRenderingEvent\n };\n EventBus.Instance.event(UnitMessage.UNIT_REQUEST_RENDERING, event);\n break;\n }\n case PageMessage.PAGE_HEIGHT:\n setHeight((message.details as HeightEvent).height);\n break;\n case UnitMessage.UNIT_ON_LOAD:\n handleUnitOnLoad(message.details as UnitOnLoadResponseEvent);\n break;\n }\n };\n\n const getWallets = async () => {\n\n try {\n\n const walletResponse = await launchGetWallets(props.customerToken, props.cardId, props.pushProvisioningModule as NativeModule);\n\n if (!walletResponse) return;\n\n walletRef.current = walletResponse;\n\n const walletStatus: UNCardAddToWalletStatusEvent = { status: walletResponse.status };\n EventBus.Instance.event(CardNativeMessage.CARD_UPDATE_ADD_TO_WALLET_STATUS, walletStatus);\n } catch (error) {\n console.error(error);\n }\n };\n\n const onAddToWalletClicked = async () => {\n try {\n await launchStartCardProvisioning(props.pushProvisioningModule as NativeModule, walletRef.current);\n } catch (error) {\n if (error instanceof Error) {\n const parsedError = JSON.parse(error.message);\n if (parsedError.code === CardAddToWalletErrors.closedNativeWalletScreen) return;\n }\n console.log(error);\n }\n };\n\n return (\n <View style={{ height }}>\n <WebComponent\n ref={webRef}\n type={WebComponentType.card}\n presentationMode={PresentationMode.Default}\n params={getCardParams(props)}\n theme={props.theme}\n script={getCardScript()}\n onMessage={message => handleMessage(message)}\n width={windowWidth}\n isScrollable={false}\n />\n </View>\n );\n});\n"],"mappings":"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"}
|
|
@@ -16,6 +16,12 @@ export const getCardParams = props => {
|
|
|
16
16
|
export const getCardScript = () => {
|
|
17
17
|
return DISPATCH_REQUEST_REFRESH;
|
|
18
18
|
};
|
|
19
|
+
export const injectOpenActionsMenuScript = currentWeb => {
|
|
20
|
+
currentWeb === null || currentWeb === void 0 ? void 0 : currentWeb.injectJavaScript(`dispatchOpenActionsMenu('${WebComponentType.card}')`);
|
|
21
|
+
};
|
|
22
|
+
export const injectRequestCardActionScript = (currentWeb, action) => {
|
|
23
|
+
currentWeb === null || currentWeb === void 0 ? void 0 : currentWeb.injectJavaScript(`dispatchRequestCardAction('${action}')`);
|
|
24
|
+
};
|
|
19
25
|
export const injectRefreshEventIfNeeded = (currentWeb, requestRefreshEvent, cardId) => {
|
|
20
26
|
if (requestRefreshEvent && requestRefreshEvent.dependencies.includes(WebComponentType.card.valueOf()) && requestRefreshEvent.resourceId == cardId) {
|
|
21
27
|
currentWeb === null || currentWeb === void 0 ? void 0 : currentWeb.injectJavaScript(`dispatchRefreshEvent('${JSON.stringify(requestRefreshEvent)}')`);
|