react-native-unit-components 1.2.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -255
- package/ios/Camera/Camera.swift +22 -0
- package/ios/Camera/CameraExportModule.m +7 -0
- package/ios/UNAppInfo/UNAppInfo.swift +19 -0
- package/ios/UNAppInfo/UNAppInfoExportModule.m +7 -0
- package/ios/UnitReactNativeComponentsViewManager.swift +7 -7
- package/lib/commonjs/components/UNACHCreditComponent/UNACHCreditComponent.js +24 -1
- package/lib/commonjs/components/UNACHCreditComponent/UNACHCreditComponent.js.map +1 -1
- package/lib/commonjs/components/UNACHDebitComponent/UNACHDebitComponent.js +24 -1
- package/lib/commonjs/components/UNACHDebitComponent/UNACHDebitComponent.js.map +1 -1
- package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.js +28 -3
- package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.js.map +1 -1
- package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.utils.js +11 -1
- package/lib/commonjs/components/UNAccountComponent/UNAccountComponent.utils.js.map +1 -1
- package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.js +32 -1
- package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.js.map +1 -1
- package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.utils.js +8 -1
- package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.utils.js.map +1 -1
- package/lib/commonjs/components/UNBookPaymentComponent/UNBookPaymentComponent.js +18 -1
- package/lib/commonjs/components/UNBookPaymentComponent/UNBookPaymentComponent.js.map +1 -1
- package/lib/commonjs/components/UNBottomSheetComponent/UNBottomSheetComponent.js +7 -0
- package/lib/commonjs/components/UNBottomSheetComponent/UNBottomSheetComponent.js.map +1 -1
- package/lib/commonjs/components/UNCardComponent/UNCardComponent.js +37 -3
- package/lib/commonjs/components/UNCardComponent/UNCardComponent.js.map +1 -1
- package/lib/commonjs/components/UNCardComponent/UNCardComponent.utils.js +9 -1
- package/lib/commonjs/components/UNCardComponent/UNCardComponent.utils.js.map +1 -1
- package/lib/commonjs/components/UNCheckDepositComponent/UNCheckDepositComponent.js +97 -0
- package/lib/commonjs/components/UNCheckDepositComponent/UNCheckDepositComponent.js.map +1 -0
- package/lib/commonjs/components/UNCheckDepositComponent/UNCheckDepositComponent.utils.js +45 -0
- package/lib/commonjs/components/UNCheckDepositComponent/UNCheckDepositComponent.utils.js.map +1 -0
- package/lib/commonjs/components/index.js +11 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/hooks/listenerToBus.js +4 -1
- package/lib/commonjs/hooks/listenerToBus.js.map +1 -1
- package/lib/commonjs/messages/webMessages/activityMessage.js +12 -0
- package/lib/commonjs/messages/webMessages/activityMessage.js.map +1 -0
- package/lib/commonjs/messages/webMessages/cardMessage.js +1 -0
- package/lib/commonjs/messages/webMessages/cardMessage.js.map +1 -1
- package/lib/commonjs/messages/webMessages/checkMessage.js +13 -0
- package/lib/commonjs/messages/webMessages/checkMessage.js.map +1 -0
- package/lib/commonjs/messages/webMessages/index.js.map +1 -1
- package/lib/commonjs/messages/webMessages/onLoadMessage.js +17 -0
- package/lib/commonjs/messages/webMessages/onLoadMessage.js.map +1 -0
- package/lib/commonjs/messages/webMessages/unitMessages.js.map +1 -1
- package/lib/commonjs/scripts/html/bodyScript.js +42 -1
- package/lib/commonjs/scripts/html/bodyScript.js.map +1 -1
- package/lib/commonjs/sharedTypes/account.types.js +8 -1
- package/lib/commonjs/sharedTypes/account.types.js.map +1 -1
- package/lib/commonjs/sharedTypes/achCredit.types.js.map +1 -1
- package/lib/commonjs/sharedTypes/activity.types.js +6 -0
- package/lib/commonjs/sharedTypes/activity.types.js.map +1 -0
- package/lib/commonjs/sharedTypes/authorization.types.js +2 -0
- package/lib/commonjs/sharedTypes/authorization.types.js.map +1 -0
- package/lib/commonjs/sharedTypes/card.types.js +15 -0
- package/lib/commonjs/sharedTypes/card.types.js.map +1 -1
- package/lib/commonjs/sharedTypes/checkDeposit.types.js +22 -0
- package/lib/commonjs/sharedTypes/checkDeposit.types.js.map +1 -0
- package/lib/commonjs/sharedTypes/index.js +11 -0
- package/lib/commonjs/sharedTypes/index.js.map +1 -1
- package/lib/commonjs/sharedTypes/onLoadResponse.types.js +0 -4
- package/lib/commonjs/sharedTypes/onLoadResponse.types.js.map +1 -1
- package/lib/commonjs/sharedTypes/transactions.types.js +52 -0
- package/lib/commonjs/sharedTypes/transactions.types.js.map +1 -0
- package/lib/commonjs/webComponent/WebComponent.js +35 -2
- package/lib/commonjs/webComponent/WebComponent.js.map +1 -1
- package/lib/commonjs/webComponent/html.js +14 -1
- package/lib/commonjs/webComponent/html.js.map +1 -1
- package/lib/module/components/UNACHCreditComponent/UNACHCreditComponent.js +24 -1
- package/lib/module/components/UNACHCreditComponent/UNACHCreditComponent.js.map +1 -1
- package/lib/module/components/UNACHDebitComponent/UNACHDebitComponent.js +24 -1
- package/lib/module/components/UNACHDebitComponent/UNACHDebitComponent.js.map +1 -1
- package/lib/module/components/UNAccountComponent/UNAccountComponent.js +30 -5
- package/lib/module/components/UNAccountComponent/UNAccountComponent.js.map +1 -1
- package/lib/module/components/UNAccountComponent/UNAccountComponent.utils.js +8 -0
- package/lib/module/components/UNAccountComponent/UNAccountComponent.utils.js.map +1 -1
- package/lib/module/components/UNActivityComponent/UNActivityComponent.js +33 -2
- package/lib/module/components/UNActivityComponent/UNActivityComponent.js.map +1 -1
- package/lib/module/components/UNActivityComponent/UNActivityComponent.utils.js +6 -0
- package/lib/module/components/UNActivityComponent/UNActivityComponent.utils.js.map +1 -1
- package/lib/module/components/UNBookPaymentComponent/UNBookPaymentComponent.js +18 -1
- package/lib/module/components/UNBookPaymentComponent/UNBookPaymentComponent.js.map +1 -1
- package/lib/module/components/UNBottomSheetComponent/UNBottomSheetComponent.js +7 -0
- package/lib/module/components/UNBottomSheetComponent/UNBottomSheetComponent.js.map +1 -1
- package/lib/module/components/UNCardComponent/UNCardComponent.js +39 -5
- package/lib/module/components/UNCardComponent/UNCardComponent.js.map +1 -1
- package/lib/module/components/UNCardComponent/UNCardComponent.utils.js +6 -0
- package/lib/module/components/UNCardComponent/UNCardComponent.utils.js.map +1 -1
- package/lib/module/components/UNCheckDepositComponent/UNCheckDepositComponent.js +88 -0
- package/lib/module/components/UNCheckDepositComponent/UNCheckDepositComponent.js.map +1 -0
- package/lib/module/components/UNCheckDepositComponent/UNCheckDepositComponent.utils.js +37 -0
- package/lib/module/components/UNCheckDepositComponent/UNCheckDepositComponent.utils.js.map +1 -0
- package/lib/module/components/index.js +1 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/hooks/listenerToBus.js +4 -1
- package/lib/module/hooks/listenerToBus.js.map +1 -1
- package/lib/module/messages/webMessages/activityMessage.js +5 -0
- package/lib/module/messages/webMessages/activityMessage.js.map +1 -0
- package/lib/module/messages/webMessages/cardMessage.js +1 -0
- package/lib/module/messages/webMessages/cardMessage.js.map +1 -1
- package/lib/module/messages/webMessages/checkMessage.js +6 -0
- package/lib/module/messages/webMessages/checkMessage.js.map +1 -0
- package/lib/module/messages/webMessages/index.js.map +1 -1
- package/lib/module/messages/webMessages/onLoadMessage.js +10 -0
- package/lib/module/messages/webMessages/onLoadMessage.js.map +1 -0
- package/lib/module/messages/webMessages/unitMessages.js.map +1 -1
- package/lib/module/scripts/html/bodyScript.js +37 -0
- package/lib/module/scripts/html/bodyScript.js.map +1 -1
- package/lib/module/sharedTypes/account.types.js +6 -0
- package/lib/module/sharedTypes/account.types.js.map +1 -1
- package/lib/module/sharedTypes/achCredit.types.js.map +1 -1
- package/lib/module/sharedTypes/activity.types.js +2 -0
- package/lib/module/sharedTypes/activity.types.js.map +1 -0
- package/lib/module/sharedTypes/authorization.types.js +2 -0
- package/lib/module/sharedTypes/authorization.types.js.map +1 -0
- package/lib/module/sharedTypes/card.types.js +13 -1
- package/lib/module/sharedTypes/card.types.js.map +1 -1
- package/lib/module/sharedTypes/checkDeposit.types.js +15 -0
- package/lib/module/sharedTypes/checkDeposit.types.js.map +1 -0
- package/lib/module/sharedTypes/index.js +2 -1
- package/lib/module/sharedTypes/index.js.map +1 -1
- package/lib/module/sharedTypes/onLoadResponse.types.js +1 -1
- package/lib/module/sharedTypes/onLoadResponse.types.js.map +1 -1
- package/lib/module/sharedTypes/transactions.types.js +44 -0
- package/lib/module/sharedTypes/transactions.types.js.map +1 -0
- package/lib/module/webComponent/WebComponent.js +34 -2
- package/lib/module/webComponent/WebComponent.js.map +1 -1
- package/lib/module/webComponent/html.js +15 -2
- package/lib/module/webComponent/html.js.map +1 -1
- package/lib/typescript/components/UNACHCreditComponent/UNACHCreditComponent.d.ts +2 -2
- package/lib/typescript/components/UNACHDebitComponent/UNACHDebitComponent.d.ts +2 -2
- package/lib/typescript/components/UNAccountComponent/UNAccountComponent.d.ts +11 -3
- package/lib/typescript/components/UNAccountComponent/UNAccountComponent.utils.d.ts +3 -0
- package/lib/typescript/components/UNActivityComponent/UNActivityComponent.d.ts +5 -2
- package/lib/typescript/components/UNActivityComponent/UNActivityComponent.utils.d.ts +1 -0
- package/lib/typescript/components/UNBookPaymentComponent/UNBookPaymentComponent.d.ts +2 -2
- package/lib/typescript/components/UNCardComponent/UNCardComponent.d.ts +9 -3
- package/lib/typescript/components/UNCardComponent/UNCardComponent.utils.d.ts +3 -0
- package/lib/typescript/components/UNCheckDepositComponent/UNCheckDepositComponent.d.ts +12 -0
- package/lib/typescript/components/UNCheckDepositComponent/UNCheckDepositComponent.utils.d.ts +3 -0
- package/lib/typescript/components/index.d.ts +1 -0
- package/lib/typescript/messages/webMessages/activityMessage.d.ts +5 -0
- package/lib/typescript/messages/webMessages/cardMessage.d.ts +5 -1
- package/lib/typescript/messages/webMessages/checkMessage.d.ts +8 -0
- package/lib/typescript/messages/webMessages/index.d.ts +4 -2
- package/lib/typescript/messages/webMessages/onLoadMessage.d.ts +30 -0
- package/lib/typescript/messages/webMessages/unitMessages.d.ts +2 -2
- package/lib/typescript/scripts/html/bodyScript.d.ts +6 -0
- package/lib/typescript/sharedTypes/account.types.d.ts +18 -4
- package/lib/typescript/sharedTypes/achCredit.types.d.ts +6 -0
- package/lib/typescript/sharedTypes/activity.types.d.ts +7 -0
- package/lib/typescript/sharedTypes/authorization.types.d.ts +20 -0
- package/lib/typescript/sharedTypes/card.types.d.ts +12 -0
- package/lib/typescript/sharedTypes/checkDeposit.types.d.ts +46 -0
- package/lib/typescript/sharedTypes/index.d.ts +2 -1
- package/lib/typescript/sharedTypes/onLoadResponse.types.d.ts +12 -16
- package/lib/typescript/sharedTypes/transactions.types.d.ts +80 -0
- package/lib/typescript/webComponent/WebComponent.d.ts +1 -0
- package/package.json +3 -3
- package/src/components/UNACHCreditComponent/UNACHCreditComponent.tsx +30 -3
- package/src/components/UNACHDebitComponent/UNACHDebitComponent.tsx +30 -3
- package/src/components/UNAccountComponent/UNAccountComponent.tsx +52 -9
- package/src/components/UNAccountComponent/UNAccountComponent.utils.ts +11 -0
- package/src/components/UNActivityComponent/UNActivityComponent.tsx +45 -4
- package/src/components/UNActivityComponent/UNActivityComponent.utils.ts +7 -0
- package/src/components/UNBookPaymentComponent/UNBookPaymentComponent.tsx +24 -3
- package/src/components/UNBottomSheetComponent/UNBottomSheetComponent.tsx +8 -1
- package/src/components/UNCardComponent/UNCardComponent.tsx +51 -7
- package/src/components/UNCardComponent/UNCardComponent.utils.ts +9 -0
- package/src/components/UNCheckDepositComponent/UNCheckDepositComponent.tsx +112 -0
- package/src/components/UNCheckDepositComponent/UNCheckDepositComponent.utils.ts +40 -0
- package/src/components/index.ts +1 -0
- package/src/hooks/listenerToBus.ts +4 -1
- package/src/messages/webMessages/activityMessage.ts +8 -0
- package/src/messages/webMessages/cardMessage.ts +6 -0
- package/src/messages/webMessages/checkMessage.ts +14 -0
- package/src/messages/webMessages/index.ts +6 -0
- package/src/messages/webMessages/onLoadMessage.ts +45 -0
- package/src/messages/webMessages/unitMessages.ts +2 -2
- package/src/scripts/html/bodyScript.ts +42 -1
- package/src/sharedTypes/account.types.ts +33 -19
- package/src/sharedTypes/achCredit.types.ts +7 -0
- package/src/sharedTypes/activity.types.ts +8 -0
- package/src/sharedTypes/authorization.types.ts +22 -0
- package/src/sharedTypes/card.types.ts +13 -0
- package/src/sharedTypes/checkDeposit.types.ts +50 -0
- package/src/sharedTypes/index.ts +2 -1
- package/src/sharedTypes/onLoadResponse.types.ts +15 -23
- package/src/sharedTypes/transactions.types.ts +84 -0
- package/src/webComponent/WebComponent.tsx +36 -2
- package/src/webComponent/html.ts +15 -2
- package/android/src/main/res/values/themes.xml +0 -16
- package/android/src/main/res/values-night/themes.xml +0 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","useState","WebComponent","WebComponentType","PresentationMode","PageMessage","Platform","View","UnitMessage","getACHDebitParams","getACHDebitScript","getAndroidPackageName","injectUnitPlaidResponse","openLink","PaymentMessage","UNACHDebitComponent","props","height","setHeight","appPackageName","setAppPackageName","linkToken","setLinkToken","webRef","presentationMode","setPresentationMode","Inherit","setPackageNameForAndroid","OS","packageName","dispatchUnitPlaidResponse","success","current","handleWebViewMessage","message","details","type","PAYMENT_CREATED","achDebitEvent","onPaymentCreated","data","UNIT_ON_LOAD","onLoad","PAGE_HEIGHT","currentHeight","Default","UNIT_PLAID_TOKEN_CREATED","linkTokenEvent","linkTokenData","attributes","UNIT_REQUEST_EXTERNAL_SDK","externalSdkType","tokenConfig","noLoadingState","token","onSuccess","onExit","exit","console","log","catch","e","error","renderACHDebitWebView","createElement","ref","achDebitPayment","params","script","onMessage","isScrollable","theme","style"],"sources":["UNACHDebitComponent.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport type { UNResponseUnitOnLoadEvent, UNACHData } from '../../sharedTypes';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { Platform, View } from 'react-native';\nimport { PlaidLinkTokenData, PlaidTokenCreatedEvent, RequestExternalSdkEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport { getACHDebitParams, getACHDebitScript, getAndroidPackageName, injectUnitPlaidResponse } from './UNACHDebitComponent.utils';\n\nimport { LinkSuccess, openLink } from 'react-native-plaid-link-sdk';\nimport type WebView from 'react-native-webview';\n\nimport { PaymentMessage } from '../../messages/webMessages/paymentsMessage';\nimport type { ACHEvent } from '../../messages/webMessages/achCreditMessage';\n\nexport interface UNACHDebitComponentProps {\n accountId: string;\n customerToken: string;\n theme?: string;\n isAutoFocus?: boolean;\n fee?: number;\n onPaymentCreated?: (data: UNACHData) => void;\n onLoad?: (response: UNResponseUnitOnLoadEvent) => void;\n}\n\nexport const UNACHDebitComponent = (props: UNACHDebitComponentProps) => {\n const [height, setHeight] = useState<number>(0);\n const [appPackageName, setAppPackageName] = useState<string>('');\n const [linkToken, setLinkToken] = useState<string>('');\n const webRef = useRef<WebView>(null);\n const [presentationMode, setPresentationMode] = useState<PresentationMode>(PresentationMode.Inherit);\n\n useEffect(() => {\n const setPackageNameForAndroid = async () => {\n if (Platform.OS === 'android') {\n const packageName = await getAndroidPackageName();\n setAppPackageName(packageName);\n }\n };\n setPackageNameForAndroid();\n }, []);\n\n const dispatchUnitPlaidResponse = (success: LinkSuccess) => {\n injectUnitPlaidResponse(webRef.current, success);\n };\n\n const handleWebViewMessage = (message: WebViewMessage) => {\n if (!message || !message.details) return;\n\n switch (message.type) {\n case PaymentMessage.PAYMENT_CREATED: {\n const achDebitEvent = message.details as ACHEvent;\n props.onPaymentCreated && props.onPaymentCreated(achDebitEvent.data as UNACHData);\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 setHeight(currentHeight);\n if (presentationMode === PresentationMode.Inherit && currentHeight === 0) {\n setPresentationMode(PresentationMode.Default);\n }\n break;\n }\n case UnitMessage.UNIT_PLAID_TOKEN_CREATED: {\n const linkTokenEvent = message.details as PlaidTokenCreatedEvent;\n const linkTokenData = linkTokenEvent.linkToken as PlaidLinkTokenData;\n setLinkToken(linkTokenData.attributes.linkToken);\n break;\n }\n\n case UnitMessage.UNIT_REQUEST_EXTERNAL_SDK: {\n const externalSdkType = (message.details as RequestExternalSdkEvent).type;\n if (externalSdkType !== 'plaid') return;\n linkToken && openLink({\n tokenConfig: { noLoadingState: false, token: linkToken},\n onSuccess: (success) => {\n dispatchUnitPlaidResponse(success);\n },\n onExit: exit => { console.log(exit); }\n }).catch(e => {\n console.error(e);\n });\n break;\n }\n }\n };\n\n const renderACHDebitWebView = () => {\n return (\n <WebComponent\n ref={webRef}\n type={WebComponentType.achDebitPayment}\n presentationMode={presentationMode}\n params={getACHDebitParams(props)}\n script={getACHDebitScript(appPackageName)}\n onMessage={(message: WebViewMessage) => handleWebViewMessage(message)}\n isScrollable={false}\n theme={props.theme}\n />\n );\n };\n\n if (presentationMode === PresentationMode.Inherit) {\n return renderACHDebitWebView();\n }\n\n return (\n <View style={{ height: height }}>\n {renderACHDebitWebView()}\n </View>\n\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","WebComponent","WebComponentType","PresentationMode","PageMessage","Platform","View","UnitMessage","getACHDebitParams","getACHDebitScript","getAndroidPackageName","injectUnitPlaidResponse","openLink","PaymentMessage","RESPONSE_KEYS","UNACHDebitComponent","props","height","setHeight","appPackageName","setAppPackageName","linkToken","setLinkToken","webRef","presentationMode","setPresentationMode","Inherit","setPackageNameForAndroid","OS","packageName","dispatchUnitPlaidResponse","success","current","handleUnitOnLoad","response","onLoad","errors","account","counterpartyAccount","achOnload","data","console","error","handleWebViewMessage","message","details","type","PAYMENT_CREATED","achDebitEvent","onPaymentCreated","UNIT_ON_LOAD","PAGE_HEIGHT","currentHeight","Default","UNIT_PLAID_TOKEN_CREATED","linkTokenEvent","linkTokenData","attributes","UNIT_REQUEST_EXTERNAL_SDK","externalSdkType","tokenConfig","noLoadingState","token","onSuccess","onExit","exit","log","catch","e","renderACHDebitWebView","createElement","ref","achDebitPayment","params","script","onMessage","isScrollable","theme","style"],"sources":["UNACHDebitComponent.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport type { UNOnLoadResponse, UNACHData, UNError, UNOnLoadResponseData, UNACHOnLoadData } from '../../sharedTypes';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { Platform, View } from 'react-native';\nimport { PlaidLinkTokenData, PlaidTokenCreatedEvent, RequestExternalSdkEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport { getACHDebitParams, getACHDebitScript, getAndroidPackageName, injectUnitPlaidResponse } from './UNACHDebitComponent.utils';\n\nimport { LinkSuccess, openLink } from 'react-native-plaid-link-sdk';\nimport type WebView from 'react-native-webview';\n\nimport { PaymentMessage } from '../../messages/webMessages/paymentsMessage';\nimport type { ACHEvent } from '../../messages/webMessages/achCreditMessage';\nimport { RESPONSE_KEYS, UnitOnLoadResponseEvent } from '../../messages/webMessages/onLoadMessage';\n\nexport interface UNACHDebitComponentProps {\n accountId: string;\n customerToken: string;\n theme?: string;\n isAutoFocus?: boolean;\n fee?: number;\n onPaymentCreated?: (data: UNACHData) => void;\n onLoad?: (response: UNOnLoadResponse<UNACHOnLoadData>) => void;\n}\n\nexport const UNACHDebitComponent = (props: UNACHDebitComponentProps) => {\n const [height, setHeight] = useState<number>(0);\n const [appPackageName, setAppPackageName] = useState<string>('');\n const [linkToken, setLinkToken] = useState<string>('');\n const webRef = useRef<WebView>(null);\n const [presentationMode, setPresentationMode] = useState<PresentationMode>(PresentationMode.Inherit);\n\n useEffect(() => {\n const setPackageNameForAndroid = async () => {\n if (Platform.OS === 'android') {\n const packageName = await getAndroidPackageName();\n setAppPackageName(packageName);\n }\n };\n setPackageNameForAndroid();\n }, []);\n\n const dispatchUnitPlaidResponse = (success: LinkSuccess) => {\n injectUnitPlaidResponse(webRef.current, success);\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 && RESPONSE_KEYS.counterpartyAccount in response) {\n // ACHOnLoadResponse;\n const achOnload: UNOnLoadResponseData<UNACHOnLoadData> = {\n data: {\n [RESPONSE_KEYS.account]: response[RESPONSE_KEYS.account].data,\n [RESPONSE_KEYS.counterpartyAccount]: response[RESPONSE_KEYS.counterpartyAccount].data,\n }\n };\n props.onLoad(achOnload);\n return;\n }\n\n console.error('On Load Error: unexpected response type');\n return;\n };\n\n const handleWebViewMessage = (message: WebViewMessage) => {\n if (!message || !message.details) return;\n\n switch (message.type) {\n case PaymentMessage.PAYMENT_CREATED: {\n const achDebitEvent = message.details as ACHEvent;\n props.onPaymentCreated && props.onPaymentCreated(achDebitEvent.data as UNACHData);\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 setHeight(currentHeight);\n if (presentationMode === PresentationMode.Inherit && currentHeight === 0) {\n setPresentationMode(PresentationMode.Default);\n }\n break;\n }\n case UnitMessage.UNIT_PLAID_TOKEN_CREATED: {\n const linkTokenEvent = message.details as PlaidTokenCreatedEvent;\n const linkTokenData = linkTokenEvent.linkToken as PlaidLinkTokenData;\n setLinkToken(linkTokenData.attributes.linkToken);\n break;\n }\n\n case UnitMessage.UNIT_REQUEST_EXTERNAL_SDK: {\n const externalSdkType = (message.details as RequestExternalSdkEvent).type;\n if (externalSdkType !== 'plaid') return;\n linkToken && openLink({\n tokenConfig: { noLoadingState: false, token: linkToken},\n onSuccess: (success) => {\n dispatchUnitPlaidResponse(success);\n },\n onExit: exit => { console.log(exit); }\n }).catch(e => {\n console.error(e);\n });\n break;\n }\n }\n };\n\n const renderACHDebitWebView = () => {\n return (\n <WebComponent\n ref={webRef}\n type={WebComponentType.achDebitPayment}\n presentationMode={presentationMode}\n params={getACHDebitParams(props)}\n script={getACHDebitScript(appPackageName)}\n onMessage={(message: WebViewMessage) => handleWebViewMessage(message)}\n isScrollable={false}\n theme={props.theme}\n />\n );\n };\n\n if (presentationMode === PresentationMode.Inherit) {\n return renderACHDebitWebView();\n }\n\n return (\n <View style={{ height: height }}>\n {renderACHDebitWebView()}\n </View>\n\n );\n};\n"],"mappings":"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"}
|
|
@@ -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, injectRequestAccountActionScript } 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,18 @@ 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
|
+
openAction(action) {
|
|
60
|
+
injectRequestAccountActionScript(webRef.current, action);
|
|
61
|
+
}
|
|
62
|
+
}));
|
|
38
63
|
const handleMessage = message => {
|
|
39
64
|
switch (message.type) {
|
|
40
65
|
case UnitMessage.UNIT_ON_LOAD:
|
|
41
|
-
|
|
66
|
+
handleUnitOnLoad(message.details);
|
|
42
67
|
break;
|
|
43
68
|
case UnitMessage.UNIT_REQUEST_RENDERING:
|
|
44
69
|
{
|
|
@@ -70,5 +95,5 @@ export const UNAccountComponent = props => {
|
|
|
70
95
|
width: windowWidth,
|
|
71
96
|
isScrollable: false
|
|
72
97
|
}));
|
|
73
|
-
};
|
|
98
|
+
});
|
|
74
99
|
//# sourceMappingURL=UNAccountComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","useState","Dimensions","View","PageMessage","UnitMessage","EventBus","WebComponent","WebComponentType","getAccountParams","getAccountScript","injectRefreshEventIfNeeded","PresentationMode","useListenerToBus","AccountMessage","AccountAction","UNAccountComponent","props","height","setHeight","windowWidth","get","width","requestRefreshEvent","setRequestRefreshEvent","webRef","handleAccountChanged","account","onAccountChanged","requestRefresh","data","busEventKey","UNIT_REQUEST_REFRESH","action","UNIT_ACCOUNT_CHANGED","current","handleMessage","message","type","UNIT_ON_LOAD","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useImperativeHandle","useRef","useState","Dimensions","View","PageMessage","UnitMessage","EventBus","WebComponent","WebComponentType","getAccountParams","getAccountScript","injectOpenActionsMenuScript","injectRefreshEventIfNeeded","injectRequestAccountActionScript","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","openAction","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, injectRequestAccountActionScript } 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';\nimport type { UNAccountMenuAction } from '../../sharedTypes';\n\nexport interface UNAccountComponentProps {\n // inputs\n accountId?: string;\n customerToken: string;\n\n // ui\n theme?: string;\n hideActionsMenuButton?: boolean;\n hideSelectionMenuButton?: boolean;\n\n // events\n onLoad?: (response: UNOnLoadResponse<[UNAccountData]>) => void;\n onAccountChanged?: (account: UNAccountData) => void;\n}\n\nexport interface UNAccountRef {\n openActionsMenu: () => void;\n openAction: (action: UNAccountMenuAction) => 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 openAction(action: UNAccountMenuAction) {\n injectRequestAccountActionScript(webRef.current, action);\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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"}
|
|
@@ -5,6 +5,8 @@ export const getAccountParams = props => {
|
|
|
5
5
|
return `
|
|
6
6
|
account-id="${props.accountId}"
|
|
7
7
|
customer-token="${props.customerToken}"
|
|
8
|
+
hide-actions-menu-button="${props.hideActionsMenuButton || false}"
|
|
9
|
+
hide-selection-menu-button="${props.hideSelectionMenuButton || false}"
|
|
8
10
|
`;
|
|
9
11
|
};
|
|
10
12
|
export const getAccountScript = () => {
|
|
@@ -15,6 +17,12 @@ export const getAccountScript = () => {
|
|
|
15
17
|
}
|
|
16
18
|
`;
|
|
17
19
|
};
|
|
20
|
+
export const injectOpenActionsMenuScript = currentWeb => {
|
|
21
|
+
currentWeb === null || currentWeb === void 0 ? void 0 : currentWeb.injectJavaScript(`dispatchOpenActionsMenu('${WebComponentType.account}')`);
|
|
22
|
+
};
|
|
23
|
+
export const injectRequestAccountActionScript = (currentWeb, action) => {
|
|
24
|
+
currentWeb === null || currentWeb === void 0 ? void 0 : currentWeb.injectJavaScript(`dispatchRequestAccountAction('${action}')`);
|
|
25
|
+
};
|
|
18
26
|
export const injectRefreshEventIfNeeded = (currentWeb, requestRefreshEvent) => {
|
|
19
27
|
if (requestRefreshEvent && requestRefreshEvent.dependencies.includes(WebComponentType.account.valueOf())) {
|
|
20
28
|
currentWeb === null || currentWeb === void 0 ? void 0 : currentWeb.injectJavaScript(`dispatchRefreshEvent('${JSON.stringify(requestRefreshEvent)}')`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AccountAction","UnitMessage","WebComponentType","getAccountParams","props","accountId","customerToken","getAccountScript","UNIT_REQUEST_REFRESH","
|
|
1
|
+
{"version":3,"names":["AccountAction","UnitMessage","WebComponentType","getAccountParams","props","accountId","customerToken","hideActionsMenuButton","hideSelectionMenuButton","getAccountScript","UNIT_REQUEST_REFRESH","injectOpenActionsMenuScript","currentWeb","injectJavaScript","account","injectRequestAccountActionScript","action","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';\nimport type { UNAccountMenuAction } from 'src/sharedTypes';\n\nexport const getAccountParams = (props: UNAccountComponentProps) => {\n return `\n account-id=\"${props.accountId}\"\n customer-token=\"${props.customerToken}\"\n hide-actions-menu-button=\"${props.hideActionsMenuButton || false}\"\n hide-selection-menu-button=\"${props.hideSelectionMenuButton || false}\"\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 injectRequestAccountActionScript = (currentWeb: WebView | null, action: UNAccountMenuAction) => {\n currentWeb?.injectJavaScript(`dispatchRequestAccountAction('${action}')`);\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;AAGlE,OAAO,MAAMC,gBAAgB,GAAIC,KAA8B,IAAK;EAClE,OAAQ;AACV,kBAAkBA,KAAK,CAACC,SAAU;AAClC,sBAAsBD,KAAK,CAACE,aAAc;AAC1C,gCAAgCF,KAAK,CAACG,qBAAqB,IAAI,KAAM;AACrE,kCAAkCH,KAAK,CAACI,uBAAuB,IAAI,KAAM;AACzE,GAAG;AACH,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EACpC,OAAQ;AACV;AACA,qCAAqCR,WAAW,CAACS,oBAAqB;AACtE;AACA;AACA,GAAG;AACH,CAAC;AAED,OAAO,MAAMC,2BAA2B,GAAIC,UAA0B,IAAK;EACzEA,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEC,gBAAgB,CAAE,4BAA2BX,gBAAgB,CAACY,OAAQ,IAAG,CAAC;AACxF,CAAC;AAED,OAAO,MAAMC,gCAAgC,GAAGA,CAACH,UAA0B,EAAEI,MAA2B,KAAK;EAC3GJ,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEC,gBAAgB,CAAE,iCAAgCG,MAAO,IAAG,CAAC;AAC3E,CAAC;AAED,OAAO,MAAMC,0BAA0B,GAAGA,CAACL,UAA0B,EAAEM,mBAA+C,KAAK;EACzH,IAAIA,mBAAmB,IAAIA,mBAAmB,CAACC,YAAY,CAACC,QAAQ,CAAClB,gBAAgB,CAACY,OAAO,CAACO,OAAO,EAAE,CAAC,EAAE;IACxGT,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEC,gBAAgB,CAAE,yBAAwBS,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,CAACpB,aAAa,CAAC4B,IAAI,CAAC,GAAG5B,aAAa,CAAC4B,IAAI,GAAG5B,aAAa,CAAC6B,IAAI;AACrH,CAAC"}
|
|
@@ -5,8 +5,10 @@ import { useListenerToBus } from '../../hooks/listenerToBus';
|
|
|
5
5
|
import { PageMessage } from '../../messages/webMessages/pageMessage';
|
|
6
6
|
import { PresentationMode } from '../../scripts/html/bodyHtml';
|
|
7
7
|
import { WebComponent, WebComponentType } from '../../webComponent/WebComponent';
|
|
8
|
-
import { getActivityParams, getActivityScript, injectRefreshEventIfNeeded } from './UNActivityComponent.utils';
|
|
8
|
+
import { getActivityParams, getActivityScript, injectFiltersChanged, injectRefreshEventIfNeeded } from './UNActivityComponent.utils';
|
|
9
9
|
import EventBus from '../../helpers/EventBus';
|
|
10
|
+
import { RESPONSE_KEYS } from '../../messages/webMessages/onLoadMessage';
|
|
11
|
+
import { ActivityMessage } from '../../messages/webMessages/activityMessage';
|
|
10
12
|
const DEFAULT_HEIGHT = Dimensions.get('window').height * 0.5;
|
|
11
13
|
export const UNActivityComponent = props => {
|
|
12
14
|
const webRef = useRef(null);
|
|
@@ -14,10 +16,39 @@ export const UNActivityComponent = props => {
|
|
|
14
16
|
const requestRefresh = data => {
|
|
15
17
|
injectRefreshEventIfNeeded(webRef.current, data);
|
|
16
18
|
};
|
|
19
|
+
const dispatchActivityFiltersChanged = query => {
|
|
20
|
+
injectFiltersChanged(webRef.current, query);
|
|
21
|
+
};
|
|
17
22
|
useListenerToBus({
|
|
18
23
|
busEventKey: UnitMessage.UNIT_REQUEST_REFRESH,
|
|
19
24
|
action: requestRefresh
|
|
20
25
|
});
|
|
26
|
+
useListenerToBus({
|
|
27
|
+
busEventKey: ActivityMessage.UNIT_ACTIVITY_FILTERS_CHANGED,
|
|
28
|
+
action: dispatchActivityFiltersChanged
|
|
29
|
+
});
|
|
30
|
+
const handleUnitOnLoad = response => {
|
|
31
|
+
if (!props.onLoad) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (RESPONSE_KEYS.errors in response) {
|
|
35
|
+
props.onLoad(response);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (RESPONSE_KEYS.authorization in response && RESPONSE_KEYS.transactions in response) {
|
|
39
|
+
// ActivityOnLoadResponse;
|
|
40
|
+
const activityOnLoad = {
|
|
41
|
+
data: {
|
|
42
|
+
[RESPONSE_KEYS.authorization]: response[RESPONSE_KEYS.authorization].data,
|
|
43
|
+
[RESPONSE_KEYS.transactions]: response[RESPONSE_KEYS.transactions].data
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
props.onLoad(activityOnLoad);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
console.error('On Load Error: unexpected response type');
|
|
50
|
+
return;
|
|
51
|
+
};
|
|
21
52
|
const handleWebViewMessage = message => {
|
|
22
53
|
switch (message.type) {
|
|
23
54
|
case UnitMessage.UNIT_REQUEST_RENDERING:
|
|
@@ -31,7 +62,7 @@ export const UNActivityComponent = props => {
|
|
|
31
62
|
break;
|
|
32
63
|
}
|
|
33
64
|
case UnitMessage.UNIT_ON_LOAD:
|
|
34
|
-
|
|
65
|
+
handleUnitOnLoad(message.details);
|
|
35
66
|
break;
|
|
36
67
|
case PageMessage.PAGE_HEIGHT:
|
|
37
68
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useRef","useState","Dimensions","View","UnitMessage","useListenerToBus","PageMessage","PresentationMode","WebComponent","WebComponentType","getActivityParams","getActivityScript","injectRefreshEventIfNeeded","EventBus","DEFAULT_HEIGHT","get","height","UNActivityComponent","props","webRef","defaultHeight","setDefaultHeight","requestRefresh","data","current","busEventKey","UNIT_REQUEST_REFRESH","action","handleWebViewMessage","message","type","UNIT_REQUEST_RENDERING","event","componentName","activity","componentResourceId","accountId","requestRenderingEvent","details","Instance","UNIT_ON_LOAD","
|
|
1
|
+
{"version":3,"names":["React","useRef","useState","Dimensions","View","UnitMessage","useListenerToBus","PageMessage","PresentationMode","WebComponent","WebComponentType","getActivityParams","getActivityScript","injectFiltersChanged","injectRefreshEventIfNeeded","EventBus","RESPONSE_KEYS","ActivityMessage","DEFAULT_HEIGHT","get","height","UNActivityComponent","props","webRef","defaultHeight","setDefaultHeight","requestRefresh","data","current","dispatchActivityFiltersChanged","query","busEventKey","UNIT_REQUEST_REFRESH","action","UNIT_ACTIVITY_FILTERS_CHANGED","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, injectFiltersChanged, 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';\nimport { ActivityMessage } from '../../messages/webMessages/activityMessage';\n\nconst DEFAULT_HEIGHT = Dimensions.get('window').height * 0.5;\nexport interface UNActivityComponentProps {\n // inputs\n accountId: string;\n customerToken: string;\n queryFilter?: string\n\n // ui\n theme?: string;\n hideFilterButton?: boolean;\n\n // event\n onLoad?: (response: UNOnLoadResponse<UNActivityOnLoadData>) => 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 const dispatchActivityFiltersChanged = (query: string) => {\n injectFiltersChanged(webRef.current, query);\n };\n\n useListenerToBus({ busEventKey: UnitMessage.UNIT_REQUEST_REFRESH, action: requestRefresh });\n useListenerToBus({ busEventKey: ActivityMessage.UNIT_ACTIVITY_FILTERS_CHANGED, action: dispatchActivityFiltersChanged});\n\n const handleUnitOnLoad = (response: UnitOnLoadResponseEvent) => {\n if (!props.onLoad) {\n return;\n }\n\n if (RESPONSE_KEYS.errors in response) {\n props.onLoad(response as UNError);\n return;\n }\n\n if (RESPONSE_KEYS.authorization in response && RESPONSE_KEYS.transactions in response) {\n // ActivityOnLoadResponse;\n const activityOnLoad: UNOnLoadResponseData<UNActivityOnLoadData> = {\n data: {\n [RESPONSE_KEYS.authorization]: response[RESPONSE_KEYS.authorization].data,\n [RESPONSE_KEYS.transactions]: response[RESPONSE_KEYS.transactions].data\n }\n };\n props.onLoad(activityOnLoad);\n return;\n }\n\n console.error('On Load Error: unexpected response type');\n return;\n };\n\n const handleWebViewMessage = (message: WebViewMessage) => {\n switch (message.type) {\n case UnitMessage.UNIT_REQUEST_RENDERING: {\n const event: BottomSheetSlotData = {\n componentName: WebComponentType.activity,\n componentResourceId: props.accountId,\n requestRenderingEvent: message.details as RequestRenderingEvent\n };\n EventBus.Instance.event(UnitMessage.UNIT_REQUEST_RENDERING, event);\n break;\n }\n case UnitMessage.UNIT_ON_LOAD:\n handleUnitOnLoad(message.details as UnitOnLoadResponseEvent);\n break;\n case PageMessage.PAGE_HEIGHT: {\n const currentHeight = (message.details as HeightEvent).height;\n currentHeight === 0 && setDefaultHeight(DEFAULT_HEIGHT);\n break;\n }\n }\n };\n\n const renderActivityWebView = () => {\n return (\n <WebComponent\n ref={webRef}\n type={WebComponentType.activity}\n presentationMode={PresentationMode.Inherit}\n params={getActivityParams(props)}\n onMessage={(message: WebViewMessage) => handleWebViewMessage(message)}\n nestedScrollEnabled={true}\n theme={props.theme}\n script={getActivityScript()}\n />\n );\n };\n\n if (!defaultHeight) {\n return renderActivityWebView();\n }\n\n return (\n <View style={{ height: defaultHeight }}>\n {renderActivityWebView()}\n </View>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
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
|
+
hide-filter-button="${props.hideFilterButton || false}"
|
|
9
|
+
${queryFilterParam}
|
|
7
10
|
style="height: 100%"
|
|
8
11
|
`;
|
|
9
12
|
};
|
|
@@ -15,4 +18,7 @@ export const injectRefreshEventIfNeeded = (currentWeb, requestRefreshEvent) => {
|
|
|
15
18
|
currentWeb === null || currentWeb === void 0 ? void 0 : currentWeb.injectJavaScript(`dispatchRefreshEvent('${JSON.stringify(requestRefreshEvent)}')`);
|
|
16
19
|
}
|
|
17
20
|
};
|
|
21
|
+
export const injectFiltersChanged = (currentWeb, query) => {
|
|
22
|
+
currentWeb === null || currentWeb === void 0 ? void 0 : currentWeb.injectJavaScript(`dispatchActivityFilterChangedEvent('${query}')`);
|
|
23
|
+
};
|
|
18
24
|
//# sourceMappingURL=UNActivityComponent.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WebComponentType","DISPATCH_REQUEST_REFRESH","getActivityParams","props","accountId","customerToken","getActivityScript","injectRefreshEventIfNeeded","currentWeb","requestRefreshEvent","dependencies","includes","activity","valueOf","injectJavaScript","JSON","stringify"],"sources":["UNActivityComponent.utils.ts"],"sourcesContent":["import { WebComponentType } from './../../webComponent/WebComponent';\nimport type { RequestRefreshEvent } from './../../messages/webMessages/unitMessages';\nimport type { WebView } from 'react-native-webview';\nimport { DISPATCH_REQUEST_REFRESH } from './../../scripts/html/bodyScript';\nimport type { UNActivityComponentProps } from './UNActivityComponent';\n\nexport const getActivityParams = (props: UNActivityComponentProps) => {\n return `\n account-id=\"${props.accountId}\"\n customer-token=\"${props.customerToken}\"\n style=\"height: 100%\"\n `;\n};\n\nexport const getActivityScript = () => {\n return DISPATCH_REQUEST_REFRESH;\n};\n\nexport const injectRefreshEventIfNeeded = (currentWeb: WebView | null, requestRefreshEvent: RequestRefreshEvent | null) => {\n if (requestRefreshEvent && requestRefreshEvent.dependencies.includes(WebComponentType.activity.valueOf())) {\n currentWeb?.injectJavaScript(`dispatchRefreshEvent('${JSON.stringify(requestRefreshEvent)}')`);\n }\n};\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,mCAAmC;AAGpE,SAASC,wBAAwB,QAAQ,iCAAiC;AAG1E,OAAO,MAAMC,iBAAiB,GAAIC,KAA+B,IAAK;EACpE,OAAQ;AACV,
|
|
1
|
+
{"version":3,"names":["WebComponentType","DISPATCH_REQUEST_REFRESH","getActivityParams","props","queryFilterParam","queryFilter","accountId","customerToken","hideFilterButton","getActivityScript","injectRefreshEventIfNeeded","currentWeb","requestRefreshEvent","dependencies","includes","activity","valueOf","injectJavaScript","JSON","stringify","injectFiltersChanged","query"],"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 hide-filter-button=\"${props.hideFilterButton || false}\"\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\nexport const injectFiltersChanged = (currentWeb: WebView | null, query: string) => {\n currentWeb?.injectJavaScript(`dispatchActivityFilterChangedEvent('${query}')`);\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,0BAA0BJ,KAAK,CAACK,gBAAgB,IAAI,KAAM;AAC1D,MAAMJ,gBAAiB;AACvB;AACA,GAAG;AACH,CAAC;AAED,OAAO,MAAMK,iBAAiB,GAAGA,CAAA,KAAM;EACrC,OAAOR,wBAAwB;AACjC,CAAC;AAED,OAAO,MAAMS,0BAA0B,GAAGA,CAACC,UAA0B,EAAEC,mBAA+C,KAAK;EACzH,IAAIA,mBAAmB,IAAIA,mBAAmB,CAACC,YAAY,CAACC,QAAQ,CAACd,gBAAgB,CAACe,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;AAED,OAAO,MAAMQ,oBAAoB,GAAGA,CAACT,UAA0B,EAAEU,KAAa,KAAK;EACjFV,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEM,gBAAgB,CAAE,uCAAsCI,KAAM,IAAG,CAAC;AAChF,CAAC"}
|
|
@@ -6,9 +6,26 @@ import { PageMessage } from '../../messages/webMessages/pageMessage';
|
|
|
6
6
|
import { View } from 'react-native';
|
|
7
7
|
import { UnitMessage } from '../../messages/webMessages/unitMessages';
|
|
8
8
|
import { PaymentMessage } from '../../messages/webMessages/paymentsMessage';
|
|
9
|
+
import { RESPONSE_KEYS } from '../../messages/webMessages/onLoadMessage';
|
|
9
10
|
export const UNBookPaymentComponent = props => {
|
|
10
11
|
const [height, setHeight] = useState(0);
|
|
11
12
|
const [presentationMode, setPresentationMode] = useState(PresentationMode.Inherit);
|
|
13
|
+
const handleUnitOnLoad = response => {
|
|
14
|
+
if (!props.onLoad) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (RESPONSE_KEYS.errors in response) {
|
|
18
|
+
props.onLoad(response);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (RESPONSE_KEYS.account in response) {
|
|
22
|
+
// AccountOnLoadResponse;
|
|
23
|
+
props.onLoad(response[RESPONSE_KEYS.account]);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
console.error('On Load Error: unexpected response type');
|
|
27
|
+
return;
|
|
28
|
+
};
|
|
12
29
|
const handleWebViewMessage = message => {
|
|
13
30
|
if (!message || !message.details) return;
|
|
14
31
|
switch (message.type) {
|
|
@@ -16,7 +33,7 @@ export const UNBookPaymentComponent = props => {
|
|
|
16
33
|
props.onPaymentCreated && props.onPaymentCreated(message.details.data);
|
|
17
34
|
break;
|
|
18
35
|
case UnitMessage.UNIT_ON_LOAD:
|
|
19
|
-
|
|
36
|
+
handleUnitOnLoad(message.details);
|
|
20
37
|
break;
|
|
21
38
|
case PageMessage.PAGE_HEIGHT:
|
|
22
39
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","WebComponent","WebComponentType","PresentationMode","getBookPaymentParams","getBookPaymentScript","PageMessage","View","UnitMessage","PaymentMessage","UNBookPaymentComponent","props","height","setHeight","presentationMode","setPresentationMode","Inherit","handleWebViewMessage","message","details","type","PAYMENT_CREATED","onPaymentCreated","data","UNIT_ON_LOAD","
|
|
1
|
+
{"version":3,"names":["React","useState","WebComponent","WebComponentType","PresentationMode","getBookPaymentParams","getBookPaymentScript","PageMessage","View","UnitMessage","PaymentMessage","RESPONSE_KEYS","UNBookPaymentComponent","props","height","setHeight","presentationMode","setPresentationMode","Inherit","handleUnitOnLoad","response","onLoad","errors","account","console","error","handleWebViewMessage","message","details","type","PAYMENT_CREATED","onPaymentCreated","data","UNIT_ON_LOAD","PAGE_HEIGHT","currentHeight","Default","renderBookPaymentWebView","createElement","bookPayment","params","script","onMessage","isScrollable","theme","style"],"sources":["UNBookPaymentComponent.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport { getBookPaymentParams, getBookPaymentScript } from './UNBookPaymentComponent.utils';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport type { UNOnLoadResponse, UNBookPaymentData, UNError, UNAccountData, UNOnLoadResponseData } from '../../sharedTypes';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { View } from 'react-native';\nimport { UnitMessage } from '../../messages/webMessages/unitMessages';\nimport { PaymentMessage } from '../../messages/webMessages/paymentsMessage';\nimport type { BookPaymentEvent } from '../../messages/webMessages/bookPaymentMessage';\nimport { RESPONSE_KEYS, UnitOnLoadResponseEvent } from '../../messages/webMessages/onLoadMessage';\n\nexport interface UNBookPaymentComponentProps {\n accountId: string;\n customerToken: string;\n isSameCustomer: boolean;\n counterPartyAccountId: string;\n counterPartyName: string;\n theme?: string;\n onPaymentCreated?: (data: UNBookPaymentData) => void;\n onLoad?: (response: UNOnLoadResponse<UNAccountData>) => void;\n}\n\nexport const UNBookPaymentComponent = (props: UNBookPaymentComponentProps) => {\n const [height, setHeight] = useState<number>(0);\n const [presentationMode, setPresentationMode] = useState<PresentationMode>(PresentationMode.Inherit);\n\n const handleUnitOnLoad = (response: UnitOnLoadResponseEvent) => {\n if (!props.onLoad) {\n return;\n }\n\n if (RESPONSE_KEYS.errors in response) {\n props.onLoad(response as UNError);\n return;\n }\n\n if (RESPONSE_KEYS.account in response) {\n // AccountOnLoadResponse;\n props.onLoad(response[RESPONSE_KEYS.account] as UNOnLoadResponseData<UNAccountData>);\n return;\n }\n\n console.error('On Load Error: unexpected response type');\n return;\n };\n\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;EAED,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"}
|
|
@@ -16,6 +16,7 @@ import { UNAddToWalletBottomSheetItem } from './components/UNAddToWalletBottomSh
|
|
|
16
16
|
import { getAccountActionType } from '../UNAccountComponent/UNAccountComponent.utils';
|
|
17
17
|
import { AccountAction } from '../UNAccountComponent/UNAccountComponent';
|
|
18
18
|
import { AccountMessage } from '../../messages/webMessages/accountMessage';
|
|
19
|
+
import { ActivityMessage } from '../../messages/webMessages/activityMessage';
|
|
19
20
|
export let ScrollState;
|
|
20
21
|
(function (ScrollState) {
|
|
21
22
|
ScrollState["onTop"] = "onTop";
|
|
@@ -135,12 +136,18 @@ export const UNBottomSheetComponent = () => {
|
|
|
135
136
|
}
|
|
136
137
|
break;
|
|
137
138
|
}
|
|
139
|
+
case CardMessage.CARD_ACTIVATED:
|
|
140
|
+
EventBus.Instance.event(CardMessage.CARD_ACTIVATED, message.details.card);
|
|
141
|
+
break;
|
|
138
142
|
case CardMessage.CARD_STATUS_CHANGED:
|
|
139
143
|
EventBus.Instance.event(CardMessage.CARD_STATUS_CHANGED, message.details.card);
|
|
140
144
|
break;
|
|
141
145
|
case AccountMessage.UNIT_ACCOUNT_CHANGED:
|
|
142
146
|
EventBus.Instance.event(AccountMessage.UNIT_ACCOUNT_CHANGED, message.details.account);
|
|
143
147
|
break;
|
|
148
|
+
case ActivityMessage.UNIT_ACTIVITY_FILTERS_CHANGED:
|
|
149
|
+
EventBus.Instance.event(ActivityMessage.UNIT_ACTIVITY_FILTERS_CHANGED, message.details);
|
|
150
|
+
break;
|
|
144
151
|
case UnitMessage.UNIT_REQUEST_CLOSE_FLOW:
|
|
145
152
|
handleCloseFlow();
|
|
146
153
|
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","ActivityMessage","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_ACTIVITY_FILTERS_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';\nimport { ActivityFiltersChangedEvent, ActivityMessage } from '../../messages/webMessages/activityMessage';\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 ActivityMessage.UNIT_ACTIVITY_FILTERS_CHANGED:\n EventBus.Instance.event(ActivityMessage.UNIT_ACTIVITY_FILTERS_CHANGED, (message.details as ActivityFiltersChangedEvent));\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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"}
|