react-native-unit-components 1.2.1 → 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.
Files changed (137) hide show
  1. package/README.md +133 -13
  2. package/lib/commonjs/components/UNACHCreditComponent/UNACHCreditComponent.js +24 -1
  3. package/lib/commonjs/components/UNACHCreditComponent/UNACHCreditComponent.js.map +1 -1
  4. package/lib/commonjs/components/UNACHDebitComponent/UNACHDebitComponent.js +24 -1
  5. package/lib/commonjs/components/UNACHDebitComponent/UNACHDebitComponent.js.map +1 -1
  6. package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.js +25 -3
  7. package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.js.map +1 -1
  8. package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.utils.js +5 -1
  9. package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.utils.js.map +1 -1
  10. package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.js +24 -1
  11. package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.js.map +1 -1
  12. package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.utils.js +2 -0
  13. package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.utils.js.map +1 -1
  14. package/lib/commonjs/components/UNBookPaymentComponent/UNBookPaymentComponent.js +18 -1
  15. package/lib/commonjs/components/UNBookPaymentComponent/UNBookPaymentComponent.js.map +1 -1
  16. package/lib/commonjs/components/UNBottomSheetComponent/UNBottomSheetComponent.js +3 -0
  17. package/lib/commonjs/components/UNBottomSheetComponent/UNBottomSheetComponent.js.map +1 -1
  18. package/lib/commonjs/components/UNCardComponent/UNCardComponent.js +37 -3
  19. package/lib/commonjs/components/UNCardComponent/UNCardComponent.js.map +1 -1
  20. package/lib/commonjs/components/UNCardComponent/UNCardComponent.utils.js +9 -1
  21. package/lib/commonjs/components/UNCardComponent/UNCardComponent.utils.js.map +1 -1
  22. package/lib/commonjs/messages/webMessages/cardMessage.js +1 -0
  23. package/lib/commonjs/messages/webMessages/cardMessage.js.map +1 -1
  24. package/lib/commonjs/messages/webMessages/onLoadMessage.js +17 -0
  25. package/lib/commonjs/messages/webMessages/onLoadMessage.js.map +1 -0
  26. package/lib/commonjs/messages/webMessages/unitMessages.js.map +1 -1
  27. package/lib/commonjs/scripts/html/bodyScript.js +23 -1
  28. package/lib/commonjs/scripts/html/bodyScript.js.map +1 -1
  29. package/lib/commonjs/sharedTypes/account.types.js.map +1 -1
  30. package/lib/commonjs/sharedTypes/achCredit.types.js.map +1 -1
  31. package/lib/commonjs/sharedTypes/activity.types.js +6 -0
  32. package/lib/commonjs/sharedTypes/activity.types.js.map +1 -0
  33. package/lib/commonjs/sharedTypes/authorization.types.js +2 -0
  34. package/lib/commonjs/sharedTypes/authorization.types.js.map +1 -0
  35. package/lib/commonjs/sharedTypes/card.types.js +15 -0
  36. package/lib/commonjs/sharedTypes/card.types.js.map +1 -1
  37. package/lib/commonjs/sharedTypes/index.js.map +1 -1
  38. package/lib/commonjs/sharedTypes/onLoadResponse.types.js +0 -4
  39. package/lib/commonjs/sharedTypes/onLoadResponse.types.js.map +1 -1
  40. package/lib/commonjs/sharedTypes/transactions.types.js +52 -0
  41. package/lib/commonjs/sharedTypes/transactions.types.js.map +1 -0
  42. package/lib/commonjs/webComponent/WebComponent.js +2 -1
  43. package/lib/commonjs/webComponent/WebComponent.js.map +1 -1
  44. package/lib/commonjs/webComponent/html.js +6 -0
  45. package/lib/commonjs/webComponent/html.js.map +1 -1
  46. package/lib/module/components/UNACHCreditComponent/UNACHCreditComponent.js +24 -1
  47. package/lib/module/components/UNACHCreditComponent/UNACHCreditComponent.js.map +1 -1
  48. package/lib/module/components/UNACHDebitComponent/UNACHDebitComponent.js +24 -1
  49. package/lib/module/components/UNACHDebitComponent/UNACHDebitComponent.js.map +1 -1
  50. package/lib/module/components/UNAccountComponent/UNAccountComponent.js +27 -5
  51. package/lib/module/components/UNAccountComponent/UNAccountComponent.js.map +1 -1
  52. package/lib/module/components/UNAccountComponent/UNAccountComponent.utils.js +3 -0
  53. package/lib/module/components/UNAccountComponent/UNAccountComponent.utils.js.map +1 -1
  54. package/lib/module/components/UNActivityComponent/UNActivityComponent.js +24 -1
  55. package/lib/module/components/UNActivityComponent/UNActivityComponent.js.map +1 -1
  56. package/lib/module/components/UNActivityComponent/UNActivityComponent.utils.js +2 -0
  57. package/lib/module/components/UNActivityComponent/UNActivityComponent.utils.js.map +1 -1
  58. package/lib/module/components/UNBookPaymentComponent/UNBookPaymentComponent.js +18 -1
  59. package/lib/module/components/UNBookPaymentComponent/UNBookPaymentComponent.js.map +1 -1
  60. package/lib/module/components/UNBottomSheetComponent/UNBottomSheetComponent.js +3 -0
  61. package/lib/module/components/UNBottomSheetComponent/UNBottomSheetComponent.js.map +1 -1
  62. package/lib/module/components/UNCardComponent/UNCardComponent.js +39 -5
  63. package/lib/module/components/UNCardComponent/UNCardComponent.js.map +1 -1
  64. package/lib/module/components/UNCardComponent/UNCardComponent.utils.js +6 -0
  65. package/lib/module/components/UNCardComponent/UNCardComponent.utils.js.map +1 -1
  66. package/lib/module/messages/webMessages/cardMessage.js +1 -0
  67. package/lib/module/messages/webMessages/cardMessage.js.map +1 -1
  68. package/lib/module/messages/webMessages/onLoadMessage.js +10 -0
  69. package/lib/module/messages/webMessages/onLoadMessage.js.map +1 -0
  70. package/lib/module/messages/webMessages/unitMessages.js.map +1 -1
  71. package/lib/module/scripts/html/bodyScript.js +20 -0
  72. package/lib/module/scripts/html/bodyScript.js.map +1 -1
  73. package/lib/module/sharedTypes/account.types.js.map +1 -1
  74. package/lib/module/sharedTypes/achCredit.types.js.map +1 -1
  75. package/lib/module/sharedTypes/activity.types.js +2 -0
  76. package/lib/module/sharedTypes/activity.types.js.map +1 -0
  77. package/lib/module/sharedTypes/authorization.types.js +2 -0
  78. package/lib/module/sharedTypes/authorization.types.js.map +1 -0
  79. package/lib/module/sharedTypes/card.types.js +13 -1
  80. package/lib/module/sharedTypes/card.types.js.map +1 -1
  81. package/lib/module/sharedTypes/index.js +1 -1
  82. package/lib/module/sharedTypes/index.js.map +1 -1
  83. package/lib/module/sharedTypes/onLoadResponse.types.js +1 -1
  84. package/lib/module/sharedTypes/onLoadResponse.types.js.map +1 -1
  85. package/lib/module/sharedTypes/transactions.types.js +44 -0
  86. package/lib/module/sharedTypes/transactions.types.js.map +1 -0
  87. package/lib/module/webComponent/WebComponent.js +2 -1
  88. package/lib/module/webComponent/WebComponent.js.map +1 -1
  89. package/lib/module/webComponent/html.js +7 -1
  90. package/lib/module/webComponent/html.js.map +1 -1
  91. package/lib/typescript/components/UNACHCreditComponent/UNACHCreditComponent.d.ts +2 -2
  92. package/lib/typescript/components/UNACHDebitComponent/UNACHDebitComponent.d.ts +2 -2
  93. package/lib/typescript/components/UNAccountComponent/UNAccountComponent.d.ts +7 -3
  94. package/lib/typescript/components/UNAccountComponent/UNAccountComponent.utils.d.ts +1 -0
  95. package/lib/typescript/components/UNActivityComponent/UNActivityComponent.d.ts +4 -2
  96. package/lib/typescript/components/UNBookPaymentComponent/UNBookPaymentComponent.d.ts +2 -2
  97. package/lib/typescript/components/UNCardComponent/UNCardComponent.d.ts +9 -3
  98. package/lib/typescript/components/UNCardComponent/UNCardComponent.utils.d.ts +3 -0
  99. package/lib/typescript/messages/webMessages/cardMessage.d.ts +5 -1
  100. package/lib/typescript/messages/webMessages/onLoadMessage.d.ts +30 -0
  101. package/lib/typescript/messages/webMessages/unitMessages.d.ts +2 -2
  102. package/lib/typescript/scripts/html/bodyScript.d.ts +3 -0
  103. package/lib/typescript/sharedTypes/account.types.d.ts +13 -4
  104. package/lib/typescript/sharedTypes/achCredit.types.d.ts +6 -0
  105. package/lib/typescript/sharedTypes/activity.types.d.ts +7 -0
  106. package/lib/typescript/sharedTypes/authorization.types.d.ts +20 -0
  107. package/lib/typescript/sharedTypes/card.types.d.ts +12 -0
  108. package/lib/typescript/sharedTypes/index.d.ts +1 -1
  109. package/lib/typescript/sharedTypes/onLoadResponse.types.d.ts +12 -16
  110. package/lib/typescript/sharedTypes/transactions.types.d.ts +80 -0
  111. package/package.json +1 -1
  112. package/src/components/UNACHCreditComponent/UNACHCreditComponent.tsx +30 -3
  113. package/src/components/UNACHDebitComponent/UNACHDebitComponent.tsx +30 -3
  114. package/src/components/UNAccountComponent/UNAccountComponent.tsx +40 -9
  115. package/src/components/UNAccountComponent/UNAccountComponent.utils.ts +4 -0
  116. package/src/components/UNActivityComponent/UNActivityComponent.tsx +32 -3
  117. package/src/components/UNActivityComponent/UNActivityComponent.utils.ts +2 -0
  118. package/src/components/UNBookPaymentComponent/UNBookPaymentComponent.tsx +23 -3
  119. package/src/components/UNBottomSheetComponent/UNBottomSheetComponent.tsx +4 -1
  120. package/src/components/UNCardComponent/UNCardComponent.tsx +49 -7
  121. package/src/components/UNCardComponent/UNCardComponent.utils.ts +9 -0
  122. package/src/messages/webMessages/cardMessage.ts +6 -0
  123. package/src/messages/webMessages/onLoadMessage.ts +45 -0
  124. package/src/messages/webMessages/unitMessages.ts +2 -2
  125. package/src/scripts/html/bodyScript.ts +22 -0
  126. package/src/sharedTypes/account.types.ts +25 -17
  127. package/src/sharedTypes/achCredit.types.ts +7 -0
  128. package/src/sharedTypes/activity.types.ts +8 -0
  129. package/src/sharedTypes/authorization.types.ts +22 -0
  130. package/src/sharedTypes/card.types.ts +13 -0
  131. package/src/sharedTypes/index.ts +1 -1
  132. package/src/sharedTypes/onLoadResponse.types.ts +15 -23
  133. package/src/sharedTypes/transactions.types.ts +84 -0
  134. package/src/webComponent/WebComponent.tsx +3 -1
  135. package/src/webComponent/html.ts +7 -1
  136. package/android/src/main/res/values/themes.xml +0 -16
  137. 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
- props.onLoad && props.onLoad(message.details);
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","onLoad","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, 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, injectRefreshEventIfNeeded } from './UNAccountComponent.utils';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport type { BottomSheetSlotData } from '../UNBottomSheetComponent/UNBottomSheetComponent';\nimport type { UNResponseUnitOnLoadEvent } from '../../sharedTypes';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { UNAccountData } from '../../sharedTypes/account.types';\nimport { AccountMessage } from '../../messages/webMessages/accountMessage';\n\nexport interface UNAccountComponentProps {\n accountId?: string;\n customerToken: string;\n theme?: string;\n onLoad?: (response: UNResponseUnitOnLoadEvent) => void;\n onAccountChanged?: (account: UNAccountData) => void;\n}\n\nexport enum AccountAction {\n List = 'account-list',\n Menu = 'account-menu'\n}\n\nexport const UNAccountComponent = (props: UNAccountComponentProps) => {\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 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 const handleMessage = (message: WebViewMessage) => {\n switch (message.type) {\n case UnitMessage.UNIT_ON_LOAD:\n props.onLoad && props.onLoad(message.details as UNResponseUnitOnLoadEvent);\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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"}
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","injectRefreshEventIfNeeded","currentWeb","requestRefreshEvent","dependencies","includes","account","valueOf","injectJavaScript","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 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,0BAA0B,GAAGA,CAACC,UAA0B,EAAEC,mBAA+C,KAAK;EACzH,IAAIA,mBAAmB,IAAIA,mBAAmB,CAACC,YAAY,CAACC,QAAQ,CAACX,gBAAgB,CAACY,OAAO,CAACC,OAAO,EAAE,CAAC,EAAE;IACxGL,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEM,gBAAgB,CAAE,yBAAwBC,IAAI,CAACC,SAAS,CAACP,mBAAmB,CAAE,IAAG,CAAC;EAChG;AACF,CAAC;AAED,OAAO,MAAMQ,oBAAoB,GAAIC,gBAAuC,IAAK;EAC/E,OAAOA,gBAAgB,CAACC,IAAI,CAACC,eAAe,CAACT,QAAQ,CAACb,aAAa,CAACuB,IAAI,CAAC,GAAGvB,aAAa,CAACuB,IAAI,GAAGvB,aAAa,CAACwB,IAAI;AACrH,CAAC"}
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
- props.onLoad && props.onLoad(message.details);
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","onLoad","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 { UNResponseUnitOnLoadEvent } 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';\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: UNResponseUnitOnLoadEvent) => void\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 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 props.onLoad && props.onLoad(message.details as UNResponseUnitOnLoadEvent);\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":"AAAA,OAAOA,KAAK,IAAIC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC/C,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAAqDC,WAAW,QAAQ,yCAAyC;AACjH,SAASC,gBAAgB,QAAQ,2BAA2B;AAE5D,SAAsBC,WAAW,QAAQ,wCAAwC;AACjF,SAASC,gBAAgB,QAAQ,6BAA6B;AAE9D,SAASC,YAAY,EAAEC,gBAAgB,QAAQ,iCAAiC;AAChF,SAASC,iBAAiB,EAAEC,iBAAiB,EAAEC,0BAA0B,QAAQ,6BAA6B;AAG9G,OAAOC,QAAQ,MAAM,wBAAwB;AAE7C,MAAMC,cAAc,GAAGZ,UAAU,CAACa,GAAG,CAAC,QAAQ,CAAC,CAACC,MAAM,GAAG,GAAG;AAQ5D,OAAO,MAAMC,mBAAmB,GAAIC,KAA+B,IAAK;EACtE,MAAMC,MAAM,GAAGnB,MAAM,CAAU,IAAI,CAAC;EACpC,MAAM,CAACoB,aAAa,EAAEC,gBAAgB,CAAC,GAAGpB,QAAQ,EAAU;EAE5D,MAAMqB,cAAc,GAAIC,IAAyB,IAAK;IACpDX,0BAA0B,CAACO,MAAM,CAACK,OAAO,EAAED,IAAI,CAAC;EAClD,CAAC;EAEDlB,gBAAgB,CAAC;IAAEoB,WAAW,EAAErB,WAAW,CAACsB,oBAAoB;IAAEC,MAAM,EAAEL;EAAe,CAAC,CAAC;EAE3F,MAAMM,oBAAoB,GAAIC,OAAuB,IAAK;IACxD,QAAQA,OAAO,CAACC,IAAI;MAClB,KAAK1B,WAAW,CAAC2B,sBAAsB;QAAE;UACvC,MAAMC,KAA0B,GAAG;YACjCC,aAAa,EAAExB,gBAAgB,CAACyB,QAAQ;YACxCC,mBAAmB,EAAEjB,KAAK,CAACkB,SAAS;YACpCC,qBAAqB,EAAER,OAAO,CAACS;UACjC,CAAC;UACDzB,QAAQ,CAAC0B,QAAQ,CAACP,KAAK,CAAC5B,WAAW,CAAC2B,sBAAsB,EAAEC,KAAK,CAAC;UAClE;QACF;MACA,KAAK5B,WAAW,CAACoC,YAAY;QAC3BtB,KAAK,CAACuB,MAAM,IAAIvB,KAAK,CAACuB,MAAM,CAACZ,OAAO,CAACS,OAAO,CAA8B;QAC1E;MACF,KAAKhC,WAAW,CAACoC,WAAW;QAAE;UAC5B,MAAMC,aAAa,GAAId,OAAO,CAACS,OAAO,CAAiBtB,MAAM;UAC7D2B,aAAa,KAAK,CAAC,IAAItB,gBAAgB,CAACP,cAAc,CAAC;UACvD;QACF;IAAC;EAEL,CAAC;EAED,MAAM8B,qBAAqB,GAAGA,CAAA,KAAM;IAClC,oBACE7C,KAAA,CAAA8C,aAAA,CAACrC,YAAY;MACXsC,GAAG,EAAE3B,MAAO;MACZW,IAAI,EAAErB,gBAAgB,CAACyB,QAAS;MAChCa,gBAAgB,EAAExC,gBAAgB,CAACyC,OAAQ;MAC3CC,MAAM,EAAEvC,iBAAiB,CAACQ,KAAK,CAAE;MACjCgC,SAAS,EAAGrB,OAAuB,IAAKD,oBAAoB,CAACC,OAAO,CAAE;MACtEsB,mBAAmB,EAAE,IAAK;MAC1BC,KAAK,EAAElC,KAAK,CAACkC,KAAM;MACnBC,MAAM,EAAE1C,iBAAiB;IAAG,EAC5B;EAEN,CAAC;EAED,IAAI,CAACS,aAAa,EAAE;IAClB,OAAOwB,qBAAqB,EAAE;EAChC;EAEA,oBACE7C,KAAA,CAAA8C,aAAA,CAAC1C,IAAI;IAACmD,KAAK,EAAE;MAAEtC,MAAM,EAAEI;IAAc;EAAE,GACpCwB,qBAAqB,EAAE,CACnB;AAEX,CAAC"}
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":"AAAA,OAAOA,KAAK,IAAIC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC/C,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAAqDC,WAAW,QAAQ,yCAAyC;AACjH,SAASC,gBAAgB,QAAQ,2BAA2B;AAE5D,SAAsBC,WAAW,QAAQ,wCAAwC;AACjF,SAASC,gBAAgB,QAAQ,6BAA6B;AAE9D,SAASC,YAAY,EAAEC,gBAAgB,QAAQ,iCAAiC;AAChF,SAASC,iBAAiB,EAAEC,iBAAiB,EAAEC,0BAA0B,QAAQ,6BAA6B;AAG9G,OAAOC,QAAQ,MAAM,wBAAwB;AAE7C,SAASC,aAAa,QAAiC,0CAA0C;AAEjG,MAAMC,cAAc,GAAGb,UAAU,CAACc,GAAG,CAAC,QAAQ,CAAC,CAACC,MAAM,GAAG,GAAG;AAS5D,OAAO,MAAMC,mBAAmB,GAAIC,KAA+B,IAAK;EACtE,MAAMC,MAAM,GAAGpB,MAAM,CAAU,IAAI,CAAC;EACpC,MAAM,CAACqB,aAAa,EAAEC,gBAAgB,CAAC,GAAGrB,QAAQ,EAAU;EAE5D,MAAMsB,cAAc,GAAIC,IAAyB,IAAK;IACpDZ,0BAA0B,CAACQ,MAAM,CAACK,OAAO,EAAED,IAAI,CAAC;EAClD,CAAC;EAEDnB,gBAAgB,CAAC;IAAEqB,WAAW,EAAEtB,WAAW,CAACuB,oBAAoB;IAAEC,MAAM,EAAEL;EAAe,CAAC,CAAC;EAE3F,MAAMM,gBAAgB,GAAIC,QAAiC,IAAK;IAC9D,IAAI,CAACX,KAAK,CAACY,MAAM,EAAE;MACjB;IACF;IAEA,IAAIjB,aAAa,CAACkB,MAAM,IAAIF,QAAQ,EAAE;MACpCX,KAAK,CAACY,MAAM,CAACD,QAAQ,CAAY;MACjC;IACF;IAEA,IAAIhB,aAAa,CAACmB,aAAa,IAAIH,QAAQ,IAAIhB,aAAa,CAACoB,YAAY,IAAIJ,QAAQ,EAAE;MACrF;MACA,MAAMK,cAA0D,GAAG;QACjEX,IAAI,EAAE;UACJ,CAACV,aAAa,CAACmB,aAAa,GAAGH,QAAQ,CAAChB,aAAa,CAACmB,aAAa,CAAC,CAACT,IAAI;UACzE,CAACV,aAAa,CAACoB,YAAY,GAAGJ,QAAQ,CAAChB,aAAa,CAACoB,YAAY,CAAC,CAACV;QACrE;MACF,CAAC;MACDL,KAAK,CAACY,MAAM,CAACI,cAAc,CAAC;MAC5B;IACF;IAEAC,OAAO,CAACC,KAAK,CAAC,yCAAyC,CAAC;IACxD;EACF,CAAC;EAED,MAAMC,oBAAoB,GAAIC,OAAuB,IAAK;IACxD,QAAQA,OAAO,CAACC,IAAI;MAClB,KAAKpC,WAAW,CAACqC,sBAAsB;QAAE;UACvC,MAAMC,KAA0B,GAAG;YACjCC,aAAa,EAAElC,gBAAgB,CAACmC,QAAQ;YACxCC,mBAAmB,EAAE1B,KAAK,CAAC2B,SAAS;YACpCC,qBAAqB,EAAER,OAAO,CAACS;UACjC,CAAC;UACDnC,QAAQ,CAACoC,QAAQ,CAACP,KAAK,CAACtC,WAAW,CAACqC,sBAAsB,EAAEC,KAAK,CAAC;UAClE;QACF;MACA,KAAKtC,WAAW,CAAC8C,YAAY;QAC3BrB,gBAAgB,CAACU,OAAO,CAACS,OAAO,CAA4B;QAC5D;MACF,KAAK1C,WAAW,CAAC6C,WAAW;QAAE;UAC5B,MAAMC,aAAa,GAAIb,OAAO,CAACS,OAAO,CAAiB/B,MAAM;UAC7DmC,aAAa,KAAK,CAAC,IAAI9B,gBAAgB,CAACP,cAAc,CAAC;UACvD;QACF;IAAC;EAEL,CAAC;EAED,MAAMsC,qBAAqB,GAAGA,CAAA,KAAM;IAClC,oBACEtD,KAAA,CAAAuD,aAAA,CAAC9C,YAAY;MACX+C,GAAG,EAAEnC,MAAO;MACZoB,IAAI,EAAE/B,gBAAgB,CAACmC,QAAS;MAChCY,gBAAgB,EAAEjD,gBAAgB,CAACkD,OAAQ;MAC3CC,MAAM,EAAEhD,iBAAiB,CAACS,KAAK,CAAE;MACjCwC,SAAS,EAAGpB,OAAuB,IAAKD,oBAAoB,CAACC,OAAO,CAAE;MACtEqB,mBAAmB,EAAE,IAAK;MAC1BC,KAAK,EAAE1C,KAAK,CAAC0C,KAAM;MACnBC,MAAM,EAAEnD,iBAAiB;IAAG,EAC5B;EAEN,CAAC;EAED,IAAI,CAACU,aAAa,EAAE;IAClB,OAAOgC,qBAAqB,EAAE;EAChC;EAEA,oBACEtD,KAAA,CAAAuD,aAAA,CAACnD,IAAI;IAAC4D,KAAK,EAAE;MAAE9C,MAAM,EAAEI;IAAc;EAAE,GACpCgC,qBAAqB,EAAE,CACnB;AAEX,CAAC"}
@@ -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,kBAAkBA,KAAK,CAACC,SAAU;AAClC,sBAAsBD,KAAK,CAACE,aAAc;AAC1C;AACA,GAAG;AACH,CAAC;AAED,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;EACrC,OAAOL,wBAAwB;AACjC,CAAC;AAED,OAAO,MAAMM,0BAA0B,GAAGA,CAACC,UAA0B,EAAEC,mBAA+C,KAAK;EACzH,IAAIA,mBAAmB,IAAIA,mBAAmB,CAACC,YAAY,CAACC,QAAQ,CAACX,gBAAgB,CAACY,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"}
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
- props.onLoad && props.onLoad(message.details);
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","onLoad","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 { UNResponseUnitOnLoadEvent, UNBookPaymentData } 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';\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: UNResponseUnitOnLoadEvent) => 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 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 props.onLoad && props.onLoad(message.details as UNResponseUnitOnLoadEvent);\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;AAc3E,OAAO,MAAMC,sBAAsB,GAAIC,KAAkC,IAAK;EAC5E,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGb,QAAQ,CAAS,CAAC,CAAC;EAC/C,MAAM,CAACc,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGf,QAAQ,CAAmBG,gBAAgB,CAACa,OAAO,CAAC;EAEpG,MAAMC,oBAAoB,GAAIC,OAAuB,IAAK;IACxD,IAAI,CAACA,OAAO,IAAI,CAACA,OAAO,CAACC,OAAO,EAAE;IAElC,QAAQD,OAAO,CAACE,IAAI;MAClB,KAAKX,cAAc,CAACY,eAAe;QACjCV,KAAK,CAACW,gBAAgB,IAAIX,KAAK,CAACW,gBAAgB,CAAEJ,OAAO,CAACC,OAAO,CAAsBI,IAAI,CAAC;QAC5F;MACF,KAAKf,WAAW,CAACgB,YAAY;QAC3Bb,KAAK,CAACc,MAAM,IAAId,KAAK,CAACc,MAAM,CAACP,OAAO,CAACC,OAAO,CAA8B;QAC1E;MACF,KAAKb,WAAW,CAACoB,WAAW;QAAE;UAC5B,MAAMC,aAAa,GAAIT,OAAO,CAACC,OAAO,CAAiBP,MAAM;UAC7DC,SAAS,CAACc,aAAa,CAAC;UACxB,IAAIb,gBAAgB,KAAKX,gBAAgB,CAACa,OAAO,IAAIW,aAAa,KAAK,CAAC,EAAE;YACxEZ,mBAAmB,CAACZ,gBAAgB,CAACyB,OAAO,CAAC;UAC/C;UACA;QACF;IAAC;EAEL,CAAC;EAED,MAAMC,wBAAwB,GAAGA,CAAA,KAAM;IACrC,oBACE9B,KAAA,CAAA+B,aAAA,CAAC7B,YAAY;MACXmB,IAAI,EAAElB,gBAAgB,CAAC6B,WAAY;MACnCjB,gBAAgB,EAAEA,gBAAiB;MACnCkB,MAAM,EAAE5B,oBAAoB,CAACO,KAAK,CAAE;MACpCsB,MAAM,EAAE5B,oBAAoB,EAAG;MAC/B6B,SAAS,EAAGhB,OAAuB,IAAKD,oBAAoB,CAACC,OAAO,CAAE;MACtEiB,YAAY,EAAE,KAAM;MACpBC,KAAK,EAAEzB,KAAK,CAACyB;IAAM,EACnB;EAEN,CAAC;EAED,IAAItB,gBAAgB,KAAKX,gBAAgB,CAACa,OAAO,EAAE;IACjD,OAAOa,wBAAwB,EAAE;EACnC;EAEA,oBACE9B,KAAA,CAAA+B,aAAA,CAACvB,IAAI;IAAC8B,KAAK,EAAE;MAAEzB,MAAM,EAAEA;IAAO;EAAE,GAC7BiB,wBAAwB,EAAE,CACtB;AAEX,CAAC"}
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
- export const UNCardComponent = props => {
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
- props.onLoad && props.onLoad(message.details);
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)}')`);