ouisys-engine 5.1.15 → 5.1.17

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 (303) hide show
  1. package/dist/RemoteDataState-CwHLI23e.js +75 -0
  2. package/dist/RemoteDataState-CwHLI23e.js.map +1 -0
  3. package/dist/api-oPdBWsMC.js +65 -0
  4. package/dist/api-oPdBWsMC.js.map +1 -0
  5. package/dist/checkSubscriptionHander.js +140 -1
  6. package/dist/checkSubscriptionHander.js.map +1 -1
  7. package/dist/cleanSearchParams-B2jK3H1j.js +16 -0
  8. package/dist/cleanSearchParams-B2jK3H1j.js.map +1 -0
  9. package/dist/click2smsFlow.js +252 -1
  10. package/dist/click2smsFlow.js.map +1 -1
  11. package/dist/creditCardFlow.js +331 -1
  12. package/dist/creditCardFlow.js.map +1 -1
  13. package/dist/formatNumberToE164-oPCiETQk.js +476 -0
  14. package/dist/formatNumberToE164-oPCiETQk.js.map +1 -0
  15. package/dist/getConfig.js +13 -1
  16. package/dist/getConfig.js.map +1 -1
  17. package/dist/handleSubmitNumber.js +50 -1
  18. package/dist/handleSubmitNumber.js.map +1 -1
  19. package/dist/handleWaterfallRedirect-h5K2zX3N.js +21 -0
  20. package/dist/handleWaterfallRedirect-h5K2zX3N.js.map +1 -0
  21. package/dist/helpers-BIBpnXln.js +29 -0
  22. package/dist/helpers-BIBpnXln.js.map +1 -0
  23. package/dist/initTPay.js +98 -1
  24. package/dist/initTPay.js.map +1 -1
  25. package/dist/loadScriptInnerHtml-CstJVRED.js +30 -0
  26. package/dist/loadScriptInnerHtml-CstJVRED.js.map +1 -0
  27. package/dist/main-8gjJCdrT.js +448 -0
  28. package/dist/main-8gjJCdrT.js.map +1 -0
  29. package/dist/moFlow.js +322 -1
  30. package/dist/moFlow.js.map +1 -1
  31. package/dist/moRedirFlow.js +329 -1
  32. package/dist/moRedirFlow.js.map +1 -1
  33. package/dist/normaliseErrorCode-CBLYxW-a.js +44 -0
  34. package/dist/normaliseErrorCode-CBLYxW-a.js.map +1 -0
  35. package/dist/oneClickFlow.js +710 -1
  36. package/dist/oneClickFlow.js.map +1 -1
  37. package/dist/pinFlow.js +542 -1
  38. package/dist/pinFlow.js.map +1 -1
  39. package/dist/searchToObject.js +9 -1
  40. package/dist/searchToObject.js.map +1 -1
  41. package/dist/src/common-types/Either.d.ts +9 -0
  42. package/dist/src/common-types/Either.d.ts.map +1 -0
  43. package/dist/src/common-types/ICheckSubscriptionResult.d.ts +12 -0
  44. package/dist/src/common-types/ICheckSubscriptionResult.d.ts.map +1 -0
  45. package/dist/src/common-types/IError.d.ts +5 -0
  46. package/dist/src/common-types/IError.d.ts.map +1 -0
  47. package/dist/src/common-types/IHash.d.ts +4 -0
  48. package/dist/src/common-types/IHash.d.ts.map +1 -0
  49. package/dist/src/common-types/IOptInFlowName.d.ts +2 -0
  50. package/dist/src/common-types/IOptInFlowName.d.ts.map +1 -0
  51. package/dist/src/common-types/ITracker.d.ts +10 -0
  52. package/dist/src/common-types/ITracker.d.ts.map +1 -0
  53. package/dist/src/common-types/IVisitor.d.ts +51 -0
  54. package/dist/src/common-types/IVisitor.d.ts.map +1 -0
  55. package/dist/src/common-types/RemoteDataState.d.ts +39 -0
  56. package/dist/src/common-types/RemoteDataState.d.ts.map +1 -0
  57. package/dist/src/common-types/Strategy.d.ts +49 -0
  58. package/dist/src/common-types/Strategy.d.ts.map +1 -0
  59. package/dist/src/flows/click2smsFlow/api.d.ts +13 -0
  60. package/dist/src/flows/click2smsFlow/api.d.ts.map +1 -0
  61. package/dist/src/flows/click2smsFlow/click2smsFlowSlice.d.ts +18 -0
  62. package/dist/src/flows/click2smsFlow/click2smsFlowSlice.d.ts.map +1 -0
  63. package/dist/src/flows/click2smsFlow/hooks/useClick2smsFlowState.d.ts +3 -0
  64. package/dist/src/flows/click2smsFlow/hooks/useClick2smsFlowState.d.ts.map +1 -0
  65. package/dist/src/flows/click2smsFlow/hooks/useKeyWordShortCode.d.ts +4 -0
  66. package/dist/src/flows/click2smsFlow/hooks/useKeyWordShortCode.d.ts.map +1 -0
  67. package/dist/src/flows/click2smsFlow/index.d.ts +6 -0
  68. package/dist/src/flows/click2smsFlow/index.d.ts.map +1 -0
  69. package/dist/src/flows/click2smsFlow/main.d.ts +4 -0
  70. package/dist/src/flows/click2smsFlow/main.d.ts.map +1 -0
  71. package/dist/src/flows/click2smsFlow/match.d.ts +7 -0
  72. package/dist/src/flows/click2smsFlow/match.d.ts.map +1 -0
  73. package/dist/src/flows/creditCardFlow/api.d.ts +26 -0
  74. package/dist/src/flows/creditCardFlow/api.d.ts.map +1 -0
  75. package/dist/src/flows/creditCardFlow/creditCardFlowSlice.d.ts +26 -0
  76. package/dist/src/flows/creditCardFlow/creditCardFlowSlice.d.ts.map +1 -0
  77. package/dist/src/flows/creditCardFlow/hooks/useCreditCardFlowState.d.ts +3 -0
  78. package/dist/src/flows/creditCardFlow/hooks/useCreditCardFlowState.d.ts.map +1 -0
  79. package/dist/src/flows/creditCardFlow/index.d.ts +5 -0
  80. package/dist/src/flows/creditCardFlow/index.d.ts.map +1 -0
  81. package/dist/src/flows/creditCardFlow/main.d.ts +8 -0
  82. package/dist/src/flows/creditCardFlow/main.d.ts.map +1 -0
  83. package/dist/src/flows/creditCardFlow/match.d.ts +7 -0
  84. package/dist/src/flows/creditCardFlow/match.d.ts.map +1 -0
  85. package/dist/src/flows/moFlow/api.d.ts +15 -0
  86. package/dist/src/flows/moFlow/api.d.ts.map +1 -0
  87. package/dist/src/flows/moFlow/hooks/useMoFlowState.d.ts +3 -0
  88. package/dist/src/flows/moFlow/hooks/useMoFlowState.d.ts.map +1 -0
  89. package/dist/src/flows/moFlow/index.d.ts +5 -0
  90. package/dist/src/flows/moFlow/index.d.ts.map +1 -0
  91. package/dist/src/flows/moFlow/main.d.ts +13 -0
  92. package/dist/src/flows/moFlow/main.d.ts.map +1 -0
  93. package/dist/src/flows/moFlow/match.d.ts +7 -0
  94. package/dist/src/flows/moFlow/match.d.ts.map +1 -0
  95. package/dist/src/flows/moFlow/moFlowSlice.d.ts +47 -0
  96. package/dist/src/flows/moFlow/moFlowSlice.d.ts.map +1 -0
  97. package/dist/src/flows/moRedirFlow/api.d.ts +18 -0
  98. package/dist/src/flows/moRedirFlow/api.d.ts.map +1 -0
  99. package/dist/src/flows/moRedirFlow/hooks/useMoRedirFlowState.d.ts +3 -0
  100. package/dist/src/flows/moRedirFlow/hooks/useMoRedirFlowState.d.ts.map +1 -0
  101. package/dist/src/flows/moRedirFlow/index.d.ts +5 -0
  102. package/dist/src/flows/moRedirFlow/index.d.ts.map +1 -0
  103. package/dist/src/flows/moRedirFlow/main.d.ts +8 -0
  104. package/dist/src/flows/moRedirFlow/main.d.ts.map +1 -0
  105. package/dist/src/flows/moRedirFlow/match.d.ts +7 -0
  106. package/dist/src/flows/moRedirFlow/match.d.ts.map +1 -0
  107. package/dist/src/flows/moRedirFlow/moRedirFlowSlice.d.ts +38 -0
  108. package/dist/src/flows/moRedirFlow/moRedirFlowSlice.d.ts.map +1 -0
  109. package/dist/src/flows/oneClickFlow/api.d.ts +22 -0
  110. package/dist/src/flows/oneClickFlow/api.d.ts.map +1 -0
  111. package/dist/src/flows/oneClickFlow/hooks/useOneClickFlowState.d.ts +3 -0
  112. package/dist/src/flows/oneClickFlow/hooks/useOneClickFlowState.d.ts.map +1 -0
  113. package/dist/src/flows/oneClickFlow/index.d.ts +5 -0
  114. package/dist/src/flows/oneClickFlow/index.d.ts.map +1 -0
  115. package/dist/src/flows/oneClickFlow/main.d.ts +15 -0
  116. package/dist/src/flows/oneClickFlow/main.d.ts.map +1 -0
  117. package/dist/src/flows/oneClickFlow/match.d.ts +8 -0
  118. package/dist/src/flows/oneClickFlow/match.d.ts.map +1 -0
  119. package/dist/src/flows/oneClickFlow/oneClickFlowSlice.d.ts +45 -0
  120. package/dist/src/flows/oneClickFlow/oneClickFlowSlice.d.ts.map +1 -0
  121. package/dist/src/flows/pinFlow/IPinConstants.d.ts +3 -0
  122. package/dist/src/flows/pinFlow/IPinConstants.d.ts.map +1 -0
  123. package/dist/src/flows/pinFlow/api.d.ts +39 -0
  124. package/dist/src/flows/pinFlow/api.d.ts.map +1 -0
  125. package/dist/src/flows/pinFlow/hooks/usePinFlowState.d.ts +3 -0
  126. package/dist/src/flows/pinFlow/hooks/usePinFlowState.d.ts.map +1 -0
  127. package/dist/src/flows/pinFlow/index.d.ts +5 -0
  128. package/dist/src/flows/pinFlow/index.d.ts.map +1 -0
  129. package/dist/src/flows/pinFlow/main.d.ts +10 -0
  130. package/dist/src/flows/pinFlow/main.d.ts.map +1 -0
  131. package/dist/src/flows/pinFlow/match.d.ts +8 -0
  132. package/dist/src/flows/pinFlow/match.d.ts.map +1 -0
  133. package/dist/src/flows/pinFlow/pinFlowSlice.d.ts +60 -0
  134. package/dist/src/flows/pinFlow/pinFlowSlice.d.ts.map +1 -0
  135. package/dist/src/flows/strategy/api.d.ts +40 -0
  136. package/dist/src/flows/strategy/api.d.ts.map +1 -0
  137. package/dist/src/flows/strategy/hooks/useStrategyState.d.ts +3 -0
  138. package/dist/src/flows/strategy/hooks/useStrategyState.d.ts.map +1 -0
  139. package/dist/src/flows/strategy/index.d.ts +8 -0
  140. package/dist/src/flows/strategy/index.d.ts.map +1 -0
  141. package/dist/src/flows/strategy/main.d.ts +29 -0
  142. package/dist/src/flows/strategy/main.d.ts.map +1 -0
  143. package/dist/src/flows/strategy/match.d.ts +16 -0
  144. package/dist/src/flows/strategy/match.d.ts.map +1 -0
  145. package/dist/src/flows/strategy/mocks/index.d.ts +7 -0
  146. package/dist/src/flows/strategy/mocks/index.d.ts.map +1 -0
  147. package/dist/src/flows/strategy/strategies/askMobileNumber.d.ts +25 -0
  148. package/dist/src/flows/strategy/strategies/askMobileNumber.d.ts.map +1 -0
  149. package/dist/src/flows/strategy/strategies/askOperator.d.ts +14 -0
  150. package/dist/src/flows/strategy/strategies/askOperator.d.ts.map +1 -0
  151. package/dist/src/flows/strategy/strategies/callRedirectApi.d.ts +28 -0
  152. package/dist/src/flows/strategy/strategies/callRedirectApi.d.ts.map +1 -0
  153. package/dist/src/flows/strategy/strategies/detectOperatorByIp.d.ts +15 -0
  154. package/dist/src/flows/strategy/strategies/detectOperatorByIp.d.ts.map +1 -0
  155. package/dist/src/flows/strategy/strategies/headerEnrichment.d.ts +52 -0
  156. package/dist/src/flows/strategy/strategies/headerEnrichment.d.ts.map +1 -0
  157. package/dist/src/flows/strategy/strategies/injectHeaderEnrichmentScript.d.ts +11 -0
  158. package/dist/src/flows/strategy/strategies/injectHeaderEnrichmentScript.d.ts.map +1 -0
  159. package/dist/src/flows/strategy/strategySlice.d.ts +26 -0
  160. package/dist/src/flows/strategy/strategySlice.d.ts.map +1 -0
  161. package/dist/src/flows/ussdFlow/api.d.ts +4 -0
  162. package/dist/src/flows/ussdFlow/api.d.ts.map +1 -0
  163. package/dist/src/flows/ussdFlow/hooks/useUssdFlowState.d.ts +3 -0
  164. package/dist/src/flows/ussdFlow/hooks/useUssdFlowState.d.ts.map +1 -0
  165. package/dist/src/flows/ussdFlow/index.d.ts +5 -0
  166. package/dist/src/flows/ussdFlow/index.d.ts.map +1 -0
  167. package/dist/src/flows/ussdFlow/main.d.ts +10 -0
  168. package/dist/src/flows/ussdFlow/main.d.ts.map +1 -0
  169. package/dist/src/flows/ussdFlow/match.d.ts +7 -0
  170. package/dist/src/flows/ussdFlow/match.d.ts.map +1 -0
  171. package/dist/src/flows/ussdFlow/ussdFlowSlice.d.ts +38 -0
  172. package/dist/src/flows/ussdFlow/ussdFlowSlice.d.ts.map +1 -0
  173. package/dist/src/index.d.ts +2 -0
  174. package/dist/src/index.d.ts.map +1 -0
  175. package/dist/src/ips/tryGetIPRangeName.d.ts +3 -0
  176. package/dist/src/ips/tryGetIPRangeName.d.ts.map +1 -0
  177. package/dist/src/pacman/index.d.ts +7 -0
  178. package/dist/src/pacman/index.d.ts.map +1 -0
  179. package/dist/src/pacman/queryString.d.ts +4 -0
  180. package/dist/src/pacman/queryString.d.ts.map +1 -0
  181. package/dist/src/sharedApi/checkSubscription.d.ts +13 -0
  182. package/dist/src/sharedApi/checkSubscription.d.ts.map +1 -0
  183. package/dist/src/sharedApi/checkSubscriptionByRockmanIdOnly.d.ts +7 -0
  184. package/dist/src/sharedApi/checkSubscriptionByRockmanIdOnly.d.ts.map +1 -0
  185. package/dist/src/sharedApi/unblockUser.d.ts +13 -0
  186. package/dist/src/sharedApi/unblockUser.d.ts.map +1 -0
  187. package/dist/src/sharedFlowTypes/Click2smsTypes.d.ts +79 -0
  188. package/dist/src/sharedFlowTypes/Click2smsTypes.d.ts.map +1 -0
  189. package/dist/src/sharedFlowTypes/CreditCardTypes.d.ts +74 -0
  190. package/dist/src/sharedFlowTypes/CreditCardTypes.d.ts.map +1 -0
  191. package/dist/src/sharedFlowTypes/MoRedirTypes.d.ts +29 -0
  192. package/dist/src/sharedFlowTypes/MoRedirTypes.d.ts.map +1 -0
  193. package/dist/src/sharedFlowTypes/MoTypes.d.ts +45 -0
  194. package/dist/src/sharedFlowTypes/MoTypes.d.ts.map +1 -0
  195. package/dist/src/sharedFlowTypes/OneClickTypes.d.ts +78 -0
  196. package/dist/src/sharedFlowTypes/OneClickTypes.d.ts.map +1 -0
  197. package/dist/src/sharedFlowTypes/PinTypes.d.ts +135 -0
  198. package/dist/src/sharedFlowTypes/PinTypes.d.ts.map +1 -0
  199. package/dist/src/sharedFlowTypes/StrategyTypes.d.ts +285 -0
  200. package/dist/src/sharedFlowTypes/StrategyTypes.d.ts.map +1 -0
  201. package/dist/src/sharedFlowTypes/UssdTypes.d.ts +32 -0
  202. package/dist/src/sharedFlowTypes/UssdTypes.d.ts.map +1 -0
  203. package/dist/src/utilities/addEmpelloToken.d.ts +5 -0
  204. package/dist/src/utilities/addEmpelloToken.d.ts.map +1 -0
  205. package/dist/src/utilities/addUrlParamAndReload.d.ts +4 -0
  206. package/dist/src/utilities/addUrlParamAndReload.d.ts.map +1 -0
  207. package/dist/src/utilities/bupperizeCountry.d.ts +3 -0
  208. package/dist/src/utilities/bupperizeCountry.d.ts.map +1 -0
  209. package/dist/src/utilities/checkSubscriptionHander.d.ts +10 -0
  210. package/dist/src/utilities/checkSubscriptionHander.d.ts.map +1 -0
  211. package/dist/src/utilities/cleanSearchParams.d.ts +2 -0
  212. package/dist/src/utilities/cleanSearchParams.d.ts.map +1 -0
  213. package/dist/src/utilities/countryToPhoneCode.d.ts +2 -0
  214. package/dist/src/utilities/countryToPhoneCode.d.ts.map +1 -0
  215. package/dist/src/utilities/formatNumberToE164.d.ts +9 -0
  216. package/dist/src/utilities/formatNumberToE164.d.ts.map +1 -0
  217. package/dist/src/utilities/getConfig.d.ts +4 -0
  218. package/dist/src/utilities/getConfig.d.ts.map +1 -0
  219. package/dist/src/utilities/handleSubmitNumber.d.ts +24 -0
  220. package/dist/src/utilities/handleSubmitNumber.d.ts.map +1 -0
  221. package/dist/src/utilities/handleWaterfallRedirect.d.ts +2 -0
  222. package/dist/src/utilities/handleWaterfallRedirect.d.ts.map +1 -0
  223. package/dist/src/utilities/hasNumber.d.ts +2 -0
  224. package/dist/src/utilities/hasNumber.d.ts.map +1 -0
  225. package/dist/src/utilities/helpers.d.ts +6 -0
  226. package/dist/src/utilities/helpers.d.ts.map +1 -0
  227. package/dist/src/utilities/initTpay.d.ts +2 -0
  228. package/dist/src/utilities/initTpay.d.ts.map +1 -0
  229. package/dist/src/utilities/isCookieExists.d.ts +2 -0
  230. package/dist/src/utilities/isCookieExists.d.ts.map +1 -0
  231. package/dist/src/utilities/loadScriptInnerHtml.d.ts +3 -0
  232. package/dist/src/utilities/loadScriptInnerHtml.d.ts.map +1 -0
  233. package/dist/src/utilities/loadScriptSrc.d.ts +20 -0
  234. package/dist/src/utilities/loadScriptSrc.d.ts.map +1 -0
  235. package/dist/src/utilities/normaliseErrorCode.d.ts +8 -0
  236. package/dist/src/utilities/normaliseErrorCode.d.ts.map +1 -0
  237. package/dist/src/utilities/normalizePhoneNumber.d.ts +12 -0
  238. package/dist/src/utilities/normalizePhoneNumber.d.ts.map +1 -0
  239. package/dist/src/utilities/replaceUrlParam.d.ts +2 -0
  240. package/dist/src/utilities/replaceUrlParam.d.ts.map +1 -0
  241. package/dist/src/utilities/searchToObject.d.ts +3 -0
  242. package/dist/src/utilities/searchToObject.d.ts.map +1 -0
  243. package/dist/src/utilities/storeMsisdn.d.ts +4 -0
  244. package/dist/src/utilities/storeMsisdn.d.ts.map +1 -0
  245. package/dist/src/utilities/tracker.d.ts +2 -0
  246. package/dist/src/utilities/tracker.d.ts.map +1 -0
  247. package/dist/src/utilities/unblockUser.d.ts +7 -0
  248. package/dist/src/utilities/unblockUser.d.ts.map +1 -0
  249. package/dist/src/utilities/updateUrlWithParams.d.ts +2 -0
  250. package/dist/src/utilities/updateUrlWithParams.d.ts.map +1 -0
  251. package/dist/src/utilities/verifyAntifraudOnClick2Sms.d.ts +6 -0
  252. package/dist/src/utilities/verifyAntifraudOnClick2Sms.d.ts.map +1 -0
  253. package/dist/storeMsisdn-ChiBh8mI.js +58 -0
  254. package/dist/storeMsisdn-ChiBh8mI.js.map +1 -0
  255. package/dist/strategy.js +49 -1
  256. package/dist/strategy.js.map +1 -1
  257. package/dist/strategySlice-DEsw1xc-.js +1159 -0
  258. package/dist/strategySlice-DEsw1xc-.js.map +1 -0
  259. package/dist/tracker-B_zsMRN2.js +79 -0
  260. package/dist/tracker-B_zsMRN2.js.map +1 -0
  261. package/dist/tracker.js +4 -1
  262. package/dist/tracker.js.map +1 -1
  263. package/dist/types/{StrategyTypes-BlqY9peI.d.ts → StrategyTypes-LKeXDiPK.d.ts} +78 -2
  264. package/dist/types/click2smsFlow.d.ts +2 -2
  265. package/dist/types/oneClickFlow.d.ts +10 -2
  266. package/dist/types/searchToObject.d.ts +2 -2
  267. package/dist/types/strategy.d.ts +3 -3
  268. package/dist/unblockUser.js +107 -1
  269. package/dist/unblockUser.js.map +1 -1
  270. package/dist/updateUrlWithParams-ZaZt1BCf.js +15 -0
  271. package/dist/updateUrlWithParams-ZaZt1BCf.js.map +1 -0
  272. package/dist/ussdFlow.js +261 -1
  273. package/dist/ussdFlow.js.map +1 -1
  274. package/dist/verifyAntifraudOnClick2Sms.js +50 -1
  275. package/dist/verifyAntifraudOnClick2Sms.js.map +1 -1
  276. package/package.json +1 -1
  277. package/dist/RemoteDataState-lcf8PfJd.js +0 -2
  278. package/dist/RemoteDataState-lcf8PfJd.js.map +0 -1
  279. package/dist/api-geirVksI.js +0 -2
  280. package/dist/api-geirVksI.js.map +0 -1
  281. package/dist/cleanSearchParams-Dl7ZDlew.js +0 -2
  282. package/dist/cleanSearchParams-Dl7ZDlew.js.map +0 -1
  283. package/dist/formatNumberToE164-DaAFvpKD.js +0 -2
  284. package/dist/formatNumberToE164-DaAFvpKD.js.map +0 -1
  285. package/dist/handleWaterfallRedirect-DztqrthA.js +0 -2
  286. package/dist/handleWaterfallRedirect-DztqrthA.js.map +0 -1
  287. package/dist/helpers-CBmogWIZ.js +0 -2
  288. package/dist/helpers-CBmogWIZ.js.map +0 -1
  289. package/dist/loadScriptInnerHtml-B6v2-IGn.js +0 -2
  290. package/dist/loadScriptInnerHtml-B6v2-IGn.js.map +0 -1
  291. package/dist/main-CDmeQMF-.js +0 -2
  292. package/dist/main-CDmeQMF-.js.map +0 -1
  293. package/dist/normaliseErrorCode-CVpyJZ6_.js +0 -2
  294. package/dist/normaliseErrorCode-CVpyJZ6_.js.map +0 -1
  295. package/dist/storeMsisdn-Cjq8_qYH.js +0 -2
  296. package/dist/storeMsisdn-Cjq8_qYH.js.map +0 -1
  297. package/dist/strategySlice-BMNt18ck.js +0 -2
  298. package/dist/strategySlice-BMNt18ck.js.map +0 -1
  299. package/dist/tracker-DaaILhEr.js +0 -2
  300. package/dist/tracker-DaaILhEr.js.map +0 -1
  301. package/dist/types/OneClickTypes-BNg9Ru0u.d.ts +0 -71
  302. package/dist/updateUrlWithParams-C6-BX4TY.js +0 -2
  303. package/dist/updateUrlWithParams-C6-BX4TY.js.map +0 -1
package/dist/moFlow.js CHANGED
@@ -1,2 +1,323 @@
1
- import{__awaiter as t,__generator as r,__read as e,__assign as n}from"tslib";import{createAsyncThunk as o,createSlice as a}from"@reduxjs/toolkit";import{S as i,L as s,F as c,N as u}from"./RemoteDataState-lcf8PfJd.js";import{h as d}from"./handleWaterfallRedirect-DztqrthA.js";import{n as l,r as m}from"./normaliseErrorCode-CVpyJZ6_.js";import{searchToObject as v}from"./searchToObject.js";import{s as f}from"./storeMsisdn-Cjq8_qYH.js";import{t as p}from"./tracker-DaaILhEr.js";import{c as y}from"./cleanSearchParams-Dl7ZDlew.js";import{i as S}from"./strategySlice-BMNt18ck.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"./api-geirVksI.js";var _=function(t){return t((function(t){return t.moFlow.currentState}))};function h(t){var r=t.msisdnEntry;return function(t){return t.type,r(t.result)}}var w=function(n){var o=n.window,a=n.slug,i=n.country,s=n.msisdn,c=n.device,u=n.offer,d=n.rockmanId,l=n.extraParamsQs,m=n.search;return t(void 0,void 0,void 0,(function(){var t,n,v,f,p,S,_;return r(this,(function(r){switch(r.label){case 0:return o.api_ajax_url?[4,fetch(o.api_ajax_url).then((function(t){return t.json()}))]:[3,2];case 1:return n=r.sent(),[3,3];case 2:n=null,r.label=3;case 3:return t=n,m=y(m),v={action:"trigger-message",slug:a,country:i,msisdn:s,device:c,offerId:u,rockman_id:d,page:encodeURIComponent(null===(_=null==o?void 0:o.location)||void 0===_?void 0:_.href),sam_g_token:o.reCaptchaToken||"",language_code:o.languageCode||"",partner_form_action:(null==t?void 0:t.form_action)?encodeURIComponent(null==t?void 0:t.form_action):"",antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||""},f=Object.entries(v).filter((function(t){var r=e(t,2);return r[0],r[1]})).map((function(t){var r=e(t,2),n=r[0],o=r[1];return"".concat(n,"=").concat(o)})).join("&"),p=o.DEV_BASE_URL||"",S="".concat(p,"/tallyman/v1/?").concat(f).concat(m?"&".concat(m):"","&").concat(l),o.MOCK_TRIGGER_MESSAGE_RESPONSE?[2,o.MOCK_TRIGGER_MESSAGE_RESPONSE]:[2,fetch(S).then((function(t){return t.json()}))]}}))}))};function j(e,o,a,i){var s,c;return t(this,void 0,void 0,(function(){var t;return r(this,(function(r){return t=n(n({},o||{}),{offer:null===(c=null===(s=e.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===c?void 0:c.offer}),[2,E(e,t,a,i)]}))}))}function E(e,o,a,i){var s,c;return t(this,void 0,void 0,(function(){var t,u,d,m,v,f,p,y,S,_,h,j;return r(this,(function(r){switch(r.label){case 0:return t=o.slug,u=o.country,d=o.device,m=o.offer,v=e.location.search.substr(1)||"",f=i?"&".concat(Object.keys(i).map((function(t){return"".concat(t,"=").concat(i[t])})).join("&")):"",p=(null===(s=a.match(/\d+/gi))||void 0===s?void 0:s.join(""))||"",y=e.pac_analytics.visitor.rockmanId,[4,w({window:e,slug:t,country:u,msisdn:p,device:d,offer:m,rockmanId:y,search:v,extraParamsQs:f})];case 1:if(!1===(S=r.sent()).success)throw _="ALREADY SUBSCRIBED"===S.message?"AlreadySubscribed":"InvalidMsisdn",h=S.error_code?l(S.error_code):_,j=new Error("".concat(h,":\n").concat(S.message)),Object.assign(j,{type:h,productUrl:null!==(c=S.product_url)&&void 0!==c?c:""}),j;return[2,n(n({},S),{keyword:S.displayKeyword})]}}))}))}var g={currentState:{type:"MSISDNEntry",result:i({keyword:"TEST OK",shortcode:"777"})}},b={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},I={currentState:{type:"MSISDNEntry",result:u()}},M=function(t){var r=v(t);if(!r["mock-flow"])return I;switch(r["current-state"]){case"msisdn-entry-failure-state":return b;case"msisdn-entry-success-state":case"check-subscription-success-state":return g;default:return console.error("Mock Flow not supported"),I}}(window),k=o("moFlow/submitMSISDNAction",(function(e,o){var a=e.window,s=e.msisdn,c=e.extraParams,u=o.getState,l=o.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,o,v,y,S,_,h,w,E,g,b,I,M;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(h=null===(_=null===(S=null==t?void 0:t.strategy)||void 0===S?void 0:S.currentState)||void 0===_?void 0:_.data)||void 0===h?void 0:h.config))return[2,l({errorType:"UnexpectedState"})];e=t.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),p.advancedInFlow("tallyman.v1-mo","msisdn-submitted",{msisdn:s}),[4,j(a,e,s,c)];case 2:return o=r.sent(),p.advancedInFlow("tallyman.v1-mo","msisdn-submission-success",{msisdn:s}),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,f(s).then((function(t){t&&t.data&&t.data.success?p.customEvent("Flow","advance-auto","msisdn-stored-success"):p.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){p.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return[2,{type:"MSISDNEntry",result:i(n({},o))}];case 5:return v=r.sent(),console.warn(v),y=v.type,p.recedeInFlow("tallyman.v1-mo","msisdn-submission-failure",{msisdn:s,errorType:y}),m.includes(y)&&(null===(E=null===(w=null==a?void 0:a.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===E?void 0:E.waterfallRedirectUrl)&&(p.customEvent("tallyman.v1-mo","redirect","waterfall-redirect",{redirect_url:null===(b=null===(g=null==a?void 0:a.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===b?void 0:b.waterfallRedirectUrl,errorType:y}),d(null===(M=null===(I=null==a?void 0:a.pac_analytics)||void 0===I?void 0:I.visitor)||void 0===M?void 0:M.waterfallRedirectUrl)),[2,l({errorType:y,productUrl:v.productUrl})];case 6:return[2]}}))}))})),R=o("moFlow/backToStartAction",(function(e,n){var o=n.dispatch,a=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){return r(this,(function(t){try{p.recedeInFlow("tallyman.v1-mo","mo-state","requested to change phone number"),o(S())}catch(t){return console.warn(t),[2,a({errorType:"UnexpectedState"})]}return[2]}))}))})),T=a({name:"moFlow",initialState:M,reducers:{},extraReducers:function(t){t.addCase(k.pending,(function(t){t.currentState={type:"MSISDNEntry",result:s()}})).addCase(k.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(k.rejected,(function(t,r){t.currentState={type:"MSISDNEntry",result:c(r.payload)}}))}}),F=T.reducer;T.actions;export{R as backToStartAction,h as moFlowMatch,F as moFlowReducer,k as submitMSISDNAction,_ as useMoFlowState};
1
+ import { __awaiter, __generator, __read, __assign } from 'tslib';
2
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
+ import { S as Success, L as Loading, F as Failure, N as NothingYet } from './RemoteDataState-CwHLI23e.js';
4
+ import { h as handleWaterfallRedirect } from './handleWaterfallRedirect-h5K2zX3N.js';
5
+ import { n as normaliseErrorCode, r as redirectErrorTypes } from './normaliseErrorCode-CBLYxW-a.js';
6
+ import { searchToObject } from './searchToObject.js';
7
+ import { s as storeMsisdn } from './storeMsisdn-ChiBh8mI.js';
8
+ import { t as tracker } from './tracker-B_zsMRN2.js';
9
+ import { c as cleanSearchParams } from './cleanSearchParams-B2jK3H1j.js';
10
+ import { i as identifyStrategy } from './strategySlice-DEsw1xc-.js';
11
+ import 'pacman-client';
12
+ import 'uuid';
13
+ import './getConfig.js';
14
+ import './formatNumberToE164-oPCiETQk.js';
15
+ import './api-oPdBWsMC.js';
16
+
17
+ var useMoFlowState = function (useSelector) {
18
+ var currentState = useSelector(function (state) { return state.moFlow.currentState; });
19
+ return currentState;
20
+ };
21
+
22
+ function moFlowMatch(_a) {
23
+ var msisdnEntry = _a.msisdnEntry;
24
+ return function (state) {
25
+ switch (state.type) {
26
+ case 'MSISDNEntry':
27
+ return msisdnEntry(state.result);
28
+ default:
29
+ // TODO - this should be an error or something
30
+ return msisdnEntry(state.result);
31
+ }
32
+ };
33
+ }
34
+
35
+ var triggerMessage = function (_a) {
36
+ var window = _a.window, slug = _a.slug, country = _a.country, msisdn = _a.msisdn, device = _a.device, offer = _a.offer, rockmanId = _a.rockmanId, extraParamsQs = _a.extraParamsQs, search = _a.search;
37
+ return __awaiter(void 0, void 0, void 0, function () {
38
+ var partnerAjaxResopnse, _b, params, queryString, host, url;
39
+ var _c;
40
+ return __generator(this, function (_d) {
41
+ switch (_d.label) {
42
+ case 0:
43
+ if (!window.api_ajax_url) return [3 /*break*/, 2];
44
+ return [4 /*yield*/, fetch(window.api_ajax_url).then(function (x) { return x.json(); })];
45
+ case 1:
46
+ _b = _d.sent();
47
+ return [3 /*break*/, 3];
48
+ case 2:
49
+ _b = null;
50
+ _d.label = 3;
51
+ case 3:
52
+ partnerAjaxResopnse = _b;
53
+ // Remove conflicting params from url
54
+ search = cleanSearchParams(search);
55
+ params = {
56
+ action: 'trigger-message',
57
+ slug: slug,
58
+ country: country,
59
+ msisdn: msisdn,
60
+ device: device,
61
+ offerId: offer,
62
+ rockman_id: rockmanId,
63
+ page: encodeURIComponent((_c = window === null || window === void 0 ? void 0 : window.location) === null || _c === void 0 ? void 0 : _c.href),
64
+ sam_g_token: window.reCaptchaToken || '',
65
+ language_code: window.languageCode || '',
66
+ partner_form_action: (partnerAjaxResopnse === null || partnerAjaxResopnse === void 0 ? void 0 : partnerAjaxResopnse.form_action) ? encodeURIComponent(partnerAjaxResopnse === null || partnerAjaxResopnse === void 0 ? void 0 : partnerAjaxResopnse.form_action) : '',
67
+ antifraud_id: window.antifraud_id || '',
68
+ // More specific antifraud IDs will eventuallly replace antifraud_id
69
+ // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25
70
+ antifraud_id_js_code: window.antifraud_id_js_code || '',
71
+ antifraud_id_js_link: window.antifraud_id_js_link || ''
72
+ };
73
+ queryString = Object.entries(params)
74
+ .filter(function (_a) {
75
+ var _b = __read(_a, 2); _b[0]; var value = _b[1];
76
+ return value;
77
+ })
78
+ .map(function (_a) {
79
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
80
+ return "".concat(key, "=").concat(value);
81
+ })
82
+ .join('&');
83
+ host = window.DEV_BASE_URL || '';
84
+ url = "".concat(host, "/tallyman/v1/?").concat(queryString).concat(search ? "&".concat(search) : '', "&").concat(extraParamsQs);
85
+ if (window.MOCK_TRIGGER_MESSAGE_RESPONSE) {
86
+ return [2 /*return*/, window.MOCK_TRIGGER_MESSAGE_RESPONSE];
87
+ }
88
+ return [2 /*return*/, fetch(url).then(function (x) { return x.json(); })];
89
+ }
90
+ });
91
+ });
92
+ };
93
+
94
+ function submitMSISDN(window, maybeConfig, internationalMSISDN, extraParams) {
95
+ var _a, _b;
96
+ return __awaiter(this, void 0, void 0, function () {
97
+ var config;
98
+ return __generator(this, function (_c) {
99
+ config = __assign(__assign({}, (maybeConfig || {})), { offer: (_b = (_a = window.pac_analytics) === null || _a === void 0 ? void 0 : _a.visitor) === null || _b === void 0 ? void 0 : _b.offer });
100
+ return [2 /*return*/, submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams)];
101
+ });
102
+ });
103
+ }
104
+ function submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams) {
105
+ var _a, _b;
106
+ return __awaiter(this, void 0, void 0, function () {
107
+ var slug, country, device, offer, search, extraParamsQs, msisdn, rockmanId, result, defaultType, type, error;
108
+ return __generator(this, function (_c) {
109
+ switch (_c.label) {
110
+ case 0:
111
+ slug = config.slug, country = config.country, device = config.device, offer = config.offer;
112
+ search = window.location.search.substr(1) || '';
113
+ extraParamsQs = !extraParams
114
+ ? ''
115
+ : "&".concat(Object.keys(extraParams)
116
+ .map(function (k) { return "".concat(k, "=").concat(extraParams[k]); })
117
+ .join('&'));
118
+ msisdn = ((_a = internationalMSISDN.match(/\d+/gi)) === null || _a === void 0 ? void 0 : _a.join('')) || '';
119
+ rockmanId = window.pac_analytics.visitor.rockmanId;
120
+ return [4 /*yield*/, triggerMessage({
121
+ window: window,
122
+ slug: slug,
123
+ country: country,
124
+ msisdn: msisdn,
125
+ device: device,
126
+ offer: offer,
127
+ rockmanId: rockmanId,
128
+ search: search,
129
+ extraParamsQs: extraParamsQs
130
+ })];
131
+ case 1:
132
+ result = _c.sent();
133
+ if (result.success === false) {
134
+ defaultType = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMsisdn';
135
+ type = result.error_code ? normaliseErrorCode(result.error_code) : defaultType;
136
+ error = new Error("".concat(type, ":\n").concat(result.message));
137
+ Object.assign(error, {
138
+ type: type,
139
+ productUrl: (_b = result.product_url) !== null && _b !== void 0 ? _b : ''
140
+ });
141
+ throw error;
142
+ }
143
+ else {
144
+ return [2 /*return*/, __assign(__assign({}, result), { keyword: result.displayKeyword })]; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword
145
+ }
146
+ }
147
+ });
148
+ });
149
+ }
150
+ // export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>
151
+ // !!window.pac_analytics.visitor['x-requested-with'] &&
152
+ // window.pac_analytics.visitor['x-requested-with'] !== null &&
153
+ // window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1
154
+ // ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`
155
+ // : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))
156
+ // ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`
157
+ // : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;
158
+
159
+ var mockedMSISDNEntrySuccess = {
160
+ currentState: {
161
+ type: 'MSISDNEntry',
162
+ result: Success({
163
+ keyword: 'TEST OK',
164
+ shortcode: '777'
165
+ })
166
+ }
167
+ };
168
+ var mockedMSISDNEntryFailure = {
169
+ currentState: {
170
+ type: 'MSISDNEntry',
171
+ result: Failure({
172
+ errorType: 'InvalidMSISDN',
173
+ error: 'Invalid Mobile Number'
174
+ })
175
+ }
176
+ };
177
+ var defaultInitialState = {
178
+ currentState: {
179
+ type: 'MSISDNEntry',
180
+ result: NothingYet()
181
+ }
182
+ };
183
+ var setInitialState = function (window) {
184
+ var search = searchToObject(window);
185
+ if (search['mock-flow']) {
186
+ switch (search['current-state']) {
187
+ case 'msisdn-entry-failure-state':
188
+ return mockedMSISDNEntryFailure;
189
+ case 'msisdn-entry-success-state':
190
+ return mockedMSISDNEntrySuccess;
191
+ case 'check-subscription-success-state':
192
+ return mockedMSISDNEntrySuccess;
193
+ default:
194
+ console.error('Mock Flow not supported');
195
+ return defaultInitialState;
196
+ }
197
+ }
198
+ else {
199
+ return defaultInitialState;
200
+ }
201
+ };
202
+ var initialState = setInitialState(window);
203
+ /**
204
+ * submitMSISDNAction
205
+ * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}
206
+
207
+ * Calls trigger-message api that returns a short code and key word
208
+ * Sets completed stated
209
+ */
210
+ var submitMSISDNAction = createAsyncThunk('moFlow/submitMSISDNAction', function (_a, _b) {
211
+ var window = _a.window, msisdn = _a.msisdn, extraParams = _a.extraParams;
212
+ var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
213
+ return __awaiter(void 0, void 0, void 0, function () {
214
+ var state, config, keywordAndShortcode, ex_1, errorType;
215
+ var _c, _d, _e, _f, _g, _h, _j, _k, _l;
216
+ return __generator(this, function (_m) {
217
+ switch (_m.label) {
218
+ case 0:
219
+ state = getState();
220
+ if (!((_e = (_d = (_c = state === null || state === void 0 ? void 0 : state.strategy) === null || _c === void 0 ? void 0 : _c.currentState) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.config)) {
221
+ return [2 /*return*/, rejectWithValue({
222
+ errorType: 'UnexpectedState'
223
+ })];
224
+ }
225
+ config = state.strategy.currentState.data.config;
226
+ _m.label = 1;
227
+ case 1:
228
+ _m.trys.push([1, 5, , 6]);
229
+ // Start Trigger Message
230
+ tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn: msisdn });
231
+ return [4 /*yield*/, submitMSISDN(window, config, msisdn, extraParams)];
232
+ case 2:
233
+ keywordAndShortcode = _m.sent();
234
+ tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn: msisdn });
235
+ if (!(extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true')) return [3 /*break*/, 4];
236
+ return [4 /*yield*/, storeMsisdn(msisdn)
237
+ .then(function (data) {
238
+ if (data && data.data && data.data.success) {
239
+ tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');
240
+ }
241
+ else {
242
+ tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');
243
+ }
244
+ })
245
+ .catch(function (error) {
246
+ tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);
247
+ })];
248
+ case 3:
249
+ _m.sent();
250
+ _m.label = 4;
251
+ case 4:
252
+ // End Store Msisdn
253
+ return [2 /*return*/, {
254
+ type: 'MSISDNEntry',
255
+ result: Success(__assign({}, keywordAndShortcode))
256
+ }];
257
+ case 5:
258
+ ex_1 = _m.sent();
259
+ console.warn(ex_1);
260
+ errorType = ex_1.type;
261
+ tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {
262
+ msisdn: msisdn,
263
+ errorType: errorType
264
+ });
265
+ if (redirectErrorTypes.includes(errorType) && ((_g = (_f = window === null || window === void 0 ? void 0 : window.pac_analytics) === null || _f === void 0 ? void 0 : _f.visitor) === null || _g === void 0 ? void 0 : _g.waterfallRedirectUrl)) {
266
+ tracker.customEvent('Flow', 'redirect', 'waterfall-redirect', {
267
+ redirect_url: (_j = (_h = window === null || window === void 0 ? void 0 : window.pac_analytics) === null || _h === void 0 ? void 0 : _h.visitor) === null || _j === void 0 ? void 0 : _j.waterfallRedirectUrl,
268
+ errorType: errorType
269
+ });
270
+ handleWaterfallRedirect((_l = (_k = window === null || window === void 0 ? void 0 : window.pac_analytics) === null || _k === void 0 ? void 0 : _k.visitor) === null || _l === void 0 ? void 0 : _l.waterfallRedirectUrl);
271
+ }
272
+ return [2 /*return*/, rejectWithValue({
273
+ errorType: errorType,
274
+ productUrl: ex_1.productUrl
275
+ })];
276
+ case 6: return [2 /*return*/];
277
+ }
278
+ });
279
+ });
280
+ });
281
+ var backToStartAction = createAsyncThunk('moFlow/backToStartAction', function (_, _a) {
282
+ var dispatch = _a.dispatch, rejectWithValue = _a.rejectWithValue;
283
+ return __awaiter(void 0, void 0, void 0, function () {
284
+ return __generator(this, function (_b) {
285
+ try {
286
+ tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');
287
+ dispatch(identifyStrategy());
288
+ }
289
+ catch (ex) {
290
+ console.warn(ex);
291
+ return [2 /*return*/, rejectWithValue({
292
+ errorType: 'UnexpectedState'
293
+ })];
294
+ }
295
+ return [2 /*return*/];
296
+ });
297
+ });
298
+ });
299
+ var moFlowSlice = createSlice({
300
+ name: 'moFlow',
301
+ initialState: initialState,
302
+ reducers: {},
303
+ extraReducers: function (builder) {
304
+ builder
305
+ .addCase(submitMSISDNAction.pending, function (state) {
306
+ state.currentState = { type: 'MSISDNEntry', result: Loading() };
307
+ })
308
+ .addCase(submitMSISDNAction.fulfilled, function (state, action) {
309
+ state.currentState = action.payload;
310
+ })
311
+ .addCase(submitMSISDNAction.rejected, function (state, action) {
312
+ state.currentState = {
313
+ type: 'MSISDNEntry',
314
+ result: Failure(action.payload)
315
+ };
316
+ });
317
+ }
318
+ });
319
+ // Export reducers and actions
320
+ var moFlowReducer = moFlowSlice.reducer; moFlowSlice.actions;
321
+
322
+ export { backToStartAction, moFlowMatch, moFlowReducer, submitMSISDNAction, useMoFlowState };
2
323
  //# sourceMappingURL=moFlow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"moFlow.js","sources":["../src/flows/moFlow/hooks/useMoFlowState.ts","../src/flows/moFlow/match.ts","../src/flows/moFlow/api.ts","../src/flows/moFlow/main.ts","../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs,\n search\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : '',\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || ''\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${search ? `&${search}` : ''}&${extraParamsQs}`;\n\n if (window.MOCK_TRIGGER_MESSAGE_RESPONSE) {\n return window.MOCK_TRIGGER_MESSAGE_RESPONSE;\n }\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IGoogleReCaptcha, IKeywordShortcode, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { normaliseErrorCode } from '../../utilities/normaliseErrorCode';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n // pick a default based on message, then override with error_code if available\n const defaultType = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMsisdn';\n\n const type = result.error_code ? normaliseErrorCode(result.error_code) : defaultType;\n\n // build, augment, log and throw\n const error = new Error(`${type}:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n\n Object.assign(error, {\n type,\n productUrl: result.product_url ?? ''\n });\n\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = decodeURIComponent(checkResult.product_url);\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { handleWaterfallRedirect } from '../../utilities/handleWaterfallRedirect';\nimport { redirectErrorTypes } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy } from '../strategy';\nimport submitMSISDN from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n case 'check-subscription-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n\n const errorType = ex.type as MSISDNEntryErrorTypes;\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType\n });\n\n if (redirectErrorTypes.includes(errorType) && window?.pac_analytics?.visitor?.waterfallRedirectUrl) {\n tracker.customEvent('tallyman.v1-mo', 'redirect', 'waterfall-redirect', {\n redirect_url: window?.pac_analytics?.visitor?.waterfallRedirectUrl,\n errorType\n });\n handleWaterfallRedirect(window?.pac_analytics?.visitor?.waterfallRedirectUrl);\n }\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nexport const backToStartAction = createAsyncThunk<\n any,\n any,\n {\n rejectValue: any; // Type for rejectWithValue\n }\n>('moFlow/backToStartAction', async (_, { dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["useMoFlowState","useSelector","state","moFlow","currentState","moFlowMatch","_a","msisdnEntry","type","result","triggerMessage","window","slug","country","msisdn","device","offer","rockmanId","extraParamsQs","search","api_ajax_url","fetch","then","x","json","_b","_d","partnerAjaxResopnse","cleanSearchParams","params","action","offerId","rockman_id","page","encodeURIComponent","_c","location","href","sam_g_token","reCaptchaToken","language_code","languageCode","partner_form_action","form_action","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","queryString","Object","entries","filter","__read","map","key","value","concat","join","host","DEV_BASE_URL","url","MOCK_TRIGGER_MESSAGE_RESPONSE","submitMSISDN","maybeConfig","internationalMSISDN","extraParams","config","pac_analytics","visitor","submitMSISDNWithConfig","substr","keys","k","match","sent","success","defaultType","message","error_code","normaliseErrorCode","error","Error","assign","productUrl","product_url","__assign","keyword","displayKeyword","mockedMSISDNEntrySuccess","RDS.Success","shortcode","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","searchToObject","console","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","_e","strategy","data","tracker","advancedInFlow","keywordAndShortcode","_m","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","redirectErrorTypes","includes","_f","_g","waterfallRedirectUrl","redirect_url","_j","_h","handleWaterfallRedirect","_l","_k","backToStartAction","_","dispatch","identifyStrategy","ex","moFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moFlowReducer","reducer","actions"],"mappings":"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"}
1
+ {"version":3,"file":"moFlow.js","sources":["../../src/flows/moFlow/hooks/useMoFlowState.ts","../../src/flows/moFlow/match.ts","../../src/flows/moFlow/api.ts","../../src/flows/moFlow/main.ts","../../src/flows/moFlow/moFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoTypes';\n\nfunction moFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moFlowMatch };\n","import { IGoogleReCaptcha, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst getGoogleCaptcha = async (\n window: Window,\n country: string,\n slug: string,\n device: string,\n domain: string\n): Promise<IGoogleReCaptcha> => {\n const host = (window as Window).DEV_BASE_URL || '';\n\n return fetch(\n `${host}/tallyman/helper/?action=google-captcha-v3-config&country=${country}&slug=${slug}&device=${device}&domain=${domain}`\n ).then((x) => x.json());\n};\n\nconst triggerMessage = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n extraParamsQs,\n search\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n search: string;\n extraParamsQs: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // introduced https://www.notion.so/sammedia/CH-Agency-Bodkinco-Integration-ea1600ad175f451a9d351b6763ad7992\n const partnerAjaxResopnse: {\n form_action: string;\n } = window.api_ajax_url ? await fetch(window.api_ajax_url).then((x) => x.json()) : null;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const params = {\n action: 'trigger-message',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: encodeURIComponent(window?.location?.href),\n sam_g_token: window.reCaptchaToken || '',\n language_code: window.languageCode || '',\n partner_form_action: partnerAjaxResopnse?.form_action ? encodeURIComponent(partnerAjaxResopnse?.form_action) : '',\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || ''\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = (window as Window).DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${search ? `&${search}` : ''}&${extraParamsQs}`;\n\n if (window.MOCK_TRIGGER_MESSAGE_RESPONSE) {\n return window.MOCK_TRIGGER_MESSAGE_RESPONSE;\n }\n return fetch(url).then((x) => x.json());\n};\n\nexport { getGoogleCaptcha, triggerMessage };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { IConfig } from '../../common-types/Strategy';\nimport { checkSubscriptionByRockmanIdOnly } from '../../sharedApi/checkSubscriptionByRockmanIdOnly';\nimport { IGoogleReCaptcha, IKeywordShortcode, IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoTypes';\nimport { loop } from '../../utilities/helpers';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { normaliseErrorCode } from '../../utilities/normaliseErrorCode';\nimport { getGoogleCaptcha, triggerMessage } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const config: any = { ...(maybeConfig || {}), offer: window.pac_analytics?.visitor?.offer };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport const getGoogleReCaptchaConfig = async ({\n window,\n slug,\n country,\n device\n}: IConfig & { window: Window }): Promise<IGoogleReCaptcha> => {\n const domain = window.location.hostname;\n const result: IGoogleReCaptcha = await getGoogleCaptcha(window, country, slug, device, domain);\n if (result.success === true) {\n const srcUrl = `https://www.google.com/recaptcha/api.js?render=${result.site_key}`;\n loadScriptSrc({ url: srcUrl, key: result.site_key, isRecaptcha: true });\n }\n return result;\n};\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<IKeywordShortcode> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || '';\n const { rockmanId } = window.pac_analytics.visitor;\n\n const result: IMSISDNSubmissionResult = await triggerMessage({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n search,\n extraParamsQs\n });\n\n if (result.success === false) {\n // pick a default based on message, then override with error_code if available\n const defaultType = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMsisdn';\n\n const type = result.error_code ? normaliseErrorCode(result.error_code) : defaultType;\n\n // build, augment, log and throw\n const error = new Error(`${type}:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n\n Object.assign(error, {\n type,\n productUrl: result.product_url ?? ''\n });\n\n throw error;\n } else {\n return { ...result, keyword: result.displayKeyword }; // based on discussion with Chanaka to avoid confusion in set up on bupper. Click2sms and mo will use display keyword\n }\n}\n\nexport async function moCheckSubscription(window: Window): Promise<string> {\n const { rockmanId } = window.pac_analytics.visitor;\n const check: () => Promise<ICheckSubscriptionResult> = () => checkSubscriptionByRockmanIdOnly({ window, rockmanId });\n\n const checkResult: ICheckSubscriptionResult = await loop(check, 60, (r) => r.success, 0);\n\n if (checkResult.success === true && checkResult.product_url && checkResult.product_url !== '') {\n window.location.href = decodeURIComponent(checkResult.product_url);\n return checkResult.product_url;\n }\n const error = new Error(`${'SubscriptionFailed'}:\\n${checkResult.message}`) as IError & { type: string };\n error.type = 'SubscriptionFailed';\n throw error;\n}\n\n// export const formatSMSLink = (keywordAndShortcode: IKeywordShortcode) =>\n// !!window.pac_analytics.visitor['x-requested-with'] &&\n// window.pac_analytics.visitor['x-requested-with'] !== null &&\n// window.pac_analytics.visitor['x-requested-with'].indexOf('com.facebook') !== -1\n// ? `sms://${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`\n// : typeof navigator !== 'undefined' && (/iPhone/i.test(navigator.userAgent) || /Mac OS/i.test(navigator.userAgent))\n// ? `sms:${keywordAndShortcode.shortcode}&body=${keywordAndShortcode.keyword}`\n// : `sms:${keywordAndShortcode.shortcode}?body=${keywordAndShortcode.keyword}`;\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { handleWaterfallRedirect } from '../../utilities/handleWaterfallRedirect';\nimport { redirectErrorTypes } from '../../utilities/normaliseErrorCode';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy } from '../strategy';\nimport submitMSISDN from './main';\n\nexport const mockedMSISDNEntrySuccess: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n keyword: 'TEST OK',\n shortcode: '777'\n })\n }\n};\n\nexport const mockedMSISDNEntryFailure: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\nexport interface MoFlowState {\n currentState: {\n type: 'MSISDNEntry';\n result: RDS.RemoteDataState<any, any>; // Replace any with your specific error and data types\n };\n}\n\nconst defaultInitialState: MoFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n case 'check-subscription-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls trigger-message api that returns a short code and key word\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Trigger Message\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submitted', { msisdn });\n const keywordAndShortcode = await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo', 'msisdn-submission-success', { msisdn });\n // End Trigger Message\n\n // Start Store Msisdn\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End Store Msisdn\n\n return {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ ...keywordAndShortcode })\n };\n } catch (ex) {\n console.warn(ex);\n\n const errorType = ex.type as MSISDNEntryErrorTypes;\n\n tracker.recedeInFlow('tallyman.v1-mo', 'msisdn-submission-failure', {\n msisdn,\n errorType\n });\n\n if (redirectErrorTypes.includes(errorType) && window?.pac_analytics?.visitor?.waterfallRedirectUrl) {\n tracker.customEvent('Flow', 'redirect', 'waterfall-redirect', {\n redirect_url: window?.pac_analytics?.visitor?.waterfallRedirectUrl,\n errorType\n });\n handleWaterfallRedirect(window?.pac_analytics?.visitor?.waterfallRedirectUrl);\n }\n return rejectWithValue({\n errorType,\n productUrl: ex.productUrl\n });\n }\n});\n\nexport const backToStartAction = createAsyncThunk<\n any,\n any,\n {\n rejectValue: any; // Type for rejectWithValue\n }\n>('moFlow/backToStartAction', async (_, { dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-mo', 'mo-state', 'requested to change phone number');\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\nconst moFlowSlice = createSlice({\n name: 'moFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moFlowReducer, actions: moFlowActions } = moFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoFlowState = (state: any) => state.moFlow;\n"],"names":["RDS.Success","RDS.Failure","RDS.NothingYet","RDS.Loading"],"mappings":"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"}