@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,332 +3,64 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.GlobalContextProvider = exports.GlobalContext = void 0;
7
- exports.useGlobalContext = useGlobalContext;
6
+ exports.RowndProvider = exports.GlobalContext = void 0;
7
+ exports.useRowndContext = useRowndContext;
8
8
 
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
 
11
- var _isEqual = _interopRequireDefault(require("lodash-es/isEqual"));
11
+ var _reactNative = require("react-native");
12
12
 
13
- var _pick = _interopRequireDefault(require("lodash-es/pick"));
13
+ var _rowndReducer = require("../reducer/rowndReducer");
14
14
 
15
- var _jwtDecode = _interopRequireDefault(require("jwt-decode"));
15
+ var NativeRowndModules = _interopRequireWildcard(require("../utils/nativeModule"));
16
16
 
17
- var _storage = _interopRequireDefault(require("../utils/storage"));
18
-
19
- var _events = require("../utils/events");
20
-
21
- var _actions = require("../data/actions");
22
-
23
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ var _action = require("../constants/action");
24
18
 
25
19
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
20
 
27
21
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
22
 
23
+ _reactNative.LogBox.ignoreLogs(['Sending `update_state` with no listeners registered.']);
24
+
29
25
  const GlobalContext = /*#__PURE__*/(0, _react.createContext)(undefined);
30
26
  exports.GlobalContext = GlobalContext;
27
+ const eventEmitter = new _reactNative.NativeEventEmitter(NativeRowndModules.IOSRowndEventEmitter || NativeRowndModules.Rownd);
31
28
 
32
- function handleStateInit(initialState) {
33
- if (_storage.default.contains('state')) {
34
- const state = JSON.parse(_storage.default.getString('state') || '{}');
35
- return { ...initialState,
36
- ...state
37
- };
38
- }
39
-
40
- return initialState;
41
- } // async function updateStorage(newState: any) {
42
- // const oldState = JSON.parse(await storage.getItem('state') || '{}');
43
- // if (!isEqual(oldState, newState)) {
44
- // console.log('writing new state', newState);
45
- // await storage.setItem('state', JSON.stringify(newState));
46
- // }
47
- // }
48
-
49
-
50
- const GlobalContextProvider = _ref => {
29
+ const RowndProvider = _ref => {
51
30
  let {
52
31
  children,
53
32
  config
54
33
  } = _ref;
55
- const initialState = {
56
- is_initializing: false,
57
- is_container_visible: false,
58
- use_modal: false,
59
- nav: {
60
- current_route: '/',
61
- route_trigger: '',
62
- event_id: '',
63
- section: '',
64
- options: {}
65
- },
66
- user: {
67
- data: {
68
- email: null
69
- },
70
- needs_refresh: false,
71
- redacted: []
72
- },
73
- auth: {
74
- access_token: null,
75
- refresh_token: null,
76
- app_id: null
77
- },
78
- app: {
79
- schema: null,
80
- config: null
81
- },
82
- local_acls: null,
83
- is_saving_user_data: false,
84
- config
85
- }; // 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
86
- // function dispatchExternalEvents(prevState: GlobalState, nextState: GlobalState) {
87
- // // Log in, get new token, load previous auth state, etc
88
- // if (prevState.auth.access_token !== nextState.auth.access_token) {
89
- // events.dispatch(EventType.AUTH, {
90
- // access_token: nextState.auth.access_token,
91
- // user_id: nextState.user.data.id,
92
- // app_id: nextState.auth.app_id,
93
- // });
94
- // }
95
- // // User data changes. Also, fire the event when ACLs change since this affects the data
96
- // // that the application can see.
97
- // if (!isEqual(prevState.local_acls, nextState.local_acls) ||
98
- // !isEqual(prevState.user.data, nextState.user.data)) {
99
- // events.dispatch(EventType.USER_DATA, {
100
- // // The data is filtered on the local_acls
101
- // data: redactUserDataWithAcls(nextState.user.data, nextState.local_acls),
102
- // });
103
- // }
104
- // // Log out
105
- // if (nextState.auth.access_token === null) {
106
- // events.dispatch(EventType.SIGN_OUT, {});
107
- // }
108
- // }
109
-
110
- function mainReducer(state, action) {
111
- var _decodedToken;
112
-
113
- let decodedToken;
114
- let newState; // let cachedAuth;
115
-
116
- switch (action.type) {
117
- case _actions.ActionType.SET_CONTAINER_VISIBLE:
118
- newState = { ...state,
119
- is_container_visible: action.payload.isVisible,
120
- use_modal: action.payload.isVisible === false ? false : state.use_modal,
121
- nav: { ...state.nav,
122
- current_route: '/'
123
- }
124
- };
125
- break;
126
-
127
- case _actions.ActionType.CHANGE_ROUTE:
128
- newState = { ...state,
129
- nav: { ...state.nav,
130
- current_route: action.payload.route,
131
- route_trigger: action.payload.trigger || '',
132
- event_id: action.payload.event_id,
133
- options: action.payload.opts
134
- }
135
- };
136
- break;
137
-
138
- case _actions.ActionType.SET_SECTION:
139
- newState = { ...state,
140
- nav: { ...state.nav,
141
- section: action.payload.section
142
- }
143
- };
144
- break;
145
-
146
- case _actions.ActionType.LOGIN_SUCCESS:
147
- // storage.setItem('auth', JSON.stringify(action.payload));
148
- decodedToken = (0, _jwtDecode.default)(action.payload.access_token); // Ensure this token is for this app
149
-
150
- if (action.payload.app_id !== state.app.id) {
151
- return { ...state
152
- };
153
- }
154
-
155
- newState = { ...state,
156
- auth: { ...state.auth,
157
- access_token: action.payload.access_token,
158
- refresh_token: action.payload.refresh_token,
159
- app_id: action.payload.app_id,
160
- 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
161
-
162
- },
163
- user: { ...state.user,
164
- data: { ...state.user.data,
165
- id: action.payload.app_user_id
166
- }
167
- }
168
- };
169
- break;
170
-
171
- case _actions.ActionType.SIGN_OUT:
172
- // storage.removeItem('auth');
173
- newState = { ...state,
174
- user: {
175
- data: {
176
- email: null
177
- },
178
- redacted: []
179
- },
180
- auth: {
181
- access_token: null,
182
- refresh_token: null,
183
- app_id: null
184
- }
185
- };
186
- break;
187
-
188
- case _actions.ActionType.REFRESH_TOKEN:
189
- newState = { ...state,
190
- auth: { ...state.auth,
191
- access_token: action.payload.access_token,
192
- refresh_token: action.payload.refresh_token
193
- }
194
- }; // cachedAuth = storage.getItem('auth');
195
- // if (cachedAuth) {
196
- // const cachedAuthObj = JSON.parse(cachedAuth);
197
- // cachedAuth = {
198
- // ...cachedAuthObj,
199
- // ...newState.auth,
200
- // };
201
- // storage.setItem('auth', JSON.stringify(newState.auth));
202
- // }
203
-
204
- break;
205
-
206
- case _actions.ActionType.LOAD_USER:
207
- newState = { ...state,
208
- user: { ...state.user,
209
- data: { ...action.payload.data
210
- },
211
- redacted: action.payload.redacted
212
- }
213
- };
214
- break;
215
-
216
- case _actions.ActionType.UPDATE_LOCAL_ACLS:
217
- newState = { ...state,
218
- local_acls: { ...state.local_acls,
219
- ...action.payload
220
- }
221
- };
222
- break;
223
-
224
- case _actions.ActionType.SET_USER_DATA_FIELD:
225
- // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data
226
- // was not changed and no request to Rownd was ever made.
227
- if (state.user.data[action.payload.field] === action.payload.value) {
228
- _events.events.dispatch(_events.EventType.USER_DATA_SAVED, state.user.data);
229
- }
230
-
231
- newState = { ...state,
232
- user: { ...state.user,
233
- data: { ...state.user.data,
234
- [action.payload.field]: action.payload.value
235
- }
236
- }
237
- };
238
- break;
239
-
240
- case _actions.ActionType.SET_USER_DATA:
241
- // Dispatch a USER_DATA_SAVED event to satisfy event listeners when the data
242
- // was not changed and no request to Rownd was ever made.
243
- if ((0, _isEqual.default)((0, _pick.default)(state.user.data, Object.keys(action.payload.data)), action.payload.data)) {
244
- _events.events.dispatch(_events.EventType.USER_DATA_SAVED, state.user.data);
245
- }
246
-
247
- newState = { ...state,
248
- user: { ...state.user,
249
- data: { ...state.user.data,
250
- ...action.payload.data
251
- }
252
- }
253
- };
254
- break;
255
-
256
- case _actions.ActionType.SET_REFRESH_USER_DATA:
257
- newState = { ...state,
258
- user: { ...state.user,
259
- needs_refresh: action.payload.needs_refresh
260
- }
261
- };
262
- break;
263
-
264
- case _actions.ActionType.LOAD_STATE:
265
- newState = { ...action.payload
266
- };
267
- break;
268
-
269
- case _actions.ActionType.SET_IS_SAVING_USER_DATA:
270
- {
271
- newState = { ...state,
272
- is_saving_user_data: action.payload.saving
273
- };
274
- break;
275
- }
276
-
277
- case _actions.ActionType.SET_APP_CONFIG:
278
- newState = { ...state,
279
- app: { ...state.app,
280
- ...action.payload
281
- }
282
- };
283
- break;
284
-
285
- default:
286
- newState = state;
287
- } // Write state to local storage, minus a few fields
288
-
289
-
290
- const persistedState = { ...newState
291
- };
292
- delete persistedState.config;
293
- delete persistedState.nav;
294
- delete persistedState.is_container_visible;
295
- delete persistedState.use_modal;
296
- delete persistedState.is_initializing;
297
- delete persistedState.is_saving_user_data; // updateStorage(persistedState);
298
-
299
- _storage.default.set('state', JSON.stringify(persistedState)); // Fire any events that depend on state updates
300
- // dispatchExternalEvents(state, newState);
301
-
302
-
303
- return newState;
304
- }
305
-
306
- const [state, dispatch] = (0, _react.useReducer)(mainReducer, initialState, handleStateInit); // Async load cached state from storage
307
- // useEffect(() => {
308
- // (async () => {
309
- // const existingStateStr = await storage.getItem('state');
310
- // if (!existingStateStr) {
311
- // return;
312
- // }
313
- // dispatch({
314
- // type: ActionType.LOAD_STATE,
315
- // payload: JSON.parse(existingStateStr),
316
- // });
317
- // });
318
- // }, []);
319
-
34
+ const [state, dispatch] = (0, _react.useReducer)(_rowndReducer.rowndReducer, _rowndReducer.initialRowndState);
320
35
  const value = {
321
36
  state,
322
37
  dispatch
323
38
  };
39
+ (0, _react.useEffect)(() => {
40
+ NativeRowndModules.configure(config.appKey);
41
+ }, [config.appKey]);
42
+ (0, _react.useEffect)(() => {
43
+ const onSessionConnect = event => {
44
+ dispatch({
45
+ type: _action.ActionType.UPDATE_STATE,
46
+ payload: _reactNative.Platform.OS === 'android' ? JSON.parse(event.state) : event
47
+ });
48
+ };
49
+
50
+ const subscription = eventEmitter.addListener('update_state', onSessionConnect);
51
+ if (!subscription) return;
52
+ return () => {
53
+ subscription.remove();
54
+ };
55
+ }, []);
324
56
  return /*#__PURE__*/_react.default.createElement(GlobalContext.Provider, {
325
57
  value: value
326
58
  }, children);
327
59
  };
328
60
 
329
- exports.GlobalContextProvider = GlobalContextProvider;
61
+ exports.RowndProvider = RowndProvider;
330
62
 
331
- function useGlobalContext() {
63
+ function useRowndContext() {
332
64
  const context = (0, _react.useContext)(GlobalContext);
333
65
 
334
66
  if (context === undefined) {
@@ -1 +1 @@
1
- {"version":3,"names":["GlobalContext","createContext","undefined","handleStateInit","initialState","storage","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","ActionType","SET_CONTAINER_VISIBLE","payload","isVisible","CHANGE_ROUTE","route","trigger","opts","SET_SECTION","LOGIN_SUCCESS","jwt_decode","id","is_verified_user","app_user_id","SIGN_OUT","REFRESH_TOKEN","LOAD_USER","UPDATE_LOCAL_ACLS","SET_USER_DATA_FIELD","field","value","events","dispatch","EventType","USER_DATA_SAVED","SET_USER_DATA","isEqual","pick","Object","keys","SET_REFRESH_USER_DATA","LOAD_STATE","SET_IS_SAVING_USER_DATA","saving","SET_APP_CONFIG","persistedState","set","stringify","useReducer","useGlobalContext","context","useContext","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":["LogBox","ignoreLogs","GlobalContext","createContext","undefined","eventEmitter","NativeEventEmitter","IOSRowndEventEmitter","Rownd","RowndProvider","children","config","state","dispatch","useReducer","rowndReducer","initialRowndState","value","useEffect","NativeRowndModules","configure","appKey","onSessionConnect","event","type","ActionType","UPDATE_STATE","payload","Platform","OS","JSON","parse","subscription","addListener","remove","useRowndContext","context","useContext","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;;AAOA;;AACA;;AAEA;;AAIA;;;;;;AAEAA,mBAAA,CAAOC,UAAP,CAAkB,CAAC,sDAAD,CAAlB;;AAEO,MAAMC,aAAa,gBAAG,IAAAC,oBAAA,EAE3BC,SAF2B,CAAtB;;AAIP,MAAMC,YAAY,GAAG,IAAIC,+BAAJ,CAAuBC,uCAAA,IAAwBC,wBAA/C,CAArB;;AAEA,MAAMC,aAA8C,GAAG,QAGjD;EAAA,IAHkD;IACtDC,QADsD;IAEtDC;EAFsD,CAGlD;EACJ,MAAM,CAACC,KAAD,EAAQC,QAAR,IAAoB,IAAAC,iBAAA,EAAWC,0BAAX,EAAyBC,+BAAzB,CAA1B;EACA,MAAMC,KAAK,GAAG;IAAEL,KAAF;IAASC;EAAT,CAAd;EAEA,IAAAK,gBAAA,EAAU,MAAM;IACdC,kBAAkB,CAACC,SAAnB,CAA6BT,MAAM,CAACU,MAApC;EACD,CAFD,EAEG,CAACV,MAAM,CAACU,MAAR,CAFH;EAIA,IAAAH,gBAAA,EAAU,MAAM;IACd,MAAMI,gBAAgB,GAAIC,KAAD,IAAgB;MACvCV,QAAQ,CAAC;QACPW,IAAI,EAAEC,kBAAA,CAAWC,YADV;QAEPC,OAAO,EAAEC,qBAAA,CAASC,EAAT,KAAgB,SAAhB,GAA4BC,IAAI,CAACC,KAAL,CAAWR,KAAK,CAACX,KAAjB,CAA5B,GAAsDW;MAFxD,CAAD,CAAR;IAID,CALD;;IAMA,MAAMS,YAAY,GAAG3B,YAAY,CAAC4B,WAAb,CACnB,cADmB,EAEnBX,gBAFmB,CAArB;IAKA,IAAI,CAACU,YAAL,EAAmB;IAEnB,OAAO,MAAM;MACXA,YAAY,CAACE,MAAb;IACD,CAFD;EAGD,CAjBD,EAiBG,EAjBH;EAmBA,oBACE,6BAAC,aAAD,CAAe,QAAf;IAAwB,KAAK,EAAEjB;EAA/B,GAAuCP,QAAvC,CADF;AAGD,CAjCD;;;;AAmCA,SAASyB,eAAT,GAA2B;EACzB,MAAMC,OAAO,GAAG,IAAAC,iBAAA,EAAWnC,aAAX,CAAhB;;EAEA,IAAIkC,OAAO,KAAKhC,SAAhB,EAA2B;IACzB,MAAM,IAAIkC,KAAJ,CACJ,+DADI,CAAN;EAGD;;EAED,OAAOF,OAAP;AACD"}
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=types.js.map
6
+ //# sourceMappingURL=GlobalContext.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["GlobalContext.types.ts"],"sourcesContent":["import type { TAction } from '../constants/action';\nimport type { IConfig } from '../utils/config';\n\nexport type ContextProps = {\n config: IConfig;\n};\n\nexport type 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\nexport interface 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"],"mappings":""}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ActionType = void 0;
7
+ let ActionType;
8
+ exports.ActionType = ActionType;
9
+
10
+ (function (ActionType) {
11
+ ActionType["UPDATE_STATE"] = "UPDATE_STATE";
12
+ })(ActionType || (exports.ActionType = ActionType = {}));
13
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ActionType"],"sources":["action.ts"],"sourcesContent":["export enum ActionType {\n UPDATE_STATE = 'UPDATE_STATE',\n}\n\nexport type TAction = {\n type: ActionType;\n payload?: any;\n};\n"],"mappings":";;;;;;IAAYA,U;;;WAAAA,U;EAAAA,U;GAAAA,U,0BAAAA,U"}
@@ -5,159 +5,28 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useRownd = useRownd;
7
7
 
8
- var _GlobalContext = require("../components/GlobalContext");
9
-
10
- var _actions = require("../data/actions");
11
-
12
- var _api = _interopRequireDefault(require("./api"));
8
+ var _nativeModule = require("../utils/nativeModule");
13
9
 
14
- var _events = require("../utils/events");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ var _GlobalContext = require("../components/GlobalContext");
17
11
 
18
- // const RowndContext = createContext<TRowndContext | null>(null);
19
12
  function useRownd() {
20
- var _state$auth, _state$user, _state$user2;
21
-
22
- const {
23
- state,
24
- dispatch
25
- } = (0, _GlobalContext.useGlobalContext)();
26
13
  const {
27
- isNewAccessTokenNeeded,
28
- newAccessTokenFromRefreshToken
29
- } = (0, _api.default)();
30
- const stateCopy = JSON.parse(JSON.stringify(state));
31
-
32
- const requestSignIn = opts => {
33
- dispatch({
34
- type: _actions.ActionType.CHANGE_ROUTE,
35
- payload: {
36
- route: '/account/login',
37
- options: opts
38
- }
39
- });
40
- };
41
-
42
- const signOut = () => {
43
- dispatch({
44
- type: _actions.ActionType.SIGN_OUT
45
- });
46
- };
47
-
48
- const getAccessToken = async opts => {
49
- const {
50
- waitForToken
51
- } = opts || {};
52
- let accessToken = state === null || state === void 0 ? void 0 : state.auth.access_token; // Wait for an access token to be available if none exists yet
53
-
54
- if (!accessToken && waitForToken) {
55
- return new Promise((resolve, _reject) => {
56
- console.debug('auth_wait: waiting for access token');
57
-
58
- const listener = evt => {
59
- console.debug('auth_wait: received access token');
60
- const data = evt.detail;
61
- resolve(data.access_token);
62
- };
63
-
64
- _events.events.addEventListener(_events.EventType.AUTH, listener, {
65
- once: true
66
- });
67
- });
68
- }
69
-
70
- if (isNewAccessTokenNeeded(undefined)) {
71
- const resp = await newAccessTokenFromRefreshToken(stateCopy);
72
- accessToken = resp.access_token;
73
- }
74
-
75
- return accessToken;
76
- };
77
-
78
- const setUserData = data => {
79
- return new Promise((resolve, reject) => {
80
- console.debug('user_data_save_wait: waiting for data to be saved');
81
-
82
- const listener = evt => {
83
- console.debug('user_data_save_wait: received data saved event');
84
-
85
- if (evt.error) {
86
- return reject(evt.error);
87
- }
88
-
89
- resolve(evt.data);
90
- };
91
-
92
- _events.events.addEventListener(_events.EventType.USER_DATA_SAVED, listener, {
93
- once: true
94
- });
95
-
96
- dispatch({
97
- type: _actions.ActionType.SET_USER_DATA,
98
- payload: {
99
- data
100
- }
101
- });
102
- });
103
- };
104
-
105
- const setUserDataValue = (key, value) => {
106
- return new Promise((resolve, reject) => {
107
- console.debug('user_data_save_wait: waiting for data to be saved');
108
-
109
- const listener = evt => {
110
- console.debug('user_data_save_wait: received data saved event');
111
-
112
- if (evt.error) {
113
- return reject(evt.error);
114
- }
115
-
116
- resolve(evt.data);
117
- };
118
-
119
- _events.events.addEventListener(_events.EventType.USER_DATA_SAVED, listener, {
120
- once: true
121
- });
122
-
123
- dispatch({
124
- type: _actions.ActionType.SET_USER_DATA_FIELD,
125
- payload: {
126
- field: key,
127
- value
128
- }
129
- });
130
-
131
- if (value) {
132
- return;
133
- }
134
-
135
- const valueAcl = {
136
- [key]: {
137
- shared: true
138
- }
139
- };
140
- dispatch({
141
- type: _actions.ActionType.UPDATE_LOCAL_ACLS,
142
- payload: valueAcl
143
- });
144
- });
145
- };
146
-
14
+ state
15
+ } = (0, _GlobalContext.useRowndContext)();
147
16
  return {
148
- requestSignIn,
149
- signOut,
150
- getAccessToken,
17
+ requestSignIn: _nativeModule.requestSignIn,
18
+ signOut: _nativeModule.signOut,
19
+ manageAccount: _nativeModule.manageAccount,
20
+ getAccessToken: _nativeModule.getAccessToken,
21
+ user: {
22
+ data: state.user.data,
23
+ setValue: _nativeModule.setUserDataValue,
24
+ set: _nativeModule.setUserData
25
+ },
151
26
  is_authenticated: !!state.auth.access_token,
152
- is_initializing: !!state.app.id,
153
- access_token: (_state$auth = state.auth) === null || _state$auth === void 0 ? void 0 : _state$auth.access_token,
27
+ is_initializing: !!state.auth.app_id,
154
28
  auth: state.auth,
155
- user: {
156
- data: (_state$user = state.user) === null || _state$user === void 0 ? void 0 : _state$user.data,
157
- redacted_fields: (_state$user2 = state.user) === null || _state$user2 === void 0 ? void 0 : _state$user2.redacted,
158
- set: setUserData,
159
- setValue: setUserDataValue
160
- }
29
+ access_token: state.auth.access_token
161
30
  };
162
31
  }
163
32
  //# sourceMappingURL=rownd.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useRownd","state","dispatch","useGlobalContext","isNewAccessTokenNeeded","newAccessTokenFromRefreshToken","useApi","stateCopy","JSON","parse","stringify","requestSignIn","opts","type","ActionType","CHANGE_ROUTE","payload","route","options","signOut","SIGN_OUT","getAccessToken","waitForToken","accessToken","auth","access_token","Promise","resolve","_reject","console","debug","listener","evt","data","detail","events","addEventListener","EventType","AUTH","once","undefined","resp","setUserData","reject","error","USER_DATA_SAVED","SET_USER_DATA","setUserDataValue","key","value","SET_USER_DATA_FIELD","field","valueAcl","shared","UPDATE_LOCAL_ACLS","is_authenticated","is_initializing","app","id","user","redacted_fields","redacted","set","setValue"],"sources":["rownd.ts"],"sourcesContent":["import { useGlobalContext } from '../components/GlobalContext';\nimport { ActionType } from '../data/actions';\nimport useApi from './api';\nimport { events, EventType } from '../utils/events';\n\nexport type TRowndContext = {\n requestSignIn: (opts?: RequestSignInOpts) => void;\n signOut: () => void;\n getAccessToken: (opts?: GetAccessTokenOpts) => Promise<string | null>;\n is_authenticated: boolean;\n is_initializing: boolean;\n access_token: string | null;\n auth: AuthContext;\n user: UserContext;\n};\n\ntype AuthContext = {\n access_token: string | null;\n app_id: string | null;\n is_verified_user?: boolean;\n};\n\ntype UserContext = {\n data: {\n id?: string;\n email?: string | null;\n phone?: string | null;\n [key: string]: any;\n };\n redacted_fields: string[];\n set: (data: Record<string, any>) => Promise<Record<string, any>>;\n setValue: (key: string, value: any) => Promise<Record<string, any>>;\n};\n\ntype RequestSignInOpts = {\n identifier?: string;\n auto_sign_in?: boolean;\n init_data?: Record<string, any>;\n post_login_redirect?: string;\n};\n\ntype GetAccessTokenOpts = {\n waitForToken?: boolean;\n};\n\n// const RowndContext = createContext<TRowndContext | null>(null);\n\nexport function useRownd(): TRowndContext {\n const { state, dispatch } = useGlobalContext();\n const { isNewAccessTokenNeeded, newAccessTokenFromRefreshToken } = useApi();\n\n const stateCopy = JSON.parse(JSON.stringify(state));\n\n const requestSignIn = (opts?: RequestSignInOpts): void => {\n dispatch({\n type: ActionType.CHANGE_ROUTE,\n payload: {\n route: '/account/login',\n options: opts,\n },\n });\n };\n\n const signOut = () => {\n dispatch({\n type: ActionType.SIGN_OUT,\n });\n };\n\n const getAccessToken = async (\n opts?: GetAccessTokenOpts\n ): Promise<string | null> => {\n const { waitForToken } = opts || {};\n let accessToken = state?.auth.access_token;\n\n // Wait for an access token to be available if none exists yet\n if (!accessToken && waitForToken) {\n return new Promise((resolve, _reject) => {\n console.debug('auth_wait: waiting for access token');\n const listener = (evt: any) => {\n console.debug('auth_wait: received access token');\n const data = evt.detail;\n resolve(data.access_token);\n };\n\n events.addEventListener(EventType.AUTH, listener, { once: true });\n });\n }\n\n if (isNewAccessTokenNeeded(undefined)) {\n const resp = await newAccessTokenFromRefreshToken(stateCopy);\n accessToken = resp.access_token;\n }\n\n return accessToken;\n };\n\n const setUserData = (\n data: Record<string, any>\n ): Promise<Record<string, any>> => {\n return new Promise((resolve, reject) => {\n console.debug('user_data_save_wait: waiting for data to be saved');\n const listener = (evt: any) => {\n console.debug('user_data_save_wait: received data saved event');\n if (evt.error) {\n return reject(evt.error);\n }\n\n resolve(evt.data);\n };\n\n events.addEventListener(EventType.USER_DATA_SAVED, listener, {\n once: true,\n });\n\n dispatch({\n type: ActionType.SET_USER_DATA,\n payload: {\n data,\n },\n });\n });\n };\n\n const setUserDataValue = (\n key: string,\n value: any\n ): Promise<Record<string, any>> => {\n return new Promise((resolve, reject) => {\n console.debug('user_data_save_wait: waiting for data to be saved');\n const listener = (evt: any) => {\n console.debug('user_data_save_wait: received data saved event');\n if (evt.error) {\n return reject(evt.error);\n }\n\n resolve(evt.data);\n };\n\n events.addEventListener(EventType.USER_DATA_SAVED, listener, {\n once: true,\n });\n\n dispatch({\n type: ActionType.SET_USER_DATA_FIELD,\n payload: {\n field: key,\n value,\n },\n });\n\n if (value) {\n return;\n }\n\n const valueAcl = {\n [key]: {\n shared: true,\n },\n };\n\n dispatch({\n type: ActionType.UPDATE_LOCAL_ACLS,\n payload: valueAcl,\n });\n });\n };\n\n return {\n requestSignIn,\n signOut,\n getAccessToken,\n is_authenticated: !!state.auth.access_token,\n is_initializing: !!state.app.id,\n access_token: state.auth?.access_token,\n auth: state.auth,\n user: {\n data: state.user?.data,\n redacted_fields: state.user?.redacted,\n set: setUserData,\n setValue: setUserDataValue,\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useRownd","state","useRowndContext","requestSignIn","signOut","manageAccount","getAccessToken","user","data","setValue","setUserDataValue","set","setUserData","is_authenticated","auth","access_token","is_initializing","app_id"],"sources":["rownd.ts"],"sourcesContent":["import {\n requestSignIn,\n signOut,\n manageAccount,\n getAccessToken,\n setUserDataValue,\n setUserData,\n} from '../utils/nativeModule';\nimport { useRowndContext } from '../components/GlobalContext';\n\nexport type TRowndContext = {\n requestSignIn: (opts?: RequestSignInOpts) => void;\n signOut: () => void;\n manageAccount: () => void;\n getAccessToken: () => Promise<string>;\n user: UserContext;\n is_authenticated: boolean;\n is_initializing: boolean;\n access_token: string | null;\n auth: AuthContext;\n};\n\ntype UserContext = {\n data: {\n id?: string;\n email?: string | null;\n phone?: string | null;\n [key: string]: any;\n };\n set: (data: Record<string, any>) => void;\n setValue: (key: string, value: any) => void;\n //set: (data: any) => void;\n};\n\ntype AuthContext = {\n access_token: string | null;\n app_id: string | null;\n is_verified_user?: boolean;\n};\n\ntype RequestSignInOpts = {\n identifier?: string;\n auto_sign_in?: boolean;\n init_data?: Record<string, any>;\n post_login_redirect?: string;\n};\n\nexport function useRownd(): TRowndContext {\n const { state } = useRowndContext();\n\n return {\n requestSignIn,\n signOut,\n manageAccount,\n getAccessToken,\n user: {\n data: state.user.data,\n setValue: setUserDataValue,\n set: setUserData,\n },\n is_authenticated: !!state.auth.access_token,\n is_initializing: !!state.auth.app_id,\n auth: state.auth,\n access_token: state.auth.access_token,\n };\n}\n"],"mappings":";;;;;;;AAAA;;AAQA;;AAuCO,SAASA,QAAT,GAAmC;EACxC,MAAM;IAAEC;EAAF,IAAY,IAAAC,8BAAA,GAAlB;EAEA,OAAO;IACLC,aAAa,EAAbA,2BADK;IAELC,OAAO,EAAPA,qBAFK;IAGLC,aAAa,EAAbA,2BAHK;IAILC,cAAc,EAAdA,4BAJK;IAKLC,IAAI,EAAE;MACJC,IAAI,EAAEP,KAAK,CAACM,IAAN,CAAWC,IADb;MAEJC,QAAQ,EAAEC,8BAFN;MAGJC,GAAG,EAAEC;IAHD,CALD;IAULC,gBAAgB,EAAE,CAAC,CAACZ,KAAK,CAACa,IAAN,CAAWC,YAV1B;IAWLC,eAAe,EAAE,CAAC,CAACf,KAAK,CAACa,IAAN,CAAWG,MAXzB;IAYLH,IAAI,EAAEb,KAAK,CAACa,IAZP;IAaLC,YAAY,EAAEd,KAAK,CAACa,IAAN,CAAWC;EAbpB,CAAP;AAeD"}