@rownd/react-native 0.2.5 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +15 -52
  3. package/android/build.gradle +127 -37
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +1 -1
  6. package/android/src/main/java/com/reactnativerowndplugin/RowndPluginModule.kt +98 -0
  7. package/android/src/main/java/com/reactnativerowndplugin/RowndPluginPackage.kt +16 -0
  8. package/ios/{ReactNative.xcodeproj → Rownd.xcodeproj}/project.pbxproj +13 -12
  9. package/ios/Rownd.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
  10. package/ios/RowndPlugin-Bridging-Header.h +3 -0
  11. package/ios/RowndPlugin.m +26 -0
  12. package/ios/RowndPlugin.swift +83 -0
  13. package/ios/RowndPluginEventEmitter.m +12 -0
  14. package/ios/RowndPluginEventEmitter.swift +19 -0
  15. package/lib/commonjs/components/GlobalContext.js +30 -298
  16. package/lib/commonjs/components/GlobalContext.js.map +1 -1
  17. package/lib/commonjs/components/{BottomSheetTextInput/types.js → GlobalContext.types.js} +1 -1
  18. package/lib/commonjs/components/GlobalContext.types.js.map +1 -0
  19. package/lib/commonjs/constants/action.js +13 -0
  20. package/lib/commonjs/constants/action.js.map +1 -0
  21. package/lib/commonjs/hooks/rownd.js +15 -146
  22. package/lib/commonjs/hooks/rownd.js.map +1 -1
  23. package/lib/commonjs/index.js +2 -12
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/reducer/rowndReducer.js +89 -0
  26. package/lib/commonjs/reducer/rowndReducer.js.map +1 -0
  27. package/lib/commonjs/utils/config.js +0 -26
  28. package/lib/commonjs/utils/config.js.map +1 -1
  29. package/lib/commonjs/utils/nativeModule.js +72 -0
  30. package/lib/commonjs/utils/nativeModule.js.map +1 -0
  31. package/lib/module/components/GlobalContext.js +29 -293
  32. package/lib/module/components/GlobalContext.js.map +1 -1
  33. package/lib/module/components/GlobalContext.types.js +2 -0
  34. package/lib/module/components/GlobalContext.types.js.map +1 -0
  35. package/lib/module/constants/action.js +6 -0
  36. package/lib/module/constants/action.js.map +1 -0
  37. package/lib/module/hooks/rownd.js +12 -137
  38. package/lib/module/hooks/rownd.js.map +1 -1
  39. package/lib/module/index.js +2 -4
  40. package/lib/module/index.js.map +1 -1
  41. package/lib/module/reducer/rowndReducer.js +78 -0
  42. package/lib/module/reducer/rowndReducer.js.map +1 -0
  43. package/lib/module/utils/config.js +1 -16
  44. package/lib/module/utils/config.js.map +1 -1
  45. package/lib/module/utils/nativeModule.js +48 -0
  46. package/lib/module/utils/nativeModule.js.map +1 -0
  47. package/lib/typescript/components/GlobalContext.d.ts +13 -0
  48. package/lib/typescript/{src/components/GlobalContext.d.ts → components/GlobalContext.types.d.ts} +9 -35
  49. package/lib/typescript/constants/action.d.ts +7 -0
  50. package/lib/typescript/{src/hooks → hooks}/rownd.d.ts +10 -13
  51. package/lib/typescript/index.d.ts +3 -0
  52. package/lib/typescript/reducer/rowndReducer.d.ts +4 -0
  53. package/lib/typescript/utils/config.d.ts +10 -0
  54. package/lib/typescript/utils/nativeModule.d.ts +10 -0
  55. package/package.json +36 -56
  56. package/rownd-react-native.podspec +36 -0
  57. package/src/components/GlobalContext.tsx +44 -457
  58. package/src/components/GlobalContext.types.ts +105 -0
  59. package/src/constants/action.ts +8 -0
  60. package/src/hooks/rownd.ts +29 -147
  61. package/src/index.tsx +2 -4
  62. package/src/reducer/rowndReducer.ts +78 -0
  63. package/src/utils/config.ts +0 -27
  64. package/src/utils/nativeModule.ts +69 -0
  65. package/android/src/main/java/com/reactnative/ReactNativePackage.java +0 -22
  66. package/android/src/main/java/com/reactnative/ReactNativeViewManager.java +0 -31
  67. package/ios/ReactNativeViewManager.m +0 -34
  68. package/lib/commonjs/assets/images/checkmark--filled.svg +0 -12
  69. package/lib/commonjs/assets/images/email-verify-waiting.svg +0 -36
  70. package/lib/commonjs/assets/images/error-icon-material.svg +0 -1
  71. package/lib/commonjs/assets/images/phone-verify-waiting.svg +0 -26
  72. package/lib/commonjs/components/AuthenticatedComponent.js +0 -35
  73. package/lib/commonjs/components/AuthenticatedComponent.js.map +0 -1
  74. package/lib/commonjs/components/AutoSigninDialog.js +0 -132
  75. package/lib/commonjs/components/AutoSigninDialog.js.map +0 -1
  76. package/lib/commonjs/components/BottomSheetTextInput/BottomSheetTextInput.js +0 -65
  77. package/lib/commonjs/components/BottomSheetTextInput/BottomSheetTextInput.js.map +0 -1
  78. package/lib/commonjs/components/BottomSheetTextInput/index.js +0 -24
  79. package/lib/commonjs/components/BottomSheetTextInput/index.js.map +0 -1
  80. package/lib/commonjs/components/BottomSheetTextInput/types.js.map +0 -1
  81. package/lib/commonjs/components/DarkText.js +0 -35
  82. package/lib/commonjs/components/DarkText.js.map +0 -1
  83. package/lib/commonjs/components/DefaultContext.js +0 -266
  84. package/lib/commonjs/components/DefaultContext.js.map +0 -1
  85. package/lib/commonjs/components/RowndComponents.js +0 -25
  86. package/lib/commonjs/components/RowndComponents.js.map +0 -1
  87. package/lib/commonjs/components/RowndProvider.js +0 -55
  88. package/lib/commonjs/components/RowndProvider.js.map +0 -1
  89. package/lib/commonjs/components/SignIn.js +0 -644
  90. package/lib/commonjs/components/SignIn.js.map +0 -1
  91. package/lib/commonjs/components/images/CheckmarkFilled.js +0 -40
  92. package/lib/commonjs/components/images/CheckmarkFilled.js.map +0 -1
  93. package/lib/commonjs/components/images/EmailVerifyWaiting.js +0 -100
  94. package/lib/commonjs/components/images/EmailVerifyWaiting.js.map +0 -1
  95. package/lib/commonjs/components/images/ErrorIcon.js +0 -31
  96. package/lib/commonjs/components/images/ErrorIcon.js.map +0 -1
  97. package/lib/commonjs/components/images/PhoneVerifyWaiting.js +0 -91
  98. package/lib/commonjs/components/images/PhoneVerifyWaiting.js.map +0 -1
  99. package/lib/commonjs/data/actions.js +0 -26
  100. package/lib/commonjs/data/actions.js.map +0 -1
  101. package/lib/commonjs/hooks/api.js +0 -155
  102. package/lib/commonjs/hooks/api.js.map +0 -1
  103. package/lib/commonjs/hooks/debounce.js +0 -38
  104. package/lib/commonjs/hooks/debounce.js.map +0 -1
  105. package/lib/commonjs/hooks/fingerprint.js +0 -176
  106. package/lib/commonjs/hooks/fingerprint.js.map +0 -1
  107. package/lib/commonjs/hooks/index.js +0 -48
  108. package/lib/commonjs/hooks/index.js.map +0 -1
  109. package/lib/commonjs/hooks/interval.js +0 -31
  110. package/lib/commonjs/hooks/interval.js.map +0 -1
  111. package/lib/commonjs/hooks/nav.js +0 -39
  112. package/lib/commonjs/hooks/nav.js.map +0 -1
  113. package/lib/commonjs/index.tsx.bak +0 -26
  114. package/lib/commonjs/types.js +0 -2
  115. package/lib/commonjs/types.js.map +0 -1
  116. package/lib/commonjs/utils/events.js +0 -57
  117. package/lib/commonjs/utils/events.js.map +0 -1
  118. package/lib/commonjs/utils/form.js +0 -46
  119. package/lib/commonjs/utils/form.js.map +0 -1
  120. package/lib/commonjs/utils/queue.js +0 -117
  121. package/lib/commonjs/utils/queue.js.map +0 -1
  122. package/lib/commonjs/utils/storage.js +0 -15
  123. package/lib/commonjs/utils/storage.js.map +0 -1
  124. package/lib/commonjs/utils/tokens.js +0 -35
  125. package/lib/commonjs/utils/tokens.js.map +0 -1
  126. package/lib/commonjs/utils/user-data.js +0 -21
  127. package/lib/commonjs/utils/user-data.js.map +0 -1
  128. package/lib/module/assets/images/checkmark--filled.svg +0 -12
  129. package/lib/module/assets/images/email-verify-waiting.svg +0 -36
  130. package/lib/module/assets/images/error-icon-material.svg +0 -1
  131. package/lib/module/assets/images/phone-verify-waiting.svg +0 -26
  132. package/lib/module/components/AuthenticatedComponent.js +0 -24
  133. package/lib/module/components/AuthenticatedComponent.js.map +0 -1
  134. package/lib/module/components/AutoSigninDialog.js +0 -110
  135. package/lib/module/components/AutoSigninDialog.js.map +0 -1
  136. package/lib/module/components/BottomSheetTextInput/BottomSheetTextInput.js +0 -52
  137. package/lib/module/components/BottomSheetTextInput/BottomSheetTextInput.js.map +0 -1
  138. package/lib/module/components/BottomSheetTextInput/index.js +0 -5
  139. package/lib/module/components/BottomSheetTextInput/index.js.map +0 -1
  140. package/lib/module/components/BottomSheetTextInput/types.js +0 -2
  141. package/lib/module/components/BottomSheetTextInput/types.js.map +0 -1
  142. package/lib/module/components/DarkText.js +0 -24
  143. package/lib/module/components/DarkText.js.map +0 -1
  144. package/lib/module/components/DefaultContext.js +0 -244
  145. package/lib/module/components/DefaultContext.js.map +0 -1
  146. package/lib/module/components/RowndComponents.js +0 -12
  147. package/lib/module/components/RowndComponents.js.map +0 -1
  148. package/lib/module/components/RowndProvider.js +0 -39
  149. package/lib/module/components/RowndProvider.js.map +0 -1
  150. package/lib/module/components/SignIn.js +0 -616
  151. package/lib/module/components/SignIn.js.map +0 -1
  152. package/lib/module/components/images/CheckmarkFilled.js +0 -27
  153. package/lib/module/components/images/CheckmarkFilled.js.map +0 -1
  154. package/lib/module/components/images/EmailVerifyWaiting.js +0 -87
  155. package/lib/module/components/images/EmailVerifyWaiting.js.map +0 -1
  156. package/lib/module/components/images/ErrorIcon.js +0 -18
  157. package/lib/module/components/images/ErrorIcon.js.map +0 -1
  158. package/lib/module/components/images/PhoneVerifyWaiting.js +0 -78
  159. package/lib/module/components/images/PhoneVerifyWaiting.js.map +0 -1
  160. package/lib/module/data/actions.js +0 -19
  161. package/lib/module/data/actions.js.map +0 -1
  162. package/lib/module/hooks/api.js +0 -135
  163. package/lib/module/hooks/api.js.map +0 -1
  164. package/lib/module/hooks/debounce.js +0 -29
  165. package/lib/module/hooks/debounce.js.map +0 -1
  166. package/lib/module/hooks/fingerprint.js +0 -157
  167. package/lib/module/hooks/fingerprint.js.map +0 -1
  168. package/lib/module/hooks/index.js +0 -7
  169. package/lib/module/hooks/index.js.map +0 -1
  170. package/lib/module/hooks/interval.js +0 -23
  171. package/lib/module/hooks/interval.js.map +0 -1
  172. package/lib/module/hooks/nav.js +0 -30
  173. package/lib/module/hooks/nav.js.map +0 -1
  174. package/lib/module/index.tsx.bak +0 -26
  175. package/lib/module/types.js +0 -2
  176. package/lib/module/types.js.map +0 -1
  177. package/lib/module/utils/events.js +0 -45
  178. package/lib/module/utils/events.js.map +0 -1
  179. package/lib/module/utils/form.js +0 -34
  180. package/lib/module/utils/form.js.map +0 -1
  181. package/lib/module/utils/queue.js +0 -109
  182. package/lib/module/utils/queue.js.map +0 -1
  183. package/lib/module/utils/storage.js +0 -6
  184. package/lib/module/utils/storage.js.map +0 -1
  185. package/lib/module/utils/tokens.js +0 -24
  186. package/lib/module/utils/tokens.js.map +0 -1
  187. package/lib/module/utils/user-data.js +0 -14
  188. package/lib/module/utils/user-data.js.map +0 -1
  189. package/lib/package.json +0 -173
  190. package/lib/typescript/src/components/AuthenticatedComponent.d.ts +0 -7
  191. package/lib/typescript/src/components/AutoSigninDialog.d.ts +0 -2
  192. package/lib/typescript/src/components/BottomSheetTextInput/BottomSheetTextInput.d.ts +0 -4
  193. package/lib/typescript/src/components/BottomSheetTextInput/index.d.ts +0 -2
  194. package/lib/typescript/src/components/BottomSheetTextInput/types.d.ts +0 -3
  195. package/lib/typescript/src/components/DarkText.d.ts +0 -3
  196. package/lib/typescript/src/components/DefaultContext.d.ts +0 -12
  197. package/lib/typescript/src/components/RowndComponents.d.ts +0 -2
  198. package/lib/typescript/src/components/RowndProvider.d.ts +0 -8
  199. package/lib/typescript/src/components/SignIn.d.ts +0 -2
  200. package/lib/typescript/src/components/images/CheckmarkFilled.d.ts +0 -4
  201. package/lib/typescript/src/components/images/EmailVerifyWaiting.d.ts +0 -4
  202. package/lib/typescript/src/components/images/ErrorIcon.d.ts +0 -4
  203. package/lib/typescript/src/components/images/PhoneVerifyWaiting.d.ts +0 -4
  204. package/lib/typescript/src/data/actions.d.ts +0 -20
  205. package/lib/typescript/src/hooks/api.d.ts +0 -12
  206. package/lib/typescript/src/hooks/debounce.d.ts +0 -5
  207. package/lib/typescript/src/hooks/fingerprint.d.ts +0 -12
  208. package/lib/typescript/src/hooks/index.d.ts +0 -6
  209. package/lib/typescript/src/hooks/interval.d.ts +0 -2
  210. package/lib/typescript/src/hooks/nav.d.ts +0 -6
  211. package/lib/typescript/src/index.d.ts +0 -4
  212. package/lib/typescript/src/types.d.ts +0 -26
  213. package/lib/typescript/src/utils/config.d.ts +0 -18
  214. package/lib/typescript/src/utils/events.d.ts +0 -22
  215. package/lib/typescript/src/utils/form.d.ts +0 -18
  216. package/lib/typescript/src/utils/queue.d.ts +0 -21
  217. package/lib/typescript/src/utils/storage.d.ts +0 -3
  218. package/lib/typescript/src/utils/tokens.d.ts +0 -4
  219. package/lib/typescript/src/utils/user-data.d.ts +0 -3
  220. package/react-native.podspec +0 -19
  221. package/src/assets/images/checkmark--filled.svg +0 -12
  222. package/src/assets/images/email-verify-waiting.svg +0 -36
  223. package/src/assets/images/error-icon-material.svg +0 -1
  224. package/src/assets/images/phone-verify-waiting.svg +0 -26
  225. package/src/components/AuthenticatedComponent.tsx +0 -30
  226. package/src/components/AutoSigninDialog.tsx +0 -131
  227. package/src/components/BottomSheetTextInput/BottomSheetTextInput.tsx +0 -57
  228. package/src/components/BottomSheetTextInput/index.ts +0 -5
  229. package/src/components/BottomSheetTextInput/types.ts +0 -3
  230. package/src/components/DarkText.tsx +0 -16
  231. package/src/components/DefaultContext.tsx +0 -278
  232. package/src/components/RowndComponents.tsx +0 -18
  233. package/src/components/RowndProvider.tsx +0 -56
  234. package/src/components/SignIn.tsx +0 -797
  235. package/src/components/images/CheckmarkFilled.tsx +0 -30
  236. package/src/components/images/EmailVerifyWaiting.tsx +0 -95
  237. package/src/components/images/ErrorIcon.tsx +0 -11
  238. package/src/components/images/PhoneVerifyWaiting.tsx +0 -74
  239. package/src/data/actions.ts +0 -21
  240. package/src/hooks/api.ts +0 -162
  241. package/src/hooks/debounce.ts +0 -36
  242. package/src/hooks/fingerprint.ts +0 -217
  243. package/src/hooks/index.ts +0 -7
  244. package/src/hooks/interval.ts +0 -25
  245. package/src/hooks/nav.tsx +0 -29
  246. package/src/index.tsx.bak +0 -26
  247. package/src/types.ts +0 -27
  248. package/src/utils/events.ts +0 -54
  249. package/src/utils/form.tsx +0 -64
  250. package/src/utils/queue.ts +0 -75
  251. package/src/utils/storage.ts +0 -7
  252. package/src/utils/tokens.ts +0 -26
  253. package/src/utils/user-data.ts +0 -15
@@ -3,16 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "AuthenticatedComponent", {
7
- enumerable: true,
8
- get: function () {
9
- return _AuthenticatedComponent.default;
10
- }
11
- });
12
6
  Object.defineProperty(exports, "RowndProvider", {
13
7
  enumerable: true,
14
8
  get: function () {
15
- return _RowndProvider.RowndProvider;
9
+ return _GlobalContext.RowndProvider;
16
10
  }
17
11
  });
18
12
  Object.defineProperty(exports, "useRownd", {
@@ -22,11 +16,7 @@ Object.defineProperty(exports, "useRownd", {
22
16
  }
23
17
  });
24
18
 
25
- var _RowndProvider = require("./components/RowndProvider");
19
+ var _GlobalContext = require("./components/GlobalContext");
26
20
 
27
21
  var _rownd = require("./hooks/rownd");
28
-
29
- var _AuthenticatedComponent = _interopRequireDefault(require("./components/AuthenticatedComponent"));
30
-
31
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.tsx"],"sourcesContent":["// import { requestSignIn } from './components/SignIn';\nimport { RowndProvider } from './components/RowndProvider';\nimport { useRownd } from './hooks/rownd';\nimport AuthenticatedComponent from './components/AuthenticatedComponent';\n\nexport { RowndProvider, useRownd, AuthenticatedComponent };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA"}
1
+ {"version":3,"names":[],"sources":["index.tsx"],"sourcesContent":["import { RowndProvider } from './components/GlobalContext';\nimport { useRownd } from './hooks/rownd';\n\nexport { RowndProvider, useRownd };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.initialRowndState = void 0;
7
+ exports.rowndReducer = rowndReducer;
8
+
9
+ var _action = require("../constants/action");
10
+
11
+ const initialRowndState = {
12
+ // is_initializing: false,
13
+ // is_container_visible: false,
14
+ // use_modal: false,
15
+ // nav: {
16
+ // current_route: '/',
17
+ // route_trigger: '',
18
+ // event_id: '',
19
+ // section: '',
20
+ // options: {},
21
+ // },
22
+ user: {
23
+ data: {
24
+ email: null
25
+ } // needs_refresh: false,
26
+ // redacted: [],
27
+
28
+ },
29
+ auth: {
30
+ access_token: null,
31
+ refresh_token: null,
32
+ app_id: null
33
+ },
34
+ app: {
35
+ schema: null,
36
+ config: null
37
+ } // local_acls: null,
38
+ // is_saving_user_data: false,
39
+ // config,
40
+
41
+ };
42
+ exports.initialRowndState = initialRowndState;
43
+
44
+ function rowndReducer(state, action) {
45
+ var _action$payload, _action$payload$user, _action$payload2, _action$payload2$user, _action$payload2$user2, _action$payload3, _action$payload3$auth, _action$payload4, _action$payload4$auth, _action$payload$appCo;
46
+
47
+ let newState;
48
+
49
+ switch (action.type) {
50
+ case _action.ActionType.UPDATE_STATE:
51
+ newState = {
52
+ // is_initializing: false,
53
+ // is_container_visible: false,
54
+ // use_modal: false,
55
+ // nav: {
56
+ // current_route: '/',
57
+ // route_trigger: '',
58
+ // event_id: '',
59
+ // section: '',
60
+ // options: {},
61
+ // },
62
+ user: {
63
+ data: { ...((_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : (_action$payload$user = _action$payload.user) === null || _action$payload$user === void 0 ? void 0 : _action$payload$user.data),
64
+ email: (_action$payload2 = action.payload) === null || _action$payload2 === void 0 ? void 0 : (_action$payload2$user = _action$payload2.user) === null || _action$payload2$user === void 0 ? void 0 : (_action$payload2$user2 = _action$payload2$user.data) === null || _action$payload2$user2 === void 0 ? void 0 : _action$payload2$user2.email
65
+ } // needs_refresh: false,
66
+ // redacted: [],
67
+
68
+ },
69
+ auth: {
70
+ access_token: (_action$payload3 = action.payload) === null || _action$payload3 === void 0 ? void 0 : (_action$payload3$auth = _action$payload3.auth) === null || _action$payload3$auth === void 0 ? void 0 : _action$payload3$auth.access_token,
71
+ refresh_token: (_action$payload4 = action.payload) === null || _action$payload4 === void 0 ? void 0 : (_action$payload4$auth = _action$payload4.auth) === null || _action$payload4$auth === void 0 ? void 0 : _action$payload4$auth.refresh_token,
72
+ app_id: null
73
+ },
74
+ app: {
75
+ schema: (_action$payload$appCo = action.payload.appConfig) === null || _action$payload$appCo === void 0 ? void 0 : _action$payload$appCo.schema,
76
+ config: null
77
+ } // local_acls: null,
78
+ // is_saving_user_data: false,
79
+ // config
80
+
81
+ };
82
+ return newState;
83
+
84
+ default:
85
+ newState = state;
86
+ return newState;
87
+ }
88
+ }
89
+ //# sourceMappingURL=rowndReducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["initialRowndState","user","data","email","auth","access_token","refresh_token","app_id","app","schema","config","rowndReducer","state","action","newState","type","ActionType","UPDATE_STATE","payload","appConfig"],"sources":["rowndReducer.ts"],"sourcesContent":["import type { GlobalState } from '../components/GlobalContext.types';\nimport { ActionType, TAction } from '../constants/action';\n\nexport const initialRowndState: GlobalState = {\n // is_initializing: false,\n // is_container_visible: false,\n // use_modal: false,\n // nav: {\n // current_route: '/',\n // route_trigger: '',\n // event_id: '',\n // section: '',\n // options: {},\n // },\n user: {\n data: {\n email: null,\n },\n // needs_refresh: false,\n // redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n app: {\n schema: null,\n config: null,\n },\n // local_acls: null,\n // is_saving_user_data: false,\n // config,\n};\n\nexport function rowndReducer(state: GlobalState, action: TAction): GlobalState {\n let newState: GlobalState;\n\n switch (action.type) {\n case ActionType.UPDATE_STATE:\n newState = {\n // is_initializing: false,\n // is_container_visible: false,\n // use_modal: false,\n // nav: {\n // current_route: '/',\n // route_trigger: '',\n // event_id: '',\n // section: '',\n // options: {},\n // },\n user: {\n data: {\n ...action.payload?.user?.data,\n email: action.payload?.user?.data?.email,\n },\n // needs_refresh: false,\n // redacted: [],\n },\n auth: {\n access_token: action.payload?.auth?.access_token,\n refresh_token: action.payload?.auth?.refresh_token,\n app_id: null,\n },\n app: {\n schema: action.payload.appConfig?.schema,\n config: null,\n },\n // local_acls: null,\n // is_saving_user_data: false,\n // config\n };\n return newState;\n default:\n newState = state;\n return newState;\n }\n}\n"],"mappings":";;;;;;;;AACA;;AAEO,MAAMA,iBAA8B,GAAG;EAC5C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACAC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,KAAK,EAAE;IADH,CADF,CAIJ;IACA;;EALI,CAXsC;EAkB5CC,IAAI,EAAE;IACJC,YAAY,EAAE,IADV;IAEJC,aAAa,EAAE,IAFX;IAGJC,MAAM,EAAE;EAHJ,CAlBsC;EAuB5CC,GAAG,EAAE;IACHC,MAAM,EAAE,IADL;IAEHC,MAAM,EAAE;EAFL,CAvBuC,CA2B5C;EACA;EACA;;AA7B4C,CAAvC;;;AAgCA,SAASC,YAAT,CAAsBC,KAAtB,EAA0CC,MAA1C,EAAwE;EAAA;;EAC7E,IAAIC,QAAJ;;EAEA,QAAQD,MAAM,CAACE,IAAf;IACE,KAAKC,kBAAA,CAAWC,YAAhB;MACEH,QAAQ,GAAG;QACT;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACAb,IAAI,EAAE;UACJC,IAAI,EAAE,EACJ,uBAAGW,MAAM,CAACK,OAAV,4EAAG,gBAAgBjB,IAAnB,yDAAG,qBAAsBC,IAAzB,CADI;YAEJC,KAAK,sBAAEU,MAAM,CAACK,OAAT,8EAAE,iBAAgBjB,IAAlB,oFAAE,sBAAsBC,IAAxB,2DAAE,uBAA4BC;UAF/B,CADF,CAKJ;UACA;;QANI,CAXG;QAmBTC,IAAI,EAAE;UACJC,YAAY,sBAAEQ,MAAM,CAACK,OAAT,8EAAE,iBAAgBd,IAAlB,0DAAE,sBAAsBC,YADhC;UAEJC,aAAa,sBAAEO,MAAM,CAACK,OAAT,8EAAE,iBAAgBd,IAAlB,0DAAE,sBAAsBE,aAFjC;UAGJC,MAAM,EAAE;QAHJ,CAnBG;QAwBTC,GAAG,EAAE;UACHC,MAAM,2BAAEI,MAAM,CAACK,OAAP,CAAeC,SAAjB,0DAAE,sBAA0BV,MAD/B;UAEHC,MAAM,EAAE;QAFL,CAxBI,CA4BT;QACA;QACA;;MA9BS,CAAX;MAgCA,OAAOI,QAAP;;IACF;MACEA,QAAQ,GAAGF,KAAX;MACA,OAAOE,QAAP;EArCJ;AAuCD"}
@@ -1,28 +1,2 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createConfig = createConfig;
7
-
8
- var _pickBy = _interopRequireDefault(require("lodash-es/pickBy"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- const config = {
13
- baseUrl: 'https://hub.rownd.io',
14
- apiUrl: 'https://api.rownd.io',
15
- pdcBaseUrl: 'https://mydata.rownd.io',
16
- appKey: '',
17
- postLoginUrl: null,
18
- postRegistrationUrl: null,
19
- locationHash: null,
20
- postAuthenticationApi: null
21
- };
22
-
23
- function createConfig(opts) {
24
- return { ...config,
25
- ...(0, _pickBy.default)(opts)
26
- };
27
- }
28
2
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["config","baseUrl","apiUrl","pdcBaseUrl","appKey","postLoginUrl","postRegistrationUrl","locationHash","postAuthenticationApi","createConfig","opts","pickBy"],"sources":["config.ts"],"sourcesContent":["import pickBy from 'lodash-es/pickBy';\n\nexport interface IConfig {\n baseUrl: string;\n apiUrl: string;\n pdcBaseUrl: string;\n appKey: string;\n postLoginUrl: null | string;\n postRegistrationUrl: null | string;\n locationHash: null | string;\n postAuthenticationApi: null | PostAuthApiSpec;\n}\n\nconst config: IConfig = {\n baseUrl: 'https://hub.rownd.io',\n apiUrl: 'https://api.rownd.io',\n pdcBaseUrl: 'https://mydata.rownd.io',\n appKey: '',\n postLoginUrl: null,\n postRegistrationUrl: null,\n locationHash: null,\n postAuthenticationApi: null,\n};\n\nexport type PostAuthApiSpec = {\n method: 'post' | 'put';\n url: string;\n extra_headers: { [key: string]: string };\n};\n\nexport function createConfig(opts: Partial<IConfig>): IConfig {\n return {\n ...config,\n ...pickBy(opts),\n };\n}\n"],"mappings":";;;;;;;AAAA;;;;AAaA,MAAMA,MAAe,GAAG;EACtBC,OAAO,EAAE,sBADa;EAEtBC,MAAM,EAAE,sBAFc;EAGtBC,UAAU,EAAE,yBAHU;EAItBC,MAAM,EAAE,EAJc;EAKtBC,YAAY,EAAE,IALQ;EAMtBC,mBAAmB,EAAE,IANC;EAOtBC,YAAY,EAAE,IAPQ;EAQtBC,qBAAqB,EAAE;AARD,CAAxB;;AAiBO,SAASC,YAAT,CAAsBC,IAAtB,EAAuD;EAC5D,OAAO,EACL,GAAGV,MADE;IAEL,GAAG,IAAAW,eAAA,EAAOD,IAAP;EAFE,CAAP;AAID"}
1
+ {"version":3,"names":[],"sources":["config.ts"],"sourcesContent":["export interface IConfig {\n appKey: string;\n}\n\nexport type PostAuthApiSpec = {\n method: 'post' | 'put';\n url: string;\n extra_headers: { [key: string]: string };\n};\n"],"mappings":""}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Rownd = exports.LINKING_ERROR = exports.IOSRowndEventEmitter = void 0;
7
+ exports.configure = configure;
8
+ exports.getAccessToken = getAccessToken;
9
+ exports.manageAccount = manageAccount;
10
+ exports.requestSignIn = requestSignIn;
11
+ exports.setUserData = setUserData;
12
+ exports.setUserDataValue = setUserDataValue;
13
+ exports.signOut = signOut;
14
+
15
+ var _reactNative = require("react-native");
16
+
17
+ const LINKING_ERROR = `The package '@rownd/react-native' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
18
+ ios: "- You have run 'pod install'\n",
19
+ default: ''
20
+ }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo managed workflow\n';
21
+ exports.LINKING_ERROR = LINKING_ERROR;
22
+ const Rownd = _reactNative.NativeModules.RowndPlugin ? _reactNative.NativeModules.RowndPlugin : new Proxy({}, {
23
+ get() {
24
+ throw new Error(LINKING_ERROR);
25
+ }
26
+
27
+ });
28
+ exports.Rownd = Rownd;
29
+ const IOSRowndEventEmitter = _reactNative.Platform.OS != 'ios' ? null : _reactNative.NativeModules.RowndPluginEventEmitter ? _reactNative.NativeModules.RowndPluginEventEmitter : new Proxy({}, {
30
+ get() {
31
+ throw new Error(LINKING_ERROR);
32
+ }
33
+
34
+ });
35
+ exports.IOSRowndEventEmitter = IOSRowndEventEmitter;
36
+
37
+ const isNotAvailableInAndroidYet = () => {
38
+ console.log('ROWND: NOT AVAILABLE IN ANDROID YET');
39
+ return true;
40
+ };
41
+
42
+ function configure(appKey) {
43
+ return Rownd.configure(appKey);
44
+ }
45
+
46
+ function requestSignIn() {
47
+ return Rownd.requestSignIn();
48
+ }
49
+
50
+ function signOut() {
51
+ return Rownd.signOut();
52
+ }
53
+
54
+ function manageAccount() {
55
+ return Rownd.manageAccount();
56
+ }
57
+
58
+ function getAccessToken() {
59
+ if (isNotAvailableInAndroidYet()) return Promise.resolve('');
60
+ return Rownd.getAccessToken();
61
+ }
62
+
63
+ function setUserDataValue(key, value) {
64
+ return Rownd.setUserDataValue(key, _reactNative.Platform.OS === 'android' ? {
65
+ value
66
+ } : value);
67
+ }
68
+
69
+ function setUserData(data) {
70
+ return Rownd.setUserData(data);
71
+ }
72
+ //# sourceMappingURL=nativeModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LINKING_ERROR","Platform","select","ios","default","Rownd","NativeModules","RowndPlugin","Proxy","get","Error","IOSRowndEventEmitter","OS","RowndPluginEventEmitter","isNotAvailableInAndroidYet","console","log","configure","appKey","requestSignIn","signOut","manageAccount","getAccessToken","Promise","resolve","setUserDataValue","key","value","setUserData","data"],"sources":["nativeModule.ts"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\n\nexport const LINKING_ERROR =\n `The package '@rownd/react-native' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nexport const Rownd = NativeModules.RowndPlugin\n ? NativeModules.RowndPlugin\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nexport const IOSRowndEventEmitter =\n Platform.OS != 'ios'\n ? null\n : NativeModules.RowndPluginEventEmitter\n ? NativeModules.RowndPluginEventEmitter\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nconst isNotAvailableInAndroidYet = () => {\n console.log('ROWND: NOT AVAILABLE IN ANDROID YET');\n return true;\n};\n\nexport function configure(appKey: string): Promise<string> {\n return Rownd.configure(appKey);\n}\n\nexport function requestSignIn() {\n return Rownd.requestSignIn();\n}\n\nexport function signOut() {\n return Rownd.signOut();\n}\n\nexport function manageAccount() {\n return Rownd.manageAccount();\n}\n\nexport function getAccessToken(): Promise<string> {\n if (isNotAvailableInAndroidYet()) return Promise.resolve('');\n return Rownd.getAccessToken();\n}\n\nexport function setUserDataValue(key: string, value: any) {\n return Rownd.setUserDataValue(\n key,\n Platform.OS === 'android' ? { value } : value\n );\n}\n\nexport function setUserData(data: Record<string, any>) {\n return Rownd.setUserData(data);\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;;AAEO,MAAMA,aAAa,GACvB,8EAAD,GACAC,qBAAA,CAASC,MAAT,CAAgB;EAAEC,GAAG,EAAE,gCAAP;EAAyCC,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJK;;AAMA,MAAMC,KAAK,GAAGC,0BAAA,CAAcC,WAAd,GACjBD,0BAAA,CAAcC,WADG,GAEjB,IAAIC,KAAJ,CACE,EADF,EAEE;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAJ,CAAUV,aAAV,CAAN;EACD;;AAHH,CAFF,CAFG;;AAWA,MAAMW,oBAAoB,GAC/BV,qBAAA,CAASW,EAAT,IAAe,KAAf,GACI,IADJ,GAEIN,0BAAA,CAAcO,uBAAd,GACAP,0BAAA,CAAcO,uBADd,GAEA,IAAIL,KAAJ,CACE,EADF,EAEE;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAJ,CAAUV,aAAV,CAAN;EACD;;AAHH,CAFF,CALC;;;AAcP,MAAMc,0BAA0B,GAAG,MAAM;EACvCC,OAAO,CAACC,GAAR,CAAY,qCAAZ;EACA,OAAO,IAAP;AACD,CAHD;;AAKO,SAASC,SAAT,CAAmBC,MAAnB,EAAoD;EACzD,OAAOb,KAAK,CAACY,SAAN,CAAgBC,MAAhB,CAAP;AACD;;AAEM,SAASC,aAAT,GAAyB;EAC9B,OAAOd,KAAK,CAACc,aAAN,EAAP;AACD;;AAEM,SAASC,OAAT,GAAmB;EACxB,OAAOf,KAAK,CAACe,OAAN,EAAP;AACD;;AAEM,SAASC,aAAT,GAAyB;EAC9B,OAAOhB,KAAK,CAACgB,aAAN,EAAP;AACD;;AAEM,SAASC,cAAT,GAA2C;EAChD,IAAIR,0BAA0B,EAA9B,EAAkC,OAAOS,OAAO,CAACC,OAAR,CAAgB,EAAhB,CAAP;EAClC,OAAOnB,KAAK,CAACiB,cAAN,EAAP;AACD;;AAEM,SAASG,gBAAT,CAA0BC,GAA1B,EAAuCC,KAAvC,EAAmD;EACxD,OAAOtB,KAAK,CAACoB,gBAAN,CACLC,GADK,EAELzB,qBAAA,CAASW,EAAT,KAAgB,SAAhB,GAA4B;IAAEe;EAAF,CAA5B,GAAwCA,KAFnC,CAAP;AAID;;AAEM,SAASC,WAAT,CAAqBC,IAArB,EAAgD;EACrD,OAAOxB,KAAK,CAACuB,WAAN,CAAkBC,IAAlB,CAAP;AACD"}
@@ -1,310 +1,46 @@
1
- import React, { createContext } from 'react';
2
- import { useReducer, useContext } from 'react';
3
- import isEqual from 'lodash-es/isEqual';
4
- import pick from 'lodash-es/pick';
5
- import jwt_decode from 'jwt-decode';
6
- import storage from '../utils/storage';
7
- import { events, EventType } from '../utils/events';
8
- import { ActionType } from '../data/actions';
1
+ import React, { useReducer, createContext, useEffect, useContext } from 'react';
2
+ import { NativeEventEmitter, LogBox, Platform } from 'react-native';
3
+ import { initialRowndState, rowndReducer } from '../reducer/rowndReducer';
4
+ import * as NativeRowndModules from '../utils/nativeModule';
5
+ import { Rownd, IOSRowndEventEmitter } from '../utils/nativeModule';
6
+ import { ActionType } from '../constants/action';
7
+ LogBox.ignoreLogs(['Sending `update_state` with no listeners registered.']);
9
8
  export const GlobalContext = /*#__PURE__*/createContext(undefined);
9
+ const eventEmitter = new NativeEventEmitter(IOSRowndEventEmitter || Rownd);
10
10
 
11
- function handleStateInit(initialState) {
12
- if (storage.contains('state')) {
13
- const state = JSON.parse(storage.getString('state') || '{}');
14
- return { ...initialState,
15
- ...state
16
- };
17
- }
18
-
19
- return initialState;
20
- } // async function updateStorage(newState: any) {
21
- // const oldState = JSON.parse(await storage.getItem('state') || '{}');
22
- // if (!isEqual(oldState, newState)) {
23
- // console.log('writing new state', newState);
24
- // await storage.setItem('state', JSON.stringify(newState));
25
- // }
26
- // }
27
-
28
-
29
- const GlobalContextProvider = _ref => {
11
+ const RowndProvider = _ref => {
30
12
  let {
31
13
  children,
32
14
  config
33
15
  } = _ref;
34
- const initialState = {
35
- is_initializing: false,
36
- is_container_visible: false,
37
- use_modal: false,
38
- nav: {
39
- current_route: '/',
40
- route_trigger: '',
41
- event_id: '',
42
- section: '',
43
- options: {}
44
- },
45
- user: {
46
- data: {
47
- email: null
48
- },
49
- needs_refresh: false,
50
- redacted: []
51
- },
52
- auth: {
53
- access_token: null,
54
- refresh_token: null,
55
- app_id: null
56
- },
57
- app: {
58
- schema: null,
59
- config: null
60
- },
61
- local_acls: null,
62
- is_saving_user_data: false,
63
- config
64
- }; // TODO: There's a better way to do this where we have a set of rules that watch/apply to the state as it changes
65
- // function dispatchExternalEvents(prevState: GlobalState, nextState: GlobalState) {
66
- // // Log in, get new token, load previous auth state, etc
67
- // if (prevState.auth.access_token !== nextState.auth.access_token) {
68
- // events.dispatch(EventType.AUTH, {
69
- // access_token: nextState.auth.access_token,
70
- // user_id: nextState.user.data.id,
71
- // app_id: nextState.auth.app_id,
72
- // });
73
- // }
74
- // // User data changes. Also, fire the event when ACLs change since this affects the data
75
- // // that the application can see.
76
- // if (!isEqual(prevState.local_acls, nextState.local_acls) ||
77
- // !isEqual(prevState.user.data, nextState.user.data)) {
78
- // events.dispatch(EventType.USER_DATA, {
79
- // // The data is filtered on the local_acls
80
- // data: redactUserDataWithAcls(nextState.user.data, nextState.local_acls),
81
- // });
82
- // }
83
- // // Log out
84
- // if (nextState.auth.access_token === null) {
85
- // events.dispatch(EventType.SIGN_OUT, {});
86
- // }
87
- // }
88
-
89
- function mainReducer(state, action) {
90
- var _decodedToken;
91
-
92
- let decodedToken;
93
- let newState; // let cachedAuth;
94
-
95
- switch (action.type) {
96
- case ActionType.SET_CONTAINER_VISIBLE:
97
- newState = { ...state,
98
- is_container_visible: action.payload.isVisible,
99
- use_modal: action.payload.isVisible === false ? false : state.use_modal,
100
- nav: { ...state.nav,
101
- current_route: '/'
102
- }
103
- };
104
- break;
105
-
106
- case ActionType.CHANGE_ROUTE:
107
- newState = { ...state,
108
- nav: { ...state.nav,
109
- current_route: action.payload.route,
110
- route_trigger: action.payload.trigger || '',
111
- event_id: action.payload.event_id,
112
- options: action.payload.opts
113
- }
114
- };
115
- break;
116
-
117
- case ActionType.SET_SECTION:
118
- newState = { ...state,
119
- nav: { ...state.nav,
120
- section: action.payload.section
121
- }
122
- };
123
- break;
124
-
125
- case ActionType.LOGIN_SUCCESS:
126
- // storage.setItem('auth', JSON.stringify(action.payload));
127
- decodedToken = jwt_decode(action.payload.access_token); // Ensure this token is for this app
128
-
129
- if (action.payload.app_id !== state.app.id) {
130
- return { ...state
131
- };
132
- }
133
-
134
- newState = { ...state,
135
- auth: { ...state.auth,
136
- access_token: action.payload.access_token,
137
- refresh_token: action.payload.refresh_token,
138
- app_id: action.payload.app_id,
139
- is_verified_user: ((_decodedToken = decodedToken) === null || _decodedToken === void 0 ? void 0 : _decodedToken['https://auth.rownd.io/is_verified_user']) !== false // default is `true` if the attribute doesn't exist
140
-
141
- },
142
- user: { ...state.user,
143
- data: { ...state.user.data,
144
- id: action.payload.app_user_id
145
- }
146
- }
147
- };
148
- break;
149
-
150
- case ActionType.SIGN_OUT:
151
- // storage.removeItem('auth');
152
- newState = { ...state,
153
- user: {
154
- data: {
155
- email: null
156
- },
157
- redacted: []
158
- },
159
- auth: {
160
- access_token: null,
161
- refresh_token: null,
162
- app_id: null
163
- }
164
- };
165
- break;
166
-
167
- case ActionType.REFRESH_TOKEN:
168
- newState = { ...state,
169
- auth: { ...state.auth,
170
- access_token: action.payload.access_token,
171
- refresh_token: action.payload.refresh_token
172
- }
173
- }; // cachedAuth = storage.getItem('auth');
174
- // if (cachedAuth) {
175
- // const cachedAuthObj = JSON.parse(cachedAuth);
176
- // cachedAuth = {
177
- // ...cachedAuthObj,
178
- // ...newState.auth,
179
- // };
180
- // storage.setItem('auth', JSON.stringify(newState.auth));
181
- // }
182
-
183
- break;
184
-
185
- case ActionType.LOAD_USER:
186
- newState = { ...state,
187
- user: { ...state.user,
188
- data: { ...action.payload.data
189
- },
190
- redacted: action.payload.redacted
191
- }
192
- };
193
- break;
194
-
195
- case ActionType.UPDATE_LOCAL_ACLS:
196
- newState = { ...state,
197
- local_acls: { ...state.local_acls,
198
- ...action.payload
199
- }
200
- };
201
- break;
202
-
203
- case ActionType.SET_USER_DATA_FIELD:
204
- // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data
205
- // was not changed and no request to Rownd was ever made.
206
- if (state.user.data[action.payload.field] === action.payload.value) {
207
- events.dispatch(EventType.USER_DATA_SAVED, state.user.data);
208
- }
209
-
210
- newState = { ...state,
211
- user: { ...state.user,
212
- data: { ...state.user.data,
213
- [action.payload.field]: action.payload.value
214
- }
215
- }
216
- };
217
- break;
218
-
219
- case ActionType.SET_USER_DATA:
220
- // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data
221
- // was not changed and no request to Rownd was ever made.
222
- if (isEqual(pick(state.user.data, Object.keys(action.payload.data)), action.payload.data)) {
223
- events.dispatch(EventType.USER_DATA_SAVED, state.user.data);
224
- }
225
-
226
- newState = { ...state,
227
- user: { ...state.user,
228
- data: { ...state.user.data,
229
- ...action.payload.data
230
- }
231
- }
232
- };
233
- break;
234
-
235
- case ActionType.SET_REFRESH_USER_DATA:
236
- newState = { ...state,
237
- user: { ...state.user,
238
- needs_refresh: action.payload.needs_refresh
239
- }
240
- };
241
- break;
242
-
243
- case ActionType.LOAD_STATE:
244
- newState = { ...action.payload
245
- };
246
- break;
247
-
248
- case ActionType.SET_IS_SAVING_USER_DATA:
249
- {
250
- newState = { ...state,
251
- is_saving_user_data: action.payload.saving
252
- };
253
- break;
254
- }
255
-
256
- case ActionType.SET_APP_CONFIG:
257
- newState = { ...state,
258
- app: { ...state.app,
259
- ...action.payload
260
- }
261
- };
262
- break;
263
-
264
- default:
265
- newState = state;
266
- } // Write state to local storage, minus a few fields
267
-
268
-
269
- const persistedState = { ...newState
270
- };
271
- delete persistedState.config;
272
- delete persistedState.nav;
273
- delete persistedState.is_container_visible;
274
- delete persistedState.use_modal;
275
- delete persistedState.is_initializing;
276
- delete persistedState.is_saving_user_data; // updateStorage(persistedState);
277
-
278
- storage.set('state', JSON.stringify(persistedState)); // Fire any events that depend on state updates
279
- // dispatchExternalEvents(state, newState);
280
-
281
- return newState;
282
- }
283
-
284
- const [state, dispatch] = useReducer(mainReducer, initialState, handleStateInit); // Async load cached state from storage
285
- // useEffect(() => {
286
- // (async () => {
287
- // const existingStateStr = await storage.getItem('state');
288
- // if (!existingStateStr) {
289
- // return;
290
- // }
291
- // dispatch({
292
- // type: ActionType.LOAD_STATE,
293
- // payload: JSON.parse(existingStateStr),
294
- // });
295
- // });
296
- // }, []);
297
-
16
+ const [state, dispatch] = useReducer(rowndReducer, initialRowndState);
298
17
  const value = {
299
18
  state,
300
19
  dispatch
301
20
  };
21
+ useEffect(() => {
22
+ NativeRowndModules.configure(config.appKey);
23
+ }, [config.appKey]);
24
+ useEffect(() => {
25
+ const onSessionConnect = event => {
26
+ dispatch({
27
+ type: ActionType.UPDATE_STATE,
28
+ payload: Platform.OS === 'android' ? JSON.parse(event.state) : event
29
+ });
30
+ };
31
+
32
+ const subscription = eventEmitter.addListener('update_state', onSessionConnect);
33
+ if (!subscription) return;
34
+ return () => {
35
+ subscription.remove();
36
+ };
37
+ }, []);
302
38
  return /*#__PURE__*/React.createElement(GlobalContext.Provider, {
303
39
  value: value
304
40
  }, children);
305
41
  };
306
42
 
307
- function useGlobalContext() {
43
+ function useRowndContext() {
308
44
  const context = useContext(GlobalContext);
309
45
 
310
46
  if (context === undefined) {
@@ -314,5 +50,5 @@ function useGlobalContext() {
314
50
  return context;
315
51
  }
316
52
 
317
- export { GlobalContextProvider, useGlobalContext };
53
+ export { RowndProvider, useRowndContext };
318
54
  //# sourceMappingURL=GlobalContext.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useReducer","useContext","isEqual","pick","jwt_decode","storage","events","EventType","ActionType","GlobalContext","undefined","handleStateInit","initialState","contains","state","JSON","parse","getString","GlobalContextProvider","children","config","is_initializing","is_container_visible","use_modal","nav","current_route","route_trigger","event_id","section","options","user","data","email","needs_refresh","redacted","auth","access_token","refresh_token","app_id","app","schema","local_acls","is_saving_user_data","mainReducer","action","decodedToken","newState","type","SET_CONTAINER_VISIBLE","payload","isVisible","CHANGE_ROUTE","route","trigger","opts","SET_SECTION","LOGIN_SUCCESS","id","is_verified_user","app_user_id","SIGN_OUT","REFRESH_TOKEN","LOAD_USER","UPDATE_LOCAL_ACLS","SET_USER_DATA_FIELD","field","value","dispatch","USER_DATA_SAVED","SET_USER_DATA","Object","keys","SET_REFRESH_USER_DATA","LOAD_STATE","SET_IS_SAVING_USER_DATA","saving","SET_APP_CONFIG","persistedState","set","stringify","useGlobalContext","context","Error"],"sources":["GlobalContext.tsx"],"sourcesContent":["import React, { createContext, FunctionComponent } from 'react';\nimport { useReducer, useContext } from 'react';\nimport isEqual from 'lodash-es/isEqual';\nimport pick from 'lodash-es/pick';\nimport jwt_decode from 'jwt-decode';\nimport { IConfig } from '../utils/config';\nimport storage from '../utils/storage';\nimport { events, EventType } from '../utils/events';\n\nimport { TAction, ActionType } from '../data/actions';\n\ntype Dispatch = (action: TAction) => void;\n\nexport type GlobalState = {\n is_initializing: boolean;\n is_container_visible: boolean;\n use_modal: boolean;\n nav: {\n current_route: string;\n route_trigger: string;\n event_id: string;\n section: string;\n options?: any;\n };\n user: {\n data: {\n id?: string;\n email: string | null;\n [key: string]: any;\n };\n needs_refresh?: boolean;\n redacted: string[];\n };\n auth: {\n access_token: string | null;\n refresh_token: string | null;\n app_id: string | null;\n init_data?: Record<string, any>;\n is_verified_user?: boolean;\n };\n app: {\n id?: string;\n icon?: string;\n icon_content_type?: string;\n config: AppConfig | null;\n schema: AppSchema | null;\n user_verification_field?: string;\n user_verification_fields?: string[];\n };\n local_acls: Record<string, { shared: boolean }> | null;\n is_saving_user_data: boolean;\n config?: IConfig;\n};\n\ntype AppSchema = Record<string, SchemaField>;\n\nexport interface SchemaField {\n display_name: string;\n type: string;\n data_category: string;\n required: boolean;\n owned_by: string;\n user_visible: boolean;\n revoke_after: string;\n required_retention: string;\n collection_justification: string;\n opt_out_warning: string;\n}\n\ninterface AppConfig {\n customizations: {\n primary_color: string;\n };\n default_user_id_format?: string;\n hub: {\n auth: {\n allow_unverified_users?: boolean;\n additional_fields: [\n {\n name: string;\n type: string;\n label: string;\n placeholder?: string;\n options: [\n {\n value: string;\n label: string;\n }\n ];\n }\n ];\n email: {\n from_address: string;\n image: string;\n };\n show_app_icon: boolean;\n };\n customizations: HubCustomizations;\n };\n}\n\nexport interface HubCustomizations {\n rounded_corners: boolean;\n primary_color: string;\n placement: 'bottom-left' | 'hidden';\n offset_x: number;\n offset_y: number;\n property_overrides: Record<string, string>;\n}\n\ntype ContextProps = {\n config: IConfig;\n};\n\nexport const GlobalContext = createContext<\n { state: GlobalState; dispatch: Dispatch } | undefined\n>(undefined);\n\nfunction handleStateInit(initialState: GlobalState) {\n if (storage.contains('state')) {\n const state = JSON.parse(storage.getString('state') || '{}');\n\n return {\n ...initialState,\n ...state,\n };\n }\n\n return initialState;\n}\n\n// async function updateStorage(newState: any) {\n// const oldState = JSON.parse(await storage.getItem('state') || '{}');\n\n// if (!isEqual(oldState, newState)) {\n// console.log('writing new state', newState);\n// await storage.setItem('state', JSON.stringify(newState));\n// }\n// }\n\nconst GlobalContextProvider: FunctionComponent<ContextProps> = ({\n children,\n config,\n}) => {\n const initialState: GlobalState = {\n is_initializing: false,\n is_container_visible: false,\n use_modal: false,\n nav: {\n current_route: '/',\n route_trigger: '',\n event_id: '',\n section: '',\n options: {},\n },\n user: {\n data: {\n email: null,\n },\n needs_refresh: false,\n redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n app: {\n schema: null,\n config: null,\n },\n local_acls: null,\n is_saving_user_data: false,\n config,\n };\n\n // TODO: There's a better way to do this where we have a set of rules that watch/apply to the state as it changes\n // function dispatchExternalEvents(prevState: GlobalState, nextState: GlobalState) {\n\n // // Log in, get new token, load previous auth state, etc\n // if (prevState.auth.access_token !== nextState.auth.access_token) {\n // events.dispatch(EventType.AUTH, {\n // access_token: nextState.auth.access_token,\n // user_id: nextState.user.data.id,\n // app_id: nextState.auth.app_id,\n // });\n // }\n\n // // User data changes. Also, fire the event when ACLs change since this affects the data\n // // that the application can see.\n // if (!isEqual(prevState.local_acls, nextState.local_acls) ||\n // !isEqual(prevState.user.data, nextState.user.data)) {\n // events.dispatch(EventType.USER_DATA, {\n // // The data is filtered on the local_acls\n // data: redactUserDataWithAcls(nextState.user.data, nextState.local_acls),\n // });\n // }\n\n // // Log out\n // if (nextState.auth.access_token === null) {\n // events.dispatch(EventType.SIGN_OUT, {});\n // }\n // }\n\n function mainReducer(state: GlobalState, action: TAction): GlobalState {\n let decodedToken: any;\n\n let newState;\n // let cachedAuth;\n switch (action.type) {\n case ActionType.SET_CONTAINER_VISIBLE:\n newState = {\n ...state,\n is_container_visible: action.payload.isVisible,\n use_modal:\n action.payload.isVisible === false ? false : state.use_modal,\n nav: {\n ...state.nav,\n current_route: '/',\n },\n };\n break;\n\n case ActionType.CHANGE_ROUTE:\n newState = {\n ...state,\n nav: {\n ...state.nav,\n current_route: action.payload.route,\n route_trigger: action.payload.trigger || '',\n event_id: action.payload.event_id,\n options: action.payload.opts,\n },\n };\n\n break;\n\n case ActionType.SET_SECTION:\n newState = {\n ...state,\n nav: {\n ...state.nav,\n section: action.payload.section,\n },\n };\n break;\n\n case ActionType.LOGIN_SUCCESS:\n // storage.setItem('auth', JSON.stringify(action.payload));\n decodedToken = jwt_decode(action.payload.access_token);\n\n // Ensure this token is for this app\n if (action.payload.app_id !== state.app.id) {\n return {\n ...state,\n };\n }\n\n newState = {\n ...state,\n auth: {\n ...state.auth,\n access_token: action.payload.access_token,\n refresh_token: action.payload.refresh_token,\n app_id: action.payload.app_id,\n is_verified_user:\n decodedToken?.['https://auth.rownd.io/is_verified_user'] !==\n false, // default is `true` if the attribute doesn't exist\n },\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n id: action.payload.app_user_id,\n },\n },\n };\n break;\n\n case ActionType.SIGN_OUT:\n // storage.removeItem('auth');\n newState = {\n ...state,\n user: {\n data: {\n email: null,\n },\n redacted: [],\n },\n auth: {\n access_token: null,\n refresh_token: null,\n app_id: null,\n },\n };\n break;\n\n case ActionType.REFRESH_TOKEN:\n newState = {\n ...state,\n auth: {\n ...state.auth,\n access_token: action.payload.access_token,\n refresh_token: action.payload.refresh_token,\n },\n };\n\n // cachedAuth = storage.getItem('auth');\n // if (cachedAuth) {\n // const cachedAuthObj = JSON.parse(cachedAuth);\n // cachedAuth = {\n // ...cachedAuthObj,\n // ...newState.auth,\n // };\n // storage.setItem('auth', JSON.stringify(newState.auth));\n // }\n\n break;\n\n case ActionType.LOAD_USER:\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...action.payload.data,\n },\n redacted: action.payload.redacted,\n },\n };\n break;\n\n case ActionType.UPDATE_LOCAL_ACLS:\n newState = {\n ...state,\n local_acls: {\n ...state.local_acls,\n ...action.payload,\n },\n };\n break;\n\n case ActionType.SET_USER_DATA_FIELD:\n // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data\n // was not changed and no request to Rownd was ever made.\n if (state.user.data[action.payload.field] === action.payload.value) {\n events.dispatch(EventType.USER_DATA_SAVED, state.user.data);\n }\n\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n [action.payload.field]: action.payload.value,\n },\n },\n };\n break;\n\n case ActionType.SET_USER_DATA:\n // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data\n // was not changed and no request to Rownd was ever made.\n if (\n isEqual(\n pick(state.user.data, Object.keys(action.payload.data)),\n action.payload.data\n )\n ) {\n events.dispatch(EventType.USER_DATA_SAVED, state.user.data);\n }\n\n newState = {\n ...state,\n user: {\n ...state.user,\n data: {\n ...state.user.data,\n ...action.payload.data,\n },\n },\n };\n break;\n\n case ActionType.SET_REFRESH_USER_DATA:\n newState = {\n ...state,\n user: {\n ...state.user,\n needs_refresh: action.payload.needs_refresh,\n },\n };\n break;\n\n case ActionType.LOAD_STATE:\n newState = {\n ...action.payload,\n };\n break;\n\n case ActionType.SET_IS_SAVING_USER_DATA: {\n newState = {\n ...state,\n is_saving_user_data: action.payload.saving,\n };\n break;\n }\n\n case ActionType.SET_APP_CONFIG:\n newState = {\n ...state,\n app: {\n ...state.app,\n ...action.payload,\n },\n };\n break;\n\n default:\n newState = state;\n }\n\n // Write state to local storage, minus a few fields\n const persistedState: any = { ...newState };\n delete persistedState.config;\n delete persistedState.nav;\n delete persistedState.is_container_visible;\n delete persistedState.use_modal;\n delete persistedState.is_initializing;\n delete persistedState.is_saving_user_data;\n\n // updateStorage(persistedState);\n storage.set('state', JSON.stringify(persistedState));\n\n // Fire any events that depend on state updates\n // dispatchExternalEvents(state, newState);\n\n return newState;\n }\n\n const [state, dispatch] = useReducer(\n mainReducer,\n initialState,\n handleStateInit\n );\n\n // Async load cached state from storage\n // useEffect(() => {\n // (async () => {\n // const existingStateStr = await storage.getItem('state');\n\n // if (!existingStateStr) {\n // return;\n // }\n\n // dispatch({\n // type: ActionType.LOAD_STATE,\n // payload: JSON.parse(existingStateStr),\n // });\n // });\n // }, []);\n\n const value = { state, dispatch };\n return (\n <GlobalContext.Provider value={value}>\n {children}\n {/* <ExternalApi config={config} dispatchEvents={(state: GlobalState) => dispatchExternalEvents(initialState, state)} /> */}\n </GlobalContext.Provider>\n );\n};\n\nfunction useGlobalContext() {\n const context = useContext(GlobalContext);\n\n if (context === undefined) {\n throw new Error(\n 'useGlobalContext must be used within a GlobalContext Provider'\n );\n }\n\n return context;\n}\n\nexport { GlobalContextProvider, useGlobalContext };\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useReducer","createContext","useEffect","useContext","NativeEventEmitter","LogBox","Platform","initialRowndState","rowndReducer","NativeRowndModules","Rownd","IOSRowndEventEmitter","ActionType","ignoreLogs","GlobalContext","undefined","eventEmitter","RowndProvider","children","config","state","dispatch","value","configure","appKey","onSessionConnect","event","type","UPDATE_STATE","payload","OS","JSON","parse","subscription","addListener","remove","useRowndContext","context","Error"],"sources":["GlobalContext.tsx"],"sourcesContent":["import React, {\n useReducer,\n createContext,\n FunctionComponent,\n useEffect,\n useContext,\n} from 'react';\nimport { NativeEventEmitter, LogBox, Platform } from 'react-native';\nimport { initialRowndState, rowndReducer } from '../reducer/rowndReducer';\n\nimport * as NativeRowndModules from '../utils/nativeModule';\nimport { Rownd, IOSRowndEventEmitter } from '../utils/nativeModule';\nimport type { ContextProps, GlobalState } from './GlobalContext.types';\nimport type { TAction } from '../constants/action';\nimport { ActionType } from '../constants/action';\n\nLogBox.ignoreLogs(['Sending `update_state` with no listeners registered.']);\n\nexport const GlobalContext = createContext<\n { state: GlobalState; dispatch: React.Dispatch<TAction> } | undefined\n>(undefined);\n\nconst eventEmitter = new NativeEventEmitter(IOSRowndEventEmitter || Rownd);\n\nconst RowndProvider: FunctionComponent<ContextProps> = ({\n children,\n config,\n}) => {\n const [state, dispatch] = useReducer(rowndReducer, initialRowndState);\n const value = { state, dispatch };\n\n useEffect(() => {\n NativeRowndModules.configure(config.appKey);\n }, [config.appKey]);\n\n useEffect(() => {\n const onSessionConnect = (event: any) => {\n dispatch({\n type: ActionType.UPDATE_STATE,\n payload: Platform.OS === 'android' ? JSON.parse(event.state) : event,\n });\n };\n const subscription = eventEmitter.addListener(\n 'update_state',\n onSessionConnect\n );\n\n if (!subscription) return;\n\n return () => {\n subscription.remove();\n };\n }, []);\n\n return (\n <GlobalContext.Provider value={value}>{children}</GlobalContext.Provider>\n );\n};\n\nfunction useRowndContext() {\n const context = useContext(GlobalContext);\n\n if (context === undefined) {\n throw new Error(\n 'useGlobalContext must be used within a GlobalContext Provider'\n );\n }\n\n return context;\n}\n\nexport { RowndProvider, useRowndContext };\n"],"mappings":"AAAA,OAAOA,KAAP,IACEC,UADF,EAEEC,aAFF,EAIEC,SAJF,EAKEC,UALF,QAMO,OANP;AAOA,SAASC,kBAAT,EAA6BC,MAA7B,EAAqCC,QAArC,QAAqD,cAArD;AACA,SAASC,iBAAT,EAA4BC,YAA5B,QAAgD,yBAAhD;AAEA,OAAO,KAAKC,kBAAZ,MAAoC,uBAApC;AACA,SAASC,KAAT,EAAgBC,oBAAhB,QAA4C,uBAA5C;AAGA,SAASC,UAAT,QAA2B,qBAA3B;AAEAP,MAAM,CAACQ,UAAP,CAAkB,CAAC,sDAAD,CAAlB;AAEA,OAAO,MAAMC,aAAa,gBAAGb,aAAa,CAExCc,SAFwC,CAAnC;AAIP,MAAMC,YAAY,GAAG,IAAIZ,kBAAJ,CAAuBO,oBAAoB,IAAID,KAA/C,CAArB;;AAEA,MAAMO,aAA8C,GAAG,QAGjD;EAAA,IAHkD;IACtDC,QADsD;IAEtDC;EAFsD,CAGlD;EACJ,MAAM,CAACC,KAAD,EAAQC,QAAR,IAAoBrB,UAAU,CAACQ,YAAD,EAAeD,iBAAf,CAApC;EACA,MAAMe,KAAK,GAAG;IAAEF,KAAF;IAASC;EAAT,CAAd;EAEAnB,SAAS,CAAC,MAAM;IACdO,kBAAkB,CAACc,SAAnB,CAA6BJ,MAAM,CAACK,MAApC;EACD,CAFQ,EAEN,CAACL,MAAM,CAACK,MAAR,CAFM,CAAT;EAIAtB,SAAS,CAAC,MAAM;IACd,MAAMuB,gBAAgB,GAAIC,KAAD,IAAgB;MACvCL,QAAQ,CAAC;QACPM,IAAI,EAAEf,UAAU,CAACgB,YADV;QAEPC,OAAO,EAAEvB,QAAQ,CAACwB,EAAT,KAAgB,SAAhB,GAA4BC,IAAI,CAACC,KAAL,CAAWN,KAAK,CAACN,KAAjB,CAA5B,GAAsDM;MAFxD,CAAD,CAAR;IAID,CALD;;IAMA,MAAMO,YAAY,GAAGjB,YAAY,CAACkB,WAAb,CACnB,cADmB,EAEnBT,gBAFmB,CAArB;IAKA,IAAI,CAACQ,YAAL,EAAmB;IAEnB,OAAO,MAAM;MACXA,YAAY,CAACE,MAAb;IACD,CAFD;EAGD,CAjBQ,EAiBN,EAjBM,CAAT;EAmBA,oBACE,oBAAC,aAAD,CAAe,QAAf;IAAwB,KAAK,EAAEb;EAA/B,GAAuCJ,QAAvC,CADF;AAGD,CAjCD;;AAmCA,SAASkB,eAAT,GAA2B;EACzB,MAAMC,OAAO,GAAGlC,UAAU,CAACW,aAAD,CAA1B;;EAEA,IAAIuB,OAAO,KAAKtB,SAAhB,EAA2B;IACzB,MAAM,IAAIuB,KAAJ,CACJ,+DADI,CAAN;EAGD;;EAED,OAAOD,OAAP;AACD;;AAED,SAASpB,aAAT,EAAwBmB,eAAxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GlobalContext.types.js.map