@rownd/react-native 0.1.1

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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +213 -0
  3. package/android/build.gradle +59 -0
  4. package/android/src/main/AndroidManifest.xml +4 -0
  5. package/android/src/main/java/com/reactnative/ReactNativePackage.java +22 -0
  6. package/android/src/main/java/com/reactnative/ReactNativeViewManager.java +31 -0
  7. package/ios/ReactNative.xcodeproj/project.pbxproj +282 -0
  8. package/ios/ReactNative.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
  9. package/ios/ReactNativeViewManager.m +34 -0
  10. package/lib/commonjs/assets/images/checkmark--filled.svg +12 -0
  11. package/lib/commonjs/assets/images/email-verify-waiting.svg +36 -0
  12. package/lib/commonjs/assets/images/phone-verify-waiting.svg +26 -0
  13. package/lib/commonjs/components/AuthenticatedComponent.js +35 -0
  14. package/lib/commonjs/components/AuthenticatedComponent.js.map +1 -0
  15. package/lib/commonjs/components/AutoSigninDialog.js +119 -0
  16. package/lib/commonjs/components/AutoSigninDialog.js.map +1 -0
  17. package/lib/commonjs/components/DefaultContext.js +269 -0
  18. package/lib/commonjs/components/DefaultContext.js.map +1 -0
  19. package/lib/commonjs/components/GlobalContext.js +340 -0
  20. package/lib/commonjs/components/GlobalContext.js.map +1 -0
  21. package/lib/commonjs/components/RowndComponents.js +29 -0
  22. package/lib/commonjs/components/RowndComponents.js.map +1 -0
  23. package/lib/commonjs/components/RowndProvider.js +55 -0
  24. package/lib/commonjs/components/RowndProvider.js.map +1 -0
  25. package/lib/commonjs/components/SignIn.js +622 -0
  26. package/lib/commonjs/components/SignIn.js.map +1 -0
  27. package/lib/commonjs/data/actions.js +26 -0
  28. package/lib/commonjs/data/actions.js.map +1 -0
  29. package/lib/commonjs/hooks/api.js +157 -0
  30. package/lib/commonjs/hooks/api.js.map +1 -0
  31. package/lib/commonjs/hooks/debounce.js +38 -0
  32. package/lib/commonjs/hooks/debounce.js.map +1 -0
  33. package/lib/commonjs/hooks/fingerprint.js +176 -0
  34. package/lib/commonjs/hooks/fingerprint.js.map +1 -0
  35. package/lib/commonjs/hooks/index.js +48 -0
  36. package/lib/commonjs/hooks/index.js.map +1 -0
  37. package/lib/commonjs/hooks/interval.js +31 -0
  38. package/lib/commonjs/hooks/interval.js.map +1 -0
  39. package/lib/commonjs/hooks/nav.js +39 -0
  40. package/lib/commonjs/hooks/nav.js.map +1 -0
  41. package/lib/commonjs/hooks/rownd.js +163 -0
  42. package/lib/commonjs/hooks/rownd.js.map +1 -0
  43. package/lib/commonjs/index.js +32 -0
  44. package/lib/commonjs/index.js.map +1 -0
  45. package/lib/commonjs/index.tsx.bak +26 -0
  46. package/lib/commonjs/types.js +2 -0
  47. package/lib/commonjs/types.js.map +1 -0
  48. package/lib/commonjs/utils/config.js +28 -0
  49. package/lib/commonjs/utils/config.js.map +1 -0
  50. package/lib/commonjs/utils/events.js +57 -0
  51. package/lib/commonjs/utils/events.js.map +1 -0
  52. package/lib/commonjs/utils/form.js +46 -0
  53. package/lib/commonjs/utils/form.js.map +1 -0
  54. package/lib/commonjs/utils/queue.js +117 -0
  55. package/lib/commonjs/utils/queue.js.map +1 -0
  56. package/lib/commonjs/utils/storage.js +15 -0
  57. package/lib/commonjs/utils/storage.js.map +1 -0
  58. package/lib/commonjs/utils/tailwind.js +17 -0
  59. package/lib/commonjs/utils/tailwind.js.map +1 -0
  60. package/lib/commonjs/utils/tokens.js +35 -0
  61. package/lib/commonjs/utils/tokens.js.map +1 -0
  62. package/lib/commonjs/utils/user-data.js +21 -0
  63. package/lib/commonjs/utils/user-data.js.map +1 -0
  64. package/lib/module/assets/images/checkmark--filled.svg +12 -0
  65. package/lib/module/assets/images/email-verify-waiting.svg +36 -0
  66. package/lib/module/assets/images/phone-verify-waiting.svg +26 -0
  67. package/lib/module/components/AuthenticatedComponent.js +24 -0
  68. package/lib/module/components/AuthenticatedComponent.js.map +1 -0
  69. package/lib/module/components/AutoSigninDialog.js +100 -0
  70. package/lib/module/components/AutoSigninDialog.js.map +1 -0
  71. package/lib/module/components/DefaultContext.js +244 -0
  72. package/lib/module/components/DefaultContext.js.map +1 -0
  73. package/lib/module/components/GlobalContext.js +318 -0
  74. package/lib/module/components/GlobalContext.js.map +1 -0
  75. package/lib/module/components/RowndComponents.js +14 -0
  76. package/lib/module/components/RowndComponents.js.map +1 -0
  77. package/lib/module/components/RowndProvider.js +39 -0
  78. package/lib/module/components/RowndProvider.js.map +1 -0
  79. package/lib/module/components/SignIn.js +593 -0
  80. package/lib/module/components/SignIn.js.map +1 -0
  81. package/lib/module/data/actions.js +19 -0
  82. package/lib/module/data/actions.js.map +1 -0
  83. package/lib/module/hooks/api.js +138 -0
  84. package/lib/module/hooks/api.js.map +1 -0
  85. package/lib/module/hooks/debounce.js +29 -0
  86. package/lib/module/hooks/debounce.js.map +1 -0
  87. package/lib/module/hooks/fingerprint.js +157 -0
  88. package/lib/module/hooks/fingerprint.js.map +1 -0
  89. package/lib/module/hooks/index.js +7 -0
  90. package/lib/module/hooks/index.js.map +1 -0
  91. package/lib/module/hooks/interval.js +23 -0
  92. package/lib/module/hooks/interval.js.map +1 -0
  93. package/lib/module/hooks/nav.js +30 -0
  94. package/lib/module/hooks/nav.js.map +1 -0
  95. package/lib/module/hooks/rownd.js +148 -0
  96. package/lib/module/hooks/rownd.js.map +1 -0
  97. package/lib/module/index.js +6 -0
  98. package/lib/module/index.js.map +1 -0
  99. package/lib/module/index.tsx.bak +26 -0
  100. package/lib/module/types.js +2 -0
  101. package/lib/module/types.js.map +1 -0
  102. package/lib/module/utils/config.js +17 -0
  103. package/lib/module/utils/config.js.map +1 -0
  104. package/lib/module/utils/events.js +45 -0
  105. package/lib/module/utils/events.js.map +1 -0
  106. package/lib/module/utils/form.js +34 -0
  107. package/lib/module/utils/form.js.map +1 -0
  108. package/lib/module/utils/queue.js +109 -0
  109. package/lib/module/utils/queue.js.map +1 -0
  110. package/lib/module/utils/storage.js +6 -0
  111. package/lib/module/utils/storage.js.map +1 -0
  112. package/lib/module/utils/tailwind.js +5 -0
  113. package/lib/module/utils/tailwind.js.map +1 -0
  114. package/lib/module/utils/tokens.js +24 -0
  115. package/lib/module/utils/tokens.js.map +1 -0
  116. package/lib/module/utils/user-data.js +14 -0
  117. package/lib/module/utils/user-data.js.map +1 -0
  118. package/lib/typescript/example2/App.d.ts +11 -0
  119. package/lib/typescript/src/components/AuthenticatedComponent.d.ts +7 -0
  120. package/lib/typescript/src/components/AutoSigninDialog.d.ts +1 -0
  121. package/lib/typescript/src/components/DefaultContext.d.ts +12 -0
  122. package/lib/typescript/src/components/GlobalContext.d.ts +111 -0
  123. package/lib/typescript/src/components/RowndComponents.d.ts +1 -0
  124. package/lib/typescript/src/components/RowndProvider.d.ts +8 -0
  125. package/lib/typescript/src/components/SignIn.d.ts +1 -0
  126. package/lib/typescript/src/data/actions.d.ts +20 -0
  127. package/lib/typescript/src/hooks/api.d.ts +12 -0
  128. package/lib/typescript/src/hooks/debounce.d.ts +5 -0
  129. package/lib/typescript/src/hooks/fingerprint.d.ts +12 -0
  130. package/lib/typescript/src/hooks/index.d.ts +6 -0
  131. package/lib/typescript/src/hooks/interval.d.ts +2 -0
  132. package/lib/typescript/src/hooks/nav.d.ts +6 -0
  133. package/lib/typescript/src/hooks/rownd.d.ts +37 -0
  134. package/lib/typescript/src/index.d.ts +4 -0
  135. package/lib/typescript/src/types.d.ts +26 -0
  136. package/lib/typescript/src/utils/config.d.ts +18 -0
  137. package/lib/typescript/src/utils/events.d.ts +22 -0
  138. package/lib/typescript/src/utils/form.d.ts +17 -0
  139. package/lib/typescript/src/utils/queue.d.ts +21 -0
  140. package/lib/typescript/src/utils/storage.d.ts +3 -0
  141. package/lib/typescript/src/utils/tailwind.d.ts +2 -0
  142. package/lib/typescript/src/utils/tokens.d.ts +4 -0
  143. package/lib/typescript/src/utils/user-data.d.ts +3 -0
  144. package/lib/typescript/tailwind.config.d.ts +10 -0
  145. package/package.json +177 -0
  146. package/react-native.podspec +19 -0
  147. package/src/assets/images/checkmark--filled.svg +12 -0
  148. package/src/assets/images/email-verify-waiting.svg +36 -0
  149. package/src/assets/images/phone-verify-waiting.svg +26 -0
  150. package/src/components/AuthenticatedComponent.tsx +30 -0
  151. package/src/components/AutoSigninDialog.tsx +125 -0
  152. package/src/components/DefaultContext.tsx +278 -0
  153. package/src/components/GlobalContext.tsx +485 -0
  154. package/src/components/RowndComponents.tsx +21 -0
  155. package/src/components/RowndProvider.tsx +56 -0
  156. package/src/components/SignIn.tsx +770 -0
  157. package/src/data/actions.ts +21 -0
  158. package/src/hooks/api.ts +163 -0
  159. package/src/hooks/debounce.ts +36 -0
  160. package/src/hooks/fingerprint.ts +217 -0
  161. package/src/hooks/index.ts +7 -0
  162. package/src/hooks/interval.ts +25 -0
  163. package/src/hooks/nav.tsx +29 -0
  164. package/src/hooks/rownd.ts +184 -0
  165. package/src/index.tsx +6 -0
  166. package/src/index.tsx.bak +26 -0
  167. package/src/types.ts +27 -0
  168. package/src/utils/config.ts +36 -0
  169. package/src/utils/events.ts +54 -0
  170. package/src/utils/form.tsx +64 -0
  171. package/src/utils/queue.ts +75 -0
  172. package/src/utils/storage.ts +7 -0
  173. package/src/utils/tailwind.ts +6 -0
  174. package/src/utils/tokens.ts +26 -0
  175. package/src/utils/user-data.ts +15 -0
@@ -0,0 +1,318 @@
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';
9
+ export const GlobalContext = /*#__PURE__*/createContext(undefined);
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 => {
30
+ let {
31
+ children,
32
+ config
33
+ } = _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
+
298
+ const value = {
299
+ state,
300
+ dispatch
301
+ };
302
+ return /*#__PURE__*/React.createElement(GlobalContext.Provider, {
303
+ value: value
304
+ }, children);
305
+ };
306
+
307
+ function useGlobalContext() {
308
+ const context = useContext(GlobalContext);
309
+
310
+ if (context === undefined) {
311
+ throw new Error('useGlobalContext must be used within a GlobalContext Provider');
312
+ }
313
+
314
+ return context;
315
+ }
316
+
317
+ export { GlobalContextProvider, useGlobalContext };
318
+ //# sourceMappingURL=GlobalContext.js.map
@@ -0,0 +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 type { IConfig } from '../utils/config';\nimport storage from '../utils/storage';\nimport { events, EventType } from '../utils/events';\n\nimport { type 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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"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { useDeviceContext } from 'twrnc';
3
+ import tw from '../utils/tailwind';
4
+ import { SignIn } from './SignIn';
5
+ import { AutoSigninDialog } from './AutoSigninDialog';
6
+ import { useGlobalContext } from './GlobalContext';
7
+ export function RowndComponents() {
8
+ const {
9
+ state
10
+ } = useGlobalContext();
11
+ useDeviceContext(tw);
12
+ return /*#__PURE__*/React.createElement(React.Fragment, null, state.nav.current_route === '/account/login' && /*#__PURE__*/React.createElement(SignIn, null), state.nav.current_route === '/account/auto-signin' && /*#__PURE__*/React.createElement(AutoSigninDialog, null));
13
+ }
14
+ //# sourceMappingURL=RowndComponents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useDeviceContext","tw","SignIn","AutoSigninDialog","useGlobalContext","RowndComponents","state","nav","current_route"],"sources":["RowndComponents.tsx"],"sourcesContent":["import React from 'react';\nimport { useDeviceContext } from 'twrnc';\n\nimport tw from '../utils/tailwind';\nimport { SignIn } from './SignIn';\nimport { AutoSigninDialog } from './AutoSigninDialog';\nimport { useGlobalContext } from './GlobalContext';\n\nexport function RowndComponents() {\n const { state } = useGlobalContext();\n useDeviceContext(tw);\n\n return (\n <>\n {state.nav.current_route === '/account/login' && <SignIn />}\n {state.nav.current_route === '/account/auto-signin' && (\n <AutoSigninDialog />\n )}\n </>\n );\n}\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,gBAAT,QAAiC,OAAjC;AAEA,OAAOC,EAAP,MAAe,mBAAf;AACA,SAASC,MAAT,QAAuB,UAAvB;AACA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SAASC,gBAAT,QAAiC,iBAAjC;AAEA,OAAO,SAASC,eAAT,GAA2B;EAChC,MAAM;IAAEC;EAAF,IAAYF,gBAAgB,EAAlC;EACAJ,gBAAgB,CAACC,EAAD,CAAhB;EAEA,oBACE,0CACGK,KAAK,CAACC,GAAN,CAAUC,aAAV,KAA4B,gBAA5B,iBAAgD,oBAAC,MAAD,OADnD,EAEGF,KAAK,CAACC,GAAN,CAAUC,aAAV,KAA4B,sBAA5B,iBACC,oBAAC,gBAAD,OAHJ,CADF;AAQD"}
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { View, StyleSheet } from 'react-native';
3
+ import { GlobalContextProvider } from './GlobalContext';
4
+ import { DefaultContext } from './DefaultContext';
5
+ import { createConfig } from '../utils/config';
6
+ import { RowndComponents } from './RowndComponents';
7
+ import { BottomSheetModalProvider } from '@gorhom/bottom-sheet'; // const RowndContext = createContext<TRowndContext | undefined>(undefined);
8
+
9
+ export function RowndProvider(_ref) {
10
+ let {
11
+ appKey,
12
+ apiUrl,
13
+ children
14
+ } = _ref;
15
+ // const [isSigningIn, setIsSigningIn] = useState<boolean>(false);
16
+ // const requestSignIn = useRef(function () {
17
+ // setIsSigningIn(true);
18
+ // });
19
+ // const [rowndState, setRowndState] = useState<any>({
20
+ // requestSignIn: requestSignIn.current,
21
+ // });
22
+ const config = createConfig({
23
+ appKey,
24
+ apiUrl
25
+ });
26
+ return /*#__PURE__*/React.createElement(GlobalContextProvider, {
27
+ config: config
28
+ }, /*#__PURE__*/React.createElement(DefaultContext, {
29
+ config: config
30
+ }), /*#__PURE__*/React.createElement(BottomSheetModalProvider, null, /*#__PURE__*/React.createElement(View, {
31
+ style: styles.container
32
+ }, /*#__PURE__*/React.createElement(React.Fragment, null, children, /*#__PURE__*/React.createElement(RowndComponents, null)))));
33
+ }
34
+ const styles = StyleSheet.create({
35
+ container: {
36
+ flex: 1
37
+ }
38
+ });
39
+ //# sourceMappingURL=RowndProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","GlobalContextProvider","DefaultContext","createConfig","RowndComponents","BottomSheetModalProvider","RowndProvider","appKey","apiUrl","children","config","styles","container","create","flex"],"sources":["RowndProvider.tsx"],"sourcesContent":["import React from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { GlobalContextProvider } from './GlobalContext';\nimport { DefaultContext } from './DefaultContext';\nimport { createConfig } from '../utils/config';\nimport { RowndComponents } from './RowndComponents';\nimport { BottomSheetModalProvider } from '@gorhom/bottom-sheet';\n\n// const RowndContext = createContext<TRowndContext | undefined>(undefined);\n\ninterface IRowndProviderProps {\n appKey: string;\n apiUrl?: string;\n children: React.ReactNode;\n}\n\nexport function RowndProvider({\n appKey,\n apiUrl,\n children,\n}: IRowndProviderProps) {\n // const [isSigningIn, setIsSigningIn] = useState<boolean>(false);\n\n // const requestSignIn = useRef(function () {\n // setIsSigningIn(true);\n // });\n\n // const [rowndState, setRowndState] = useState<any>({\n // requestSignIn: requestSignIn.current,\n // });\n\n const config = createConfig({\n appKey,\n apiUrl,\n });\n\n return (\n <GlobalContextProvider config={config}>\n <DefaultContext config={config} />\n <BottomSheetModalProvider>\n <View style={styles.container}>\n <>\n {children}\n <RowndComponents />\n </>\n </View>\n </BottomSheetModalProvider>\n </GlobalContextProvider>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,EAAeC,UAAf,QAAiC,cAAjC;AACA,SAASC,qBAAT,QAAsC,iBAAtC;AACA,SAASC,cAAT,QAA+B,kBAA/B;AACA,SAASC,YAAT,QAA6B,iBAA7B;AACA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SAASC,wBAAT,QAAyC,sBAAzC,C,CAEA;;AAQA,OAAO,SAASC,aAAT,OAIiB;EAAA,IAJM;IAC5BC,MAD4B;IAE5BC,MAF4B;IAG5BC;EAH4B,CAIN;EACtB;EAEA;EACA;EACA;EAEA;EACA;EACA;EAEA,MAAMC,MAAM,GAAGP,YAAY,CAAC;IAC1BI,MAD0B;IAE1BC;EAF0B,CAAD,CAA3B;EAKA,oBACE,oBAAC,qBAAD;IAAuB,MAAM,EAAEE;EAA/B,gBACE,oBAAC,cAAD;IAAgB,MAAM,EAAEA;EAAxB,EADF,eAEE,oBAAC,wBAAD,qBACE,oBAAC,IAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,0CACGH,QADH,eAEE,oBAAC,eAAD,OAFF,CADF,CADF,CAFF,CADF;AAaD;AAED,MAAME,MAAM,GAAGX,UAAU,CAACa,MAAX,CAAkB;EAC/BD,SAAS,EAAE;IACTE,IAAI,EAAE;EADG;AADoB,CAAlB,CAAf"}