@solucx/react-native-solucx-widget 0.2.4 → 2.0.7

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 (256) hide show
  1. package/README.md +526 -182
  2. package/lib/SoluCXWidget.d.ts +50 -7
  3. package/lib/SoluCXWidget.d.ts.map +1 -1
  4. package/lib/SoluCXWidget.js +105 -100
  5. package/lib/SoluCXWidget.js.map +1 -1
  6. package/lib/SoluCXWidgetHost.d.ts +3 -0
  7. package/lib/SoluCXWidgetHost.d.ts.map +1 -0
  8. package/lib/SoluCXWidgetHost.js +34 -0
  9. package/lib/SoluCXWidgetHost.js.map +1 -0
  10. package/lib/SoluCXWidgetView.d.ts +12 -0
  11. package/lib/SoluCXWidgetView.d.ts.map +1 -0
  12. package/lib/SoluCXWidgetView.js +61 -0
  13. package/lib/SoluCXWidgetView.js.map +1 -0
  14. package/lib/components/CloseButton.d.ts +1 -1
  15. package/lib/components/CloseButton.d.ts.map +1 -1
  16. package/lib/components/CloseButton.js +4 -1
  17. package/lib/components/CloseButton.js.map +1 -1
  18. package/lib/components/InlineWidget.d.ts.map +1 -1
  19. package/lib/components/InlineWidget.js +2 -7
  20. package/lib/components/InlineWidget.js.map +1 -1
  21. package/lib/components/ModalWidget.d.ts +1 -1
  22. package/lib/components/ModalWidget.d.ts.map +1 -1
  23. package/lib/components/ModalWidget.js +3 -16
  24. package/lib/components/ModalWidget.js.map +1 -1
  25. package/lib/components/OverlayWidget.d.ts.map +1 -1
  26. package/lib/components/OverlayWidget.js +5 -15
  27. package/lib/components/OverlayWidget.js.map +1 -1
  28. package/lib/components/index.d.ts +5 -0
  29. package/lib/components/index.d.ts.map +1 -0
  30. package/lib/components/index.js +12 -0
  31. package/lib/components/index.js.map +1 -0
  32. package/lib/constants/Constants.d.ts +11 -0
  33. package/lib/constants/Constants.d.ts.map +1 -1
  34. package/lib/constants/Constants.js +16 -1
  35. package/lib/constants/Constants.js.map +1 -1
  36. package/lib/{interfaces → domain}/WidgetCallbacks.d.ts +2 -2
  37. package/lib/domain/WidgetCallbacks.d.ts.map +1 -0
  38. package/lib/domain/WidgetCallbacks.js.map +1 -0
  39. package/{src/interfaces/WidgetData.ts → lib/domain/WidgetData.d.ts} +5 -2
  40. package/lib/domain/WidgetData.d.ts.map +1 -0
  41. package/lib/{interfaces → domain}/WidgetData.js.map +1 -1
  42. package/lib/domain/WidgetDisplayResult.d.ts +6 -0
  43. package/lib/domain/WidgetDisplayResult.d.ts.map +1 -0
  44. package/lib/domain/WidgetDisplayResult.js +3 -0
  45. package/lib/domain/WidgetDisplayResult.js.map +1 -0
  46. package/lib/domain/WidgetOptions.d.ts +27 -0
  47. package/lib/domain/WidgetOptions.d.ts.map +1 -0
  48. package/lib/domain/WidgetOptions.js +30 -0
  49. package/lib/domain/WidgetOptions.js.map +1 -0
  50. package/lib/domain/WidgetResponse.d.ts +5 -0
  51. package/lib/domain/WidgetResponse.d.ts.map +1 -0
  52. package/lib/{interfaces/WidgetOptions.js → domain/WidgetResponse.js} +1 -1
  53. package/lib/domain/WidgetResponse.js.map +1 -0
  54. package/lib/domain/WidgetSamplerLog.d.ts +12 -0
  55. package/lib/domain/WidgetSamplerLog.d.ts.map +1 -0
  56. package/lib/domain/WidgetSamplerLog.js.map +1 -0
  57. package/lib/{interfaces → domain}/index.d.ts +1 -2
  58. package/lib/domain/index.d.ts.map +1 -0
  59. package/lib/{interfaces → domain}/index.js.map +1 -1
  60. package/lib/hooks/index.d.ts +2 -2
  61. package/lib/hooks/index.d.ts.map +1 -1
  62. package/lib/hooks/index.js +5 -5
  63. package/lib/hooks/index.js.map +1 -1
  64. package/lib/hooks/useClientVersionCollector.d.ts +3 -0
  65. package/lib/hooks/useClientVersionCollector.d.ts.map +1 -0
  66. package/lib/{services/ClientVersionCollector.js → hooks/useClientVersionCollector.js} +7 -2
  67. package/lib/hooks/useClientVersionCollector.js.map +1 -0
  68. package/lib/hooks/useHeightAnimation.d.ts +0 -1
  69. package/lib/hooks/useHeightAnimation.d.ts.map +1 -1
  70. package/lib/hooks/useHeightAnimation.js +4 -2
  71. package/lib/hooks/useHeightAnimation.js.map +1 -1
  72. package/lib/hooks/useWidget.d.ts +13 -0
  73. package/lib/hooks/useWidget.d.ts.map +1 -0
  74. package/lib/hooks/useWidget.js +44 -0
  75. package/lib/hooks/useWidget.js.map +1 -0
  76. package/lib/hooks/useWidgetBootstrap.d.ts +21 -0
  77. package/lib/hooks/useWidgetBootstrap.d.ts.map +1 -0
  78. package/lib/hooks/useWidgetBootstrap.js +87 -0
  79. package/lib/hooks/useWidgetBootstrap.js.map +1 -0
  80. package/lib/hooks/useWidgetServices.d.ts +19 -0
  81. package/lib/hooks/useWidgetServices.d.ts.map +1 -0
  82. package/lib/hooks/useWidgetServices.js +34 -0
  83. package/lib/hooks/useWidgetServices.js.map +1 -0
  84. package/lib/hooks/useWidgetUI.d.ts +9 -0
  85. package/lib/hooks/useWidgetUI.d.ts.map +1 -0
  86. package/lib/hooks/useWidgetUI.js +33 -0
  87. package/lib/hooks/useWidgetUI.js.map +1 -0
  88. package/lib/index.d.ts +10 -11
  89. package/lib/index.d.ts.map +1 -1
  90. package/lib/index.js +13 -38
  91. package/lib/index.js.map +1 -1
  92. package/lib/services/UserIdentificationService.d.ts +3 -0
  93. package/lib/services/UserIdentificationService.d.ts.map +1 -0
  94. package/lib/services/UserIdentificationService.js +17 -0
  95. package/lib/services/UserIdentificationService.js.map +1 -0
  96. package/lib/services/WidgetBootstrapService.d.ts +12 -0
  97. package/lib/services/WidgetBootstrapService.d.ts.map +1 -0
  98. package/lib/services/{widgetBootstrapService.js → WidgetBootstrapService.js} +36 -15
  99. package/lib/services/WidgetBootstrapService.js.map +1 -0
  100. package/lib/services/WidgetEventService.d.ts +8 -0
  101. package/lib/services/WidgetEventService.d.ts.map +1 -0
  102. package/lib/services/WidgetEventService.js +14 -0
  103. package/lib/services/WidgetEventService.js.map +1 -0
  104. package/lib/services/WidgetStateManager.d.ts +20 -0
  105. package/lib/services/WidgetStateManager.d.ts.map +1 -0
  106. package/lib/services/WidgetStateManager.js +93 -0
  107. package/lib/services/WidgetStateManager.js.map +1 -0
  108. package/lib/services/WidgetValidationService.d.ts +17 -0
  109. package/lib/services/WidgetValidationService.d.ts.map +1 -0
  110. package/lib/services/WidgetValidationService.js +132 -0
  111. package/lib/services/WidgetValidationService.js.map +1 -0
  112. package/lib/services/events/EventHandlerFactory.d.ts +18 -0
  113. package/lib/services/events/EventHandlerFactory.d.ts.map +1 -0
  114. package/lib/services/events/EventHandlerFactory.js +67 -0
  115. package/lib/services/events/EventHandlerFactory.js.map +1 -0
  116. package/lib/services/events/EventHandlers.d.ts +10 -0
  117. package/lib/services/events/EventHandlers.d.ts.map +1 -0
  118. package/lib/services/events/EventHandlers.js +72 -0
  119. package/lib/services/events/EventHandlers.js.map +1 -0
  120. package/lib/services/events/index.d.ts +3 -0
  121. package/lib/services/events/index.d.ts.map +1 -0
  122. package/lib/services/events/index.js +21 -0
  123. package/lib/services/events/index.js.map +1 -0
  124. package/lib/services/height/HeightStrategies.d.ts +3 -0
  125. package/lib/services/height/HeightStrategies.d.ts.map +1 -0
  126. package/lib/services/height/HeightStrategies.js +14 -0
  127. package/lib/services/height/HeightStrategies.js.map +1 -0
  128. package/lib/services/storage/AsyncStorageService.d.ts +13 -0
  129. package/lib/services/storage/AsyncStorageService.d.ts.map +1 -0
  130. package/lib/services/storage/AsyncStorageService.js +73 -0
  131. package/lib/services/storage/AsyncStorageService.js.map +1 -0
  132. package/lib/services/storage/IStorageService.d.ts +30 -0
  133. package/lib/services/storage/IStorageService.d.ts.map +1 -0
  134. package/lib/services/storage/IStorageService.js +3 -0
  135. package/lib/services/storage/IStorageService.js.map +1 -0
  136. package/lib/services/storage/StorageIdBuilder.d.ts +11 -0
  137. package/lib/services/storage/StorageIdBuilder.d.ts.map +1 -0
  138. package/lib/services/storage/StorageIdBuilder.js +17 -0
  139. package/lib/services/storage/StorageIdBuilder.js.map +1 -0
  140. package/lib/services/storage/index.d.ts +3 -0
  141. package/lib/services/storage/index.d.ts.map +1 -0
  142. package/lib/services/storage/index.js +6 -0
  143. package/lib/services/storage/index.js.map +1 -0
  144. package/lib/styles/widgetStyles.d.ts +1 -1
  145. package/lib/styles/widgetStyles.d.ts.map +1 -1
  146. package/package.json +8 -2
  147. package/src/SoluCXWidget.ts +144 -0
  148. package/src/SoluCXWidgetHost.tsx +44 -0
  149. package/src/SoluCXWidgetView.tsx +97 -0
  150. package/src/__tests__/ClientVersionCollector.test.ts +5 -5
  151. package/src/__tests__/OverlayWidget.rendering.test.tsx +12 -14
  152. package/src/__tests__/SoluCXWidget.rendering.test.tsx +103 -60
  153. package/src/__tests__/SoluCXWidget.test.ts +448 -0
  154. package/src/__tests__/WidgetValidationService.test.ts +408 -0
  155. package/src/__tests__/e2e/widget-lifecycle.test.tsx +14 -23
  156. package/src/__tests__/index.test.tsx +39 -0
  157. package/src/__tests__/integration/webview-communication-simple.test.tsx +8 -6
  158. package/src/__tests__/integration/webview-communication.test.tsx +127 -130
  159. package/src/__tests__/normalizeWidgetOptions.test.ts +80 -0
  160. package/src/__tests__/useWidgetBootstrap.test.ts +634 -0
  161. package/src/__tests__/useWidgetState.test.ts +56 -13
  162. package/src/__tests__/widgetBootstrapService.test.ts +15 -17
  163. package/src/components/CloseButton.tsx +6 -2
  164. package/src/components/InlineWidget.tsx +4 -9
  165. package/src/components/ModalWidget.tsx +15 -45
  166. package/src/components/OverlayWidget.tsx +5 -15
  167. package/src/components/index.ts +4 -0
  168. package/src/constants/Constants.ts +15 -0
  169. package/src/{interfaces → domain}/WidgetCallbacks.ts +2 -2
  170. package/{lib/interfaces/WidgetData.d.ts → src/domain/WidgetData.ts} +3 -2
  171. package/src/domain/WidgetDisplayResult.ts +16 -0
  172. package/src/domain/WidgetOptions.ts +53 -0
  173. package/src/domain/WidgetResponse.ts +5 -0
  174. package/src/domain/WidgetSamplerLog.ts +11 -0
  175. package/src/{interfaces → domain}/index.ts +1 -2
  176. package/src/hooks/index.ts +2 -2
  177. package/src/{services/ClientVersionCollector.ts → hooks/useClientVersionCollector.ts} +6 -0
  178. package/src/hooks/useHeightAnimation.ts +6 -3
  179. package/src/hooks/useWidget.ts +46 -0
  180. package/src/hooks/useWidgetBootstrap.ts +117 -0
  181. package/src/hooks/useWidgetServices.ts +44 -0
  182. package/src/hooks/useWidgetUI.ts +38 -0
  183. package/src/index.ts +16 -11
  184. package/src/services/UserIdentificationService.ts +14 -0
  185. package/src/services/{widgetBootstrapService.ts → WidgetBootstrapService.ts} +43 -19
  186. package/src/services/WidgetEventService.ts +15 -0
  187. package/src/services/WidgetStateManager.ts +115 -0
  188. package/src/services/WidgetValidationService.ts +149 -0
  189. package/src/services/events/EventHandlerFactory.ts +70 -0
  190. package/src/services/events/EventHandlers.ts +67 -0
  191. package/src/services/events/index.ts +2 -0
  192. package/src/services/height/HeightStrategies.ts +15 -0
  193. package/src/services/storage/AsyncStorageService.ts +74 -0
  194. package/src/services/storage/IStorageService.ts +32 -0
  195. package/src/services/storage/StorageIdBuilder.ts +15 -0
  196. package/src/services/storage/index.ts +2 -0
  197. package/src/styles/widgetStyles.ts +1 -1
  198. package/README.intern.md +0 -490
  199. package/lib/constants/webViewConstants.d.ts +0 -12
  200. package/lib/constants/webViewConstants.d.ts.map +0 -1
  201. package/lib/constants/webViewConstants.js +0 -19
  202. package/lib/constants/webViewConstants.js.map +0 -1
  203. package/lib/hooks/useWidgetHeight.d.ts +0 -13
  204. package/lib/hooks/useWidgetHeight.d.ts.map +0 -1
  205. package/lib/hooks/useWidgetHeight.js +0 -21
  206. package/lib/hooks/useWidgetHeight.js.map +0 -1
  207. package/lib/hooks/useWidgetState.d.ts +0 -15
  208. package/lib/hooks/useWidgetState.d.ts.map +0 -1
  209. package/lib/hooks/useWidgetState.js +0 -79
  210. package/lib/hooks/useWidgetState.js.map +0 -1
  211. package/lib/interfaces/WidgetCallbacks.d.ts.map +0 -1
  212. package/lib/interfaces/WidgetCallbacks.js.map +0 -1
  213. package/lib/interfaces/WidgetData.d.ts.map +0 -1
  214. package/lib/interfaces/WidgetOptions.d.ts +0 -9
  215. package/lib/interfaces/WidgetOptions.d.ts.map +0 -1
  216. package/lib/interfaces/WidgetOptions.js.map +0 -1
  217. package/lib/interfaces/WidgetResponse.d.ts +0 -10
  218. package/lib/interfaces/WidgetResponse.d.ts.map +0 -1
  219. package/lib/interfaces/WidgetResponse.js +0 -12
  220. package/lib/interfaces/WidgetResponse.js.map +0 -1
  221. package/lib/interfaces/WidgetSamplerLog.d.ts +0 -7
  222. package/lib/interfaces/WidgetSamplerLog.d.ts.map +0 -1
  223. package/lib/interfaces/WidgetSamplerLog.js.map +0 -1
  224. package/lib/interfaces/index.d.ts.map +0 -1
  225. package/lib/services/ClientVersionCollector.d.ts +0 -2
  226. package/lib/services/ClientVersionCollector.d.ts.map +0 -1
  227. package/lib/services/ClientVersionCollector.js.map +0 -1
  228. package/lib/services/storage.d.ts +0 -8
  229. package/lib/services/storage.d.ts.map +0 -1
  230. package/lib/services/storage.js +0 -23
  231. package/lib/services/storage.js.map +0 -1
  232. package/lib/services/widgetBootstrapService.d.ts +0 -6
  233. package/lib/services/widgetBootstrapService.d.ts.map +0 -1
  234. package/lib/services/widgetBootstrapService.js.map +0 -1
  235. package/lib/services/widgetEventService.d.ts +0 -19
  236. package/lib/services/widgetEventService.d.ts.map +0 -1
  237. package/lib/services/widgetEventService.js +0 -79
  238. package/lib/services/widgetEventService.js.map +0 -1
  239. package/lib/services/widgetValidationService.d.ts +0 -18
  240. package/lib/services/widgetValidationService.d.ts.map +0 -1
  241. package/lib/services/widgetValidationService.js +0 -71
  242. package/lib/services/widgetValidationService.js.map +0 -1
  243. package/src/SoluCXWidget.tsx +0 -178
  244. package/src/constants/webViewConstants.ts +0 -15
  245. package/src/hooks/useWidgetHeight.ts +0 -38
  246. package/src/hooks/useWidgetState.ts +0 -101
  247. package/src/interfaces/WidgetOptions.ts +0 -8
  248. package/src/interfaces/WidgetResponse.ts +0 -15
  249. package/src/interfaces/WidgetSamplerLog.ts +0 -6
  250. package/src/services/storage.ts +0 -21
  251. package/src/services/widgetEventService.ts +0 -110
  252. package/src/services/widgetValidationService.ts +0 -102
  253. /package/lib/{interfaces → domain}/WidgetCallbacks.js +0 -0
  254. /package/lib/{interfaces → domain}/WidgetData.js +0 -0
  255. /package/lib/{interfaces → domain}/WidgetSamplerLog.js +0 -0
  256. /package/lib/{interfaces → domain}/index.js +0 -0
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useWidgetBootstrap = void 0;
4
+ const react_1 = require("react");
5
+ const WidgetOptions_1 = require("../domain/WidgetOptions");
6
+ const WidgetBootstrapService_1 = require("../services/WidgetBootstrapService");
7
+ const useWidgetBootstrap = ({ soluCXKey, data, userId, options, callbacks, open, hide, validationService, stateManager, }) => {
8
+ const [widgetUri, setWidgetUri] = (0, react_1.useState)(null);
9
+ const [widgetOptions, setWidgetOptions] = (0, react_1.useState)(null);
10
+ const bootstrap = async () => {
11
+ if (!data) {
12
+ callbacks?.onError?.("Widget data is required but was not provided");
13
+ return;
14
+ }
15
+ setWidgetUri(null);
16
+ try {
17
+ const transactionResult = await validationService.shouldDisplayForTransactionAlreadyAnswered(data.transaction_id);
18
+ if (!transactionResult.canDisplay) {
19
+ callbacks?.onBlocked?.(transactionResult.blockReason);
20
+ hide();
21
+ return;
22
+ }
23
+ const rawOptions = options && Object.keys(options).length ? options : await (0, WidgetBootstrapService_1.requestWidgetOptions)(soluCXKey, data.journey);
24
+ const effectiveOptions = (0, WidgetOptions_1.normalizeWidgetOptions)(rawOptions);
25
+ setWidgetOptions(effectiveOptions);
26
+ // Validate BEFORE preflight to avoid unnecessary API calls at scale
27
+ const result = await validationService.shouldDisplayWidget(effectiveOptions, data.transaction_id);
28
+ if (!result.canDisplay) {
29
+ const blockReason = result?.blockReason;
30
+ callbacks?.onBlocked?.(blockReason);
31
+ try {
32
+ await stateManager.updateTimestamp("lastDisplayAttempt");
33
+ }
34
+ catch (err) {
35
+ callbacks?.onError?.("Cannot save display attempt timestamp");
36
+ }
37
+ hide();
38
+ return;
39
+ }
40
+ // Only call preflight after validation passes
41
+ const widgetUrlPayload = await (0, WidgetBootstrapService_1.requestWidgetUrl)(soluCXKey, data, userId);
42
+ if (!widgetUrlPayload.available) {
43
+ const reason = widgetUrlPayload.reason || "for the given parameters";
44
+ callbacks?.onBlocked?.(reason);
45
+ hide();
46
+ return;
47
+ }
48
+ if (!widgetUrlPayload.url) {
49
+ callbacks?.onError?.("Widget URL is missing in the response");
50
+ return;
51
+ }
52
+ callbacks?.onPreOpen?.(userId);
53
+ await open();
54
+ try {
55
+ await stateManager.incrementAttempt();
56
+ const logs = await stateManager.getLogs();
57
+ if (!logs.lastFirstAccess) {
58
+ await stateManager.updateTimestamp("lastFirstAccess");
59
+ }
60
+ await stateManager.updateTimestamp("lastDisplay");
61
+ }
62
+ catch (err) {
63
+ callbacks?.onError?.("Error saving display timestamps");
64
+ }
65
+ setWidgetUri(widgetUrlPayload.url);
66
+ callbacks?.onOpened?.(userId);
67
+ }
68
+ catch (error) {
69
+ let errorMessage = "Unknown error";
70
+ if (error instanceof Error)
71
+ errorMessage = error.message;
72
+ else if (typeof error === "string")
73
+ errorMessage = error;
74
+ else if (error !== null && typeof error === "object")
75
+ errorMessage = JSON.stringify(error);
76
+ callbacks?.onError?.(errorMessage);
77
+ hide();
78
+ }
79
+ };
80
+ return {
81
+ widgetUri,
82
+ widgetOptions,
83
+ bootstrap,
84
+ };
85
+ };
86
+ exports.useWidgetBootstrap = useWidgetBootstrap;
87
+ //# sourceMappingURL=useWidgetBootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWidgetBootstrap.js","sourceRoot":"","sources":["../../src/hooks/useWidgetBootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { WidgetCallbacks, WidgetData } from "../domain";
2
+ import { WidgetEventService } from "../services/WidgetEventService";
3
+ import { WidgetValidationService } from "../services/WidgetValidationService";
4
+ import type { WidgetStateManager } from "../services/WidgetStateManager";
5
+ interface UseWidgetServicesParams {
6
+ hide: () => void;
7
+ resize: (height: string) => void;
8
+ userId: string;
9
+ callbacks?: WidgetCallbacks;
10
+ data: WidgetData;
11
+ stateManager: WidgetStateManager;
12
+ }
13
+ export declare const useWidgetServices: ({ hide, resize, userId, callbacks, data, stateManager }: UseWidgetServicesParams) => {
14
+ eventService: WidgetEventService;
15
+ validationService: WidgetValidationService;
16
+ handleWebViewMessage: (message: string) => Promise<void>;
17
+ };
18
+ export {};
19
+ //# sourceMappingURL=useWidgetServices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWidgetServices.d.ts","sourceRoot":"","sources":["../../src/hooks/useWidgetServices.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,UAAU,uBAAuB;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC;CACpC;AAED,eAAO,MAAM,iBAAiB,GAAI,yDAAyD,uBAAuB;;;oCAarD,MAAM;CAelE,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useWidgetServices = void 0;
4
+ const react_1 = require("react");
5
+ const WidgetEventService_1 = require("../services/WidgetEventService");
6
+ const WidgetValidationService_1 = require("../services/WidgetValidationService");
7
+ const useWidgetServices = ({ hide, resize, userId, callbacks, data, stateManager }) => {
8
+ const eventServiceRef = (0, react_1.useRef)(null);
9
+ if (!eventServiceRef.current) {
10
+ eventServiceRef.current = new WidgetEventService_1.WidgetEventService(hide, resize, userId, data?.transaction_id, callbacks, stateManager);
11
+ }
12
+ const validationServiceRef = (0, react_1.useRef)(null);
13
+ if (!validationServiceRef.current) {
14
+ validationServiceRef.current = new WidgetValidationService_1.WidgetValidationService(stateManager);
15
+ }
16
+ const isForm = (0, react_1.useMemo)(() => Boolean(data?.form_id), [data?.form_id]);
17
+ const handleWebViewMessage = (0, react_1.useCallback)(async (message) => {
18
+ if (message && message.length > 0) {
19
+ try {
20
+ await eventServiceRef.current.handleMessage(message, isForm);
21
+ }
22
+ catch (error) {
23
+ console.error("[useWidgetServices] Error handling widget message:", error);
24
+ }
25
+ }
26
+ }, []);
27
+ return {
28
+ eventService: eventServiceRef.current,
29
+ validationService: validationServiceRef.current,
30
+ handleWebViewMessage,
31
+ };
32
+ };
33
+ exports.useWidgetServices = useWidgetServices;
34
+ //# sourceMappingURL=useWidgetServices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWidgetServices.js","sourceRoot":"","sources":["../../src/hooks/useWidgetServices.ts"],"names":[],"mappings":";;;AAAA,iCAAqD;AAErD,uEAAoE;AACpE,iFAA8E;AAYvE,MAAM,iBAAiB,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAA2B,EAAE,EAAE;IAClH,MAAM,eAAe,GAAG,IAAA,cAAM,EAAC,IAAiC,CAAC,CAAC;IAClE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC3B,eAAe,CAAC,OAAO,GAAG,IAAI,uCAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC1H,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAA,cAAM,EAAC,IAAsC,CAAC,CAAC;IAC5E,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAChC,oBAAoB,CAAC,OAAO,GAAG,IAAI,iDAAuB,CAAC,YAAY,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtE,MAAM,oBAAoB,GAAG,IAAA,mBAAW,EAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAC/D,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC;gBACD,MAAM,eAAe,CAAC,OAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;YAC/E,CAAC;QACL,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACH,YAAY,EAAE,eAAe,CAAC,OAAO;QACrC,iBAAiB,EAAE,oBAAoB,CAAC,OAAO;QAC/C,oBAAoB;KACvB,CAAC;AACN,CAAC,CAAC;AA5BW,QAAA,iBAAiB,qBA4B5B"}
@@ -0,0 +1,9 @@
1
+ import type { WidgetOptions } from "../domain";
2
+ export declare const useWidgetUI: (options?: WidgetOptions) => {
3
+ isWidgetVisible: boolean;
4
+ widgetHeight: number;
5
+ resize: (receivedHeight: number) => void;
6
+ show: () => void;
7
+ hide: () => void;
8
+ };
9
+ //# sourceMappingURL=useWidgetUI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWidgetUI.d.ts","sourceRoot":"","sources":["../../src/hooks/useWidgetUI.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,eAAO,MAAM,WAAW,GAAI,UAAU,aAAa;;;6BAM1B,MAAM;;;CA2B9B,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useWidgetUI = void 0;
4
+ const react_1 = require("react");
5
+ const HeightStrategies_1 = require("../services/height/HeightStrategies");
6
+ const useWidgetUI = (options) => {
7
+ const [isWidgetVisible, setIsWidgetVisible] = (0, react_1.useState)(false);
8
+ const initialHeight = (0, HeightStrategies_1.calculateHeight)(options);
9
+ const [widgetHeight, setWidgetHeight] = (0, react_1.useState)(initialHeight);
10
+ const resize = (0, react_1.useCallback)((receivedHeight) => {
11
+ if (receivedHeight > 0) {
12
+ const newHeight = (0, HeightStrategies_1.calculateHeight)(options, receivedHeight);
13
+ setWidgetHeight(newHeight);
14
+ }
15
+ }, [options]);
16
+ const show = (0, react_1.useCallback)(() => {
17
+ setIsWidgetVisible(true);
18
+ }, []);
19
+ const hide = (0, react_1.useCallback)(() => {
20
+ setIsWidgetVisible(false);
21
+ }, []);
22
+ return {
23
+ // State
24
+ isWidgetVisible,
25
+ widgetHeight,
26
+ // Actions
27
+ resize,
28
+ show,
29
+ hide,
30
+ };
31
+ };
32
+ exports.useWidgetUI = useWidgetUI;
33
+ //# sourceMappingURL=useWidgetUI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWidgetUI.js","sourceRoot":"","sources":["../../src/hooks/useWidgetUI.ts"],"names":[],"mappings":";;;AAAA,iCAAuD;AAEvD,0EAAsE;AAE/D,MAAM,WAAW,GAAG,CAAC,OAAuB,EAAE,EAAE;IACnD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,IAAA,kCAAe,EAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAS,aAAa,CAAC,CAAC;IAExE,MAAM,MAAM,GAAG,IAAA,mBAAW,EACtB,CAAC,cAAsB,EAAE,EAAE;QACvB,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAA,kCAAe,EAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC3D,eAAe,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC,EACD,CAAC,OAAO,CAAC,CACZ,CAAC;IAEF,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC1B,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC1B,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACH,QAAQ;QACR,eAAe;QACf,YAAY;QAEZ,UAAU;QACV,MAAM;QACN,IAAI;QACJ,IAAI;KACP,CAAC;AACN,CAAC,CAAC;AAjCW,QAAA,WAAW,eAiCtB"}
package/lib/index.d.ts CHANGED
@@ -1,12 +1,11 @@
1
- export { SoluCXWidget } from './SoluCXWidget';
2
- export { useWidgetState } from './hooks/useWidgetState';
3
- export { WidgetEventService } from './services/widgetEventService';
4
- export { StorageService } from './services/storage';
5
- export { getDeviceInfo, type DeviceInfo } from './hooks/useDeviceInfoCollector';
6
- export { requestWidgetUrl } from './services/widgetBootstrapService';
7
- export { ModalWidget } from './components/ModalWidget';
8
- export { getWidgetStyles, styles } from './styles/widgetStyles';
9
- export { SDK_NAME, SDK_VERSION } from './constants/Constants';
10
- export { getClientVersion } from './services/ClientVersionCollector';
11
- export * from './interfaces';
1
+ import { SoluCXWidgetView } from './SoluCXWidgetView';
2
+ import { SoluCXWidget as SoluCXWidgetController } from './SoluCXWidget';
3
+ type SoluCXWidgetPublicApi = typeof SoluCXWidgetView & Pick<typeof SoluCXWidgetController, 'create' | 'dismiss'>;
4
+ export declare const SoluCXWidget: SoluCXWidgetPublicApi;
5
+ export { SoluCXWidgetView };
6
+ export { SoluCXWidgetHost } from './SoluCXWidgetHost';
7
+ export { SoluCXWidgetController };
8
+ export type { WidgetConfig } from './SoluCXWidget';
9
+ export { WidgetStateManager } from './services/WidgetStateManager';
10
+ export type { TimestampField } from './services/WidgetStateManager';
12
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,IAAI,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExE,KAAK,qBAAqB,GAAG,OAAO,gBAAgB,GAAG,IAAI,CAAC,OAAO,sBAAsB,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;AAEjH,eAAO,MAAM,YAAY,EAGnB,qBAAqB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC"}
package/lib/index.js CHANGED
@@ -1,41 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
2
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.getClientVersion = exports.SDK_VERSION = exports.SDK_NAME = exports.styles = exports.getWidgetStyles = exports.ModalWidget = exports.requestWidgetUrl = exports.getDeviceInfo = exports.StorageService = exports.WidgetEventService = exports.useWidgetState = exports.SoluCXWidget = void 0;
18
- var SoluCXWidget_1 = require("./SoluCXWidget");
19
- Object.defineProperty(exports, "SoluCXWidget", { enumerable: true, get: function () { return SoluCXWidget_1.SoluCXWidget; } });
20
- var useWidgetState_1 = require("./hooks/useWidgetState");
21
- Object.defineProperty(exports, "useWidgetState", { enumerable: true, get: function () { return useWidgetState_1.useWidgetState; } });
22
- var widgetEventService_1 = require("./services/widgetEventService");
23
- Object.defineProperty(exports, "WidgetEventService", { enumerable: true, get: function () { return widgetEventService_1.WidgetEventService; } });
24
- var storage_1 = require("./services/storage");
25
- Object.defineProperty(exports, "StorageService", { enumerable: true, get: function () { return storage_1.StorageService; } });
26
- var useDeviceInfoCollector_1 = require("./hooks/useDeviceInfoCollector");
27
- Object.defineProperty(exports, "getDeviceInfo", { enumerable: true, get: function () { return useDeviceInfoCollector_1.getDeviceInfo; } });
28
- var widgetBootstrapService_1 = require("./services/widgetBootstrapService");
29
- Object.defineProperty(exports, "requestWidgetUrl", { enumerable: true, get: function () { return widgetBootstrapService_1.requestWidgetUrl; } });
30
- var ModalWidget_1 = require("./components/ModalWidget");
31
- Object.defineProperty(exports, "ModalWidget", { enumerable: true, get: function () { return ModalWidget_1.ModalWidget; } });
32
- var widgetStyles_1 = require("./styles/widgetStyles");
33
- Object.defineProperty(exports, "getWidgetStyles", { enumerable: true, get: function () { return widgetStyles_1.getWidgetStyles; } });
34
- Object.defineProperty(exports, "styles", { enumerable: true, get: function () { return widgetStyles_1.styles; } });
35
- var Constants_1 = require("./constants/Constants");
36
- Object.defineProperty(exports, "SDK_NAME", { enumerable: true, get: function () { return Constants_1.SDK_NAME; } });
37
- Object.defineProperty(exports, "SDK_VERSION", { enumerable: true, get: function () { return Constants_1.SDK_VERSION; } });
38
- var ClientVersionCollector_1 = require("./services/ClientVersionCollector");
39
- Object.defineProperty(exports, "getClientVersion", { enumerable: true, get: function () { return ClientVersionCollector_1.getClientVersion; } });
40
- __exportStar(require("./interfaces"), exports);
3
+ exports.WidgetStateManager = exports.SoluCXWidgetController = exports.SoluCXWidgetHost = exports.SoluCXWidgetView = exports.SoluCXWidget = void 0;
4
+ const SoluCXWidgetView_1 = require("./SoluCXWidgetView");
5
+ Object.defineProperty(exports, "SoluCXWidgetView", { enumerable: true, get: function () { return SoluCXWidgetView_1.SoluCXWidgetView; } });
6
+ const SoluCXWidget_1 = require("./SoluCXWidget");
7
+ Object.defineProperty(exports, "SoluCXWidgetController", { enumerable: true, get: function () { return SoluCXWidget_1.SoluCXWidget; } });
8
+ exports.SoluCXWidget = Object.assign(SoluCXWidgetView_1.SoluCXWidgetView, {
9
+ create: SoluCXWidget_1.SoluCXWidget.create,
10
+ dismiss: SoluCXWidget_1.SoluCXWidget.dismiss,
11
+ });
12
+ var SoluCXWidgetHost_1 = require("./SoluCXWidgetHost");
13
+ Object.defineProperty(exports, "SoluCXWidgetHost", { enumerable: true, get: function () { return SoluCXWidgetHost_1.SoluCXWidgetHost; } });
14
+ var WidgetStateManager_1 = require("./services/WidgetStateManager");
15
+ Object.defineProperty(exports, "WidgetStateManager", { enumerable: true, get: function () { return WidgetStateManager_1.WidgetStateManager; } });
41
16
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,yDAAwD;AAA/C,gHAAA,cAAc,OAAA;AACvB,oEAAmE;AAA1D,wHAAA,kBAAkB,OAAA;AAC3B,8CAAoD;AAA3C,yGAAA,cAAc,OAAA;AACvB,yEAAgF;AAAvE,uHAAA,aAAa,OAAA;AACtB,4EAAqE;AAA5D,0HAAA,gBAAgB,OAAA;AACzB,wDAAuD;AAA9C,0GAAA,WAAW,OAAA;AACpB,sDAAgE;AAAvD,+GAAA,eAAe,OAAA;AAAE,sGAAA,MAAM,OAAA;AAChC,mDAA8D;AAArD,qGAAA,QAAQ,OAAA;AAAE,wGAAA,WAAW,OAAA;AAC9B,4EAAqE;AAA5D,0HAAA,gBAAgB,OAAA;AACzB,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAsD;AAU7C,iGAVA,mCAAgB,OAUA;AATzB,iDAAwE;AAW/D,uGAXgB,2BAAsB,OAWhB;AAPlB,QAAA,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,mCAAgB,EAAE;IAC3D,MAAM,EAAE,2BAAsB,CAAC,MAAM;IACrC,OAAO,EAAE,2BAAsB,CAAC,OAAO;CACvC,CAA0B,CAAC;AAG5B,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAGzB,oEAAmE;AAA1D,wHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,3 @@
1
+ import type { WidgetData } from "../domain";
2
+ export declare function getUserId(data: WidgetData): string;
3
+ //# sourceMappingURL=UserIdentificationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserIdentificationService.d.ts","sourceRoot":"","sources":["../../src/services/UserIdentificationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAI5C,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CASlD"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUserId = getUserId;
4
+ const DEFAULT_USER_ID = "default_user";
5
+ function getUserId(data) {
6
+ if (data.user_id)
7
+ return String(data.user_id);
8
+ if (data.email)
9
+ return String(data.email);
10
+ if (data.cpf)
11
+ return String(data.cpf);
12
+ const journey = data.journey || data.form_id;
13
+ if (journey)
14
+ return `${DEFAULT_USER_ID}_${journey}`;
15
+ return DEFAULT_USER_ID;
16
+ }
17
+ //# sourceMappingURL=UserIdentificationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserIdentificationService.js","sourceRoot":"","sources":["../../src/services/UserIdentificationService.ts"],"names":[],"mappings":";;AAIA,8BASC;AAXD,MAAM,eAAe,GAAG,cAAc,CAAC;AAEvC,SAAgB,SAAS,CAAC,IAAgB;IACtC,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;IAC7C,IAAI,OAAO;QAAE,OAAO,GAAG,eAAe,IAAI,OAAO,EAAE,CAAC;IAEpD,OAAO,eAAe,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { SoluCXKey, WidgetData, WidgetOptions } from "../domain";
2
+ import { URLSearchParams } from "react-native-url-polyfill";
3
+ type UrlRequestPayload = {
4
+ available: boolean;
5
+ url?: string;
6
+ reason?: string;
7
+ };
8
+ declare const buildRequestParams: (requestParams: WidgetData) => URLSearchParams;
9
+ export declare function requestWidgetUrl(instanceKey: SoluCXKey, requestParams: WidgetData, userId: string): Promise<UrlRequestPayload>;
10
+ export declare function requestWidgetOptions(instanceKey: SoluCXKey, journey?: string): Promise<WidgetOptions>;
11
+ export { buildRequestParams };
12
+ //# sourceMappingURL=WidgetBootstrapService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetBootstrapService.d.ts","sourceRoot":"","sources":["../../src/services/WidgetBootstrapService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAKtE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,KAAK,iBAAiB,GAAG;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAMF,QAAA,MAAM,kBAAkB,GAAI,eAAe,UAAU,KAAG,eASvD,CAAC;AA0BF,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBpI;AAED,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA0B3G;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -2,11 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildRequestParams = void 0;
4
4
  exports.requestWidgetUrl = requestWidgetUrl;
5
- const webViewConstants_1 = require("../constants/webViewConstants");
6
- const ClientVersionCollector_1 = require("../services/ClientVersionCollector");
7
- const useDeviceInfoCollector_1 = require("../hooks/useDeviceInfoCollector");
5
+ exports.requestWidgetOptions = requestWidgetOptions;
8
6
  const Constants_1 = require("../constants/Constants");
7
+ const useClientVersionCollector_1 = require("../hooks/useClientVersionCollector");
8
+ const useDeviceInfoCollector_1 = require("../hooks/useDeviceInfoCollector");
9
+ const Constants_2 = require("../constants/Constants");
9
10
  const react_native_url_polyfill_1 = require("react-native-url-polyfill");
11
+ const DEFAULT_WIDGET_OPTIONS = {
12
+ height: 600,
13
+ };
10
14
  const buildRequestParams = (requestParams) => {
11
15
  const params = new react_native_url_polyfill_1.URLSearchParams();
12
16
  Object.entries(requestParams).forEach(([key, value]) => {
@@ -14,26 +18,24 @@ const buildRequestParams = (requestParams) => {
14
18
  return;
15
19
  params.append(key, typeof value === "number" ? value.toString() : String(value));
16
20
  });
17
- params.set("transactionId", "");
18
- params.set("attemptId", "");
19
21
  return params;
20
22
  };
21
23
  exports.buildRequestParams = buildRequestParams;
22
24
  const buildRequestHeaders = (instanceKey, userId) => {
23
25
  const deviceInfo = (0, useDeviceInfoCollector_1.getDeviceInfo)();
24
- const appVersion = (0, ClientVersionCollector_1.getClientVersion)();
26
+ const appVersion = (0, useClientVersionCollector_1.getClientVersion)();
25
27
  const isMobile = deviceInfo.deviceType === "phone" ? "?1" : "?0";
26
- const userAgent = `${Constants_1.SDK_NAME}/${Constants_1.SDK_VERSION} (${deviceInfo.platform}; OS ${deviceInfo.osVersion}; ${deviceInfo.model}) App/${appVersion}`;
28
+ const userAgent = `${Constants_2.SDK_NAME}/${Constants_2.SDK_VERSION} (${deviceInfo.platform}; OS ${deviceInfo.osVersion}; ${deviceInfo.model}) App/${appVersion}`;
27
29
  return {
28
30
  accept: "application/json, text/plain, */*",
29
31
  "x-solucx-api-key": instanceKey,
30
32
  "x-solucx-device-id": userId,
31
33
  "x-client-id": userId,
32
- "x-sdk-name": Constants_1.SDK_NAME,
33
- "x-sdk-version": Constants_1.SDK_VERSION,
34
+ "x-sdk-name": Constants_2.SDK_NAME,
35
+ "x-sdk-version": Constants_2.SDK_VERSION,
34
36
  "x-solucx-app-version": appVersion,
35
37
  "x-solucx-client-platform": deviceInfo.platform,
36
- "Sec-CH-UA": `"${Constants_1.SDK_NAME}";v="${Constants_1.SDK_VERSION}", "app";v="${appVersion}"`,
38
+ "Sec-CH-UA": `"${Constants_2.SDK_NAME}";v="${Constants_2.SDK_VERSION}", "app";v="${appVersion}"`,
37
39
  "Sec-CH-UA-Platform": `"${deviceInfo.platform}"`,
38
40
  "Sec-CH-UA-Mobile": isMobile,
39
41
  "Sec-CH-UA-Platform-Version": `"${deviceInfo.osVersion}"`,
@@ -46,7 +48,7 @@ async function requestWidgetUrl(instanceKey, requestParams, userId) {
46
48
  throw new Error("Fetch is not available");
47
49
  }
48
50
  const params = buildRequestParams(requestParams);
49
- const url = `${webViewConstants_1.RATING_FORM_ENDPOINT}?${params.toString()}`;
51
+ const url = `${Constants_1.WIDGET_API_BASE_URL}/widget/available?${params.toString()}`;
50
52
  const headers = buildRequestHeaders(instanceKey, userId);
51
53
  const response = await fetch(url, { method: "GET", headers });
52
54
  if (!response.ok) {
@@ -56,9 +58,28 @@ async function requestWidgetUrl(instanceKey, requestParams, userId) {
56
58
  throw new Error(`status=${response?.status} message=${errorPayload?.message}`);
57
59
  }
58
60
  const payload = await response?.json();
59
- if (!payload?.url) {
60
- throw new Error("Failed to get the widget api response.");
61
+ return payload;
62
+ }
63
+ async function requestWidgetOptions(instanceKey, journey) {
64
+ if (typeof fetch !== "function") {
65
+ console.warn("[WidgetBootstrap] Fetch is not available, using default options");
66
+ return DEFAULT_WIDGET_OPTIONS;
67
+ }
68
+ const params = new react_native_url_polyfill_1.URLSearchParams();
69
+ if (journey) {
70
+ params.append("journey", journey);
71
+ }
72
+ const url = `${Constants_1.WIDGET_API_BASE_URL}/widget/parameters${params.toString() ? `?${params.toString()}` : ""}`;
73
+ const headers = {
74
+ "x-solucx-api-key": instanceKey,
75
+ accept: "application/json",
76
+ };
77
+ const response = await fetch(url, { method: "GET", headers });
78
+ if (!response.ok) {
79
+ console.warn(`[WidgetBootstrap] Failed to fetch widget options: ${response.status} ${response.statusText}`);
80
+ return DEFAULT_WIDGET_OPTIONS;
61
81
  }
62
- return payload.url;
82
+ const options = await response.json();
83
+ return options || DEFAULT_WIDGET_OPTIONS;
63
84
  }
64
- //# sourceMappingURL=widgetBootstrapService.js.map
85
+ //# sourceMappingURL=WidgetBootstrapService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetBootstrapService.js","sourceRoot":"","sources":["../../src/services/WidgetBootstrapService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { WidgetResponse, WidgetCallbacks } from "../domain";
2
+ import type { WidgetStateManager } from "./WidgetStateManager";
3
+ export declare class WidgetEventService {
4
+ private handlerFactory;
5
+ constructor(hide: () => void, resize: (height: string) => void, userId: string, transactionId?: string, callbacks?: WidgetCallbacks, stateManager?: WidgetStateManager);
6
+ handleMessage(message: string, isForm: boolean): Promise<WidgetResponse>;
7
+ }
8
+ //# sourceMappingURL=WidgetEventService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetEventService.d.ts","sourceRoot":"","sources":["../../src/services/WidgetEventService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,cAAc,CAAsB;gBAEhC,IAAI,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,kBAAkB;IAIhK,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;CAGjF"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WidgetEventService = void 0;
4
+ const EventHandlerFactory_1 = require("./events/EventHandlerFactory");
5
+ class WidgetEventService {
6
+ constructor(hide, resize, userId, transactionId, callbacks, stateManager) {
7
+ this.handlerFactory = new EventHandlerFactory_1.EventHandlerFactory(hide, resize, userId, transactionId, callbacks, stateManager);
8
+ }
9
+ async handleMessage(message, isForm) {
10
+ return await this.handlerFactory.processMessage(message, isForm);
11
+ }
12
+ }
13
+ exports.WidgetEventService = WidgetEventService;
14
+ //# sourceMappingURL=WidgetEventService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetEventService.js","sourceRoot":"","sources":["../../src/services/WidgetEventService.ts"],"names":[],"mappings":";;;AAEA,sEAAmE;AAEnE,MAAa,kBAAkB;IAG3B,YAAY,IAAgB,EAAE,MAAgC,EAAE,MAAc,EAAE,aAAsB,EAAE,SAA2B,EAAE,YAAiC;QAClK,IAAI,CAAC,cAAc,GAAG,IAAI,yCAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAChH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,MAAe;QAChD,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;CACJ;AAVD,gDAUC"}
@@ -0,0 +1,20 @@
1
+ import type { IStorageService } from './storage/IStorageService';
2
+ import type { WidgetSamplerLog } from '../domain';
3
+ export type TimestampField = keyof Pick<WidgetSamplerLog, 'lastDisplayAttempt' | 'lastFirstAccess' | 'lastDisplay' | 'lastDismiss' | 'lastSubmit' | 'lastPartialSubmit'>;
4
+ export declare class WidgetStateManager {
5
+ private storageService;
6
+ private storageKey;
7
+ constructor(storageService: IStorageService<WidgetSamplerLog>, storageKey: string);
8
+ getLogs(): Promise<WidgetSamplerLog>;
9
+ incrementAttempt(): Promise<WidgetSamplerLog>;
10
+ saveLogs(logs: WidgetSamplerLog): Promise<void>;
11
+ resetAttempts(): Promise<WidgetSamplerLog>;
12
+ hasAnsweredTransaction(transactionId?: string): Promise<boolean>;
13
+ markTransactionAnswered(transactionId?: string): Promise<WidgetSamplerLog>;
14
+ updateTimestamp(field: TimestampField): Promise<void>;
15
+ overrideTimestamp(field: TimestampField, date: Date | number): Promise<void>;
16
+ clearLogs(): Promise<void>;
17
+ hasLogs(): Promise<boolean>;
18
+ private getDefaultLogs;
19
+ }
20
+ //# sourceMappingURL=WidgetStateManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetStateManager.d.ts","sourceRoot":"","sources":["../../src/services/WidgetStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,aAAa,GAAG,aAAa,GAAG,YAAY,GAAG,mBAAmB,CAAC,CAAC;AAEzK,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,UAAU,CAAS;gBAEf,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,MAAM;IAK3E,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IASpC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAY7C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAY1C,sBAAsB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAShE,uBAAuB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqB1E,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5E,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC,OAAO,CAAC,cAAc;CAMzB"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WidgetStateManager = void 0;
4
+ class WidgetStateManager {
5
+ constructor(storageService, storageKey) {
6
+ this.storageService = storageService;
7
+ this.storageKey = storageKey;
8
+ }
9
+ async getLogs() {
10
+ try {
11
+ return await this.storageService.read(this.storageKey);
12
+ }
13
+ catch (error) {
14
+ console.error('[WidgetStateManager] Error reading logs:', error);
15
+ return this.getDefaultLogs();
16
+ }
17
+ }
18
+ async incrementAttempt() {
19
+ const logs = await this.getLogs();
20
+ const updatedLogs = {
21
+ ...logs,
22
+ attempts: (logs.attempts || 0) + 1,
23
+ };
24
+ await this.storageService.write(this.storageKey, updatedLogs);
25
+ return updatedLogs;
26
+ }
27
+ async saveLogs(logs) {
28
+ await this.storageService.write(this.storageKey, logs);
29
+ }
30
+ async resetAttempts() {
31
+ const logs = await this.getLogs();
32
+ const updatedLogs = {
33
+ ...logs,
34
+ attempts: 0,
35
+ };
36
+ await this.storageService.write(this.storageKey, updatedLogs);
37
+ return updatedLogs;
38
+ }
39
+ async hasAnsweredTransaction(transactionId) {
40
+ if (!transactionId) {
41
+ return false;
42
+ }
43
+ const logs = await this.getLogs();
44
+ return (logs.answeredTransactionIds || []).includes(transactionId);
45
+ }
46
+ async markTransactionAnswered(transactionId) {
47
+ const logs = await this.getLogs();
48
+ if (!transactionId) {
49
+ return logs;
50
+ }
51
+ const answeredTransactionIds = logs.answeredTransactionIds || [];
52
+ if (answeredTransactionIds.includes(transactionId)) {
53
+ return logs;
54
+ }
55
+ const updatedLogs = {
56
+ ...logs,
57
+ answeredTransactionIds: [...answeredTransactionIds, transactionId],
58
+ };
59
+ await this.storageService.write(this.storageKey, updatedLogs);
60
+ return updatedLogs;
61
+ }
62
+ async updateTimestamp(field) {
63
+ const logs = await this.getLogs();
64
+ const updatedLogs = {
65
+ ...logs,
66
+ [field]: Date.now(),
67
+ };
68
+ await this.storageService.write(this.storageKey, updatedLogs);
69
+ }
70
+ async overrideTimestamp(field, date) {
71
+ const logs = await this.getLogs();
72
+ const timestamp = date instanceof Date ? date.getTime() : date;
73
+ const updatedLogs = {
74
+ ...logs,
75
+ [field]: timestamp,
76
+ };
77
+ await this.storageService.write(this.storageKey, updatedLogs);
78
+ }
79
+ async clearLogs() {
80
+ await this.storageService.delete(this.storageKey);
81
+ }
82
+ async hasLogs() {
83
+ return await this.storageService.exists(this.storageKey);
84
+ }
85
+ getDefaultLogs() {
86
+ return {
87
+ attempts: 0,
88
+ answeredTransactionIds: [],
89
+ };
90
+ }
91
+ }
92
+ exports.WidgetStateManager = WidgetStateManager;
93
+ //# sourceMappingURL=WidgetStateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetStateManager.js","sourceRoot":"","sources":["../../src/services/WidgetStateManager.ts"],"names":[],"mappings":"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"}