@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.
- package/LICENSE +21 -0
- package/README.md +213 -0
- package/android/build.gradle +59 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/com/reactnative/ReactNativePackage.java +22 -0
- package/android/src/main/java/com/reactnative/ReactNativeViewManager.java +31 -0
- package/ios/ReactNative.xcodeproj/project.pbxproj +282 -0
- package/ios/ReactNative.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/ios/ReactNativeViewManager.m +34 -0
- package/lib/commonjs/assets/images/checkmark--filled.svg +12 -0
- package/lib/commonjs/assets/images/email-verify-waiting.svg +36 -0
- package/lib/commonjs/assets/images/phone-verify-waiting.svg +26 -0
- package/lib/commonjs/components/AuthenticatedComponent.js +35 -0
- package/lib/commonjs/components/AuthenticatedComponent.js.map +1 -0
- package/lib/commonjs/components/AutoSigninDialog.js +119 -0
- package/lib/commonjs/components/AutoSigninDialog.js.map +1 -0
- package/lib/commonjs/components/DefaultContext.js +269 -0
- package/lib/commonjs/components/DefaultContext.js.map +1 -0
- package/lib/commonjs/components/GlobalContext.js +340 -0
- package/lib/commonjs/components/GlobalContext.js.map +1 -0
- package/lib/commonjs/components/RowndComponents.js +29 -0
- package/lib/commonjs/components/RowndComponents.js.map +1 -0
- package/lib/commonjs/components/RowndProvider.js +55 -0
- package/lib/commonjs/components/RowndProvider.js.map +1 -0
- package/lib/commonjs/components/SignIn.js +622 -0
- package/lib/commonjs/components/SignIn.js.map +1 -0
- package/lib/commonjs/data/actions.js +26 -0
- package/lib/commonjs/data/actions.js.map +1 -0
- package/lib/commonjs/hooks/api.js +157 -0
- package/lib/commonjs/hooks/api.js.map +1 -0
- package/lib/commonjs/hooks/debounce.js +38 -0
- package/lib/commonjs/hooks/debounce.js.map +1 -0
- package/lib/commonjs/hooks/fingerprint.js +176 -0
- package/lib/commonjs/hooks/fingerprint.js.map +1 -0
- package/lib/commonjs/hooks/index.js +48 -0
- package/lib/commonjs/hooks/index.js.map +1 -0
- package/lib/commonjs/hooks/interval.js +31 -0
- package/lib/commonjs/hooks/interval.js.map +1 -0
- package/lib/commonjs/hooks/nav.js +39 -0
- package/lib/commonjs/hooks/nav.js.map +1 -0
- package/lib/commonjs/hooks/rownd.js +163 -0
- package/lib/commonjs/hooks/rownd.js.map +1 -0
- package/lib/commonjs/index.js +32 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/index.tsx.bak +26 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils/config.js +28 -0
- package/lib/commonjs/utils/config.js.map +1 -0
- package/lib/commonjs/utils/events.js +57 -0
- package/lib/commonjs/utils/events.js.map +1 -0
- package/lib/commonjs/utils/form.js +46 -0
- package/lib/commonjs/utils/form.js.map +1 -0
- package/lib/commonjs/utils/queue.js +117 -0
- package/lib/commonjs/utils/queue.js.map +1 -0
- package/lib/commonjs/utils/storage.js +15 -0
- package/lib/commonjs/utils/storage.js.map +1 -0
- package/lib/commonjs/utils/tailwind.js +17 -0
- package/lib/commonjs/utils/tailwind.js.map +1 -0
- package/lib/commonjs/utils/tokens.js +35 -0
- package/lib/commonjs/utils/tokens.js.map +1 -0
- package/lib/commonjs/utils/user-data.js +21 -0
- package/lib/commonjs/utils/user-data.js.map +1 -0
- package/lib/module/assets/images/checkmark--filled.svg +12 -0
- package/lib/module/assets/images/email-verify-waiting.svg +36 -0
- package/lib/module/assets/images/phone-verify-waiting.svg +26 -0
- package/lib/module/components/AuthenticatedComponent.js +24 -0
- package/lib/module/components/AuthenticatedComponent.js.map +1 -0
- package/lib/module/components/AutoSigninDialog.js +100 -0
- package/lib/module/components/AutoSigninDialog.js.map +1 -0
- package/lib/module/components/DefaultContext.js +244 -0
- package/lib/module/components/DefaultContext.js.map +1 -0
- package/lib/module/components/GlobalContext.js +318 -0
- package/lib/module/components/GlobalContext.js.map +1 -0
- package/lib/module/components/RowndComponents.js +14 -0
- package/lib/module/components/RowndComponents.js.map +1 -0
- package/lib/module/components/RowndProvider.js +39 -0
- package/lib/module/components/RowndProvider.js.map +1 -0
- package/lib/module/components/SignIn.js +593 -0
- package/lib/module/components/SignIn.js.map +1 -0
- package/lib/module/data/actions.js +19 -0
- package/lib/module/data/actions.js.map +1 -0
- package/lib/module/hooks/api.js +138 -0
- package/lib/module/hooks/api.js.map +1 -0
- package/lib/module/hooks/debounce.js +29 -0
- package/lib/module/hooks/debounce.js.map +1 -0
- package/lib/module/hooks/fingerprint.js +157 -0
- package/lib/module/hooks/fingerprint.js.map +1 -0
- package/lib/module/hooks/index.js +7 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/interval.js +23 -0
- package/lib/module/hooks/interval.js.map +1 -0
- package/lib/module/hooks/nav.js +30 -0
- package/lib/module/hooks/nav.js.map +1 -0
- package/lib/module/hooks/rownd.js +148 -0
- package/lib/module/hooks/rownd.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/index.tsx.bak +26 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/config.js +17 -0
- package/lib/module/utils/config.js.map +1 -0
- package/lib/module/utils/events.js +45 -0
- package/lib/module/utils/events.js.map +1 -0
- package/lib/module/utils/form.js +34 -0
- package/lib/module/utils/form.js.map +1 -0
- package/lib/module/utils/queue.js +109 -0
- package/lib/module/utils/queue.js.map +1 -0
- package/lib/module/utils/storage.js +6 -0
- package/lib/module/utils/storage.js.map +1 -0
- package/lib/module/utils/tailwind.js +5 -0
- package/lib/module/utils/tailwind.js.map +1 -0
- package/lib/module/utils/tokens.js +24 -0
- package/lib/module/utils/tokens.js.map +1 -0
- package/lib/module/utils/user-data.js +14 -0
- package/lib/module/utils/user-data.js.map +1 -0
- package/lib/typescript/example2/App.d.ts +11 -0
- package/lib/typescript/src/components/AuthenticatedComponent.d.ts +7 -0
- package/lib/typescript/src/components/AutoSigninDialog.d.ts +1 -0
- package/lib/typescript/src/components/DefaultContext.d.ts +12 -0
- package/lib/typescript/src/components/GlobalContext.d.ts +111 -0
- package/lib/typescript/src/components/RowndComponents.d.ts +1 -0
- package/lib/typescript/src/components/RowndProvider.d.ts +8 -0
- package/lib/typescript/src/components/SignIn.d.ts +1 -0
- package/lib/typescript/src/data/actions.d.ts +20 -0
- package/lib/typescript/src/hooks/api.d.ts +12 -0
- package/lib/typescript/src/hooks/debounce.d.ts +5 -0
- package/lib/typescript/src/hooks/fingerprint.d.ts +12 -0
- package/lib/typescript/src/hooks/index.d.ts +6 -0
- package/lib/typescript/src/hooks/interval.d.ts +2 -0
- package/lib/typescript/src/hooks/nav.d.ts +6 -0
- package/lib/typescript/src/hooks/rownd.d.ts +37 -0
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/types.d.ts +26 -0
- package/lib/typescript/src/utils/config.d.ts +18 -0
- package/lib/typescript/src/utils/events.d.ts +22 -0
- package/lib/typescript/src/utils/form.d.ts +17 -0
- package/lib/typescript/src/utils/queue.d.ts +21 -0
- package/lib/typescript/src/utils/storage.d.ts +3 -0
- package/lib/typescript/src/utils/tailwind.d.ts +2 -0
- package/lib/typescript/src/utils/tokens.d.ts +4 -0
- package/lib/typescript/src/utils/user-data.d.ts +3 -0
- package/lib/typescript/tailwind.config.d.ts +10 -0
- package/package.json +177 -0
- package/react-native.podspec +19 -0
- package/src/assets/images/checkmark--filled.svg +12 -0
- package/src/assets/images/email-verify-waiting.svg +36 -0
- package/src/assets/images/phone-verify-waiting.svg +26 -0
- package/src/components/AuthenticatedComponent.tsx +30 -0
- package/src/components/AutoSigninDialog.tsx +125 -0
- package/src/components/DefaultContext.tsx +278 -0
- package/src/components/GlobalContext.tsx +485 -0
- package/src/components/RowndComponents.tsx +21 -0
- package/src/components/RowndProvider.tsx +56 -0
- package/src/components/SignIn.tsx +770 -0
- package/src/data/actions.ts +21 -0
- package/src/hooks/api.ts +163 -0
- package/src/hooks/debounce.ts +36 -0
- package/src/hooks/fingerprint.ts +217 -0
- package/src/hooks/index.ts +7 -0
- package/src/hooks/interval.ts +25 -0
- package/src/hooks/nav.tsx +29 -0
- package/src/hooks/rownd.ts +184 -0
- package/src/index.tsx +6 -0
- package/src/index.tsx.bak +26 -0
- package/src/types.ts +27 -0
- package/src/utils/config.ts +36 -0
- package/src/utils/events.ts +54 -0
- package/src/utils/form.tsx +64 -0
- package/src/utils/queue.ts +75 -0
- package/src/utils/storage.ts +7 -0
- package/src/utils/tailwind.ts +6 -0
- package/src/utils/tokens.ts +26 -0
- 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"}
|