@rownd/react-native 0.2.4 → 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.
- package/LICENSE +1 -2
- package/README.md +15 -52
- package/android/build.gradle +127 -37
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/reactnativerowndplugin/RowndPluginModule.kt +98 -0
- package/android/src/main/java/com/reactnativerowndplugin/RowndPluginPackage.kt +16 -0
- package/ios/{ReactNative.xcodeproj → Rownd.xcodeproj}/project.pbxproj +13 -12
- package/ios/Rownd.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/ios/RowndPlugin-Bridging-Header.h +3 -0
- package/ios/RowndPlugin.m +26 -0
- package/ios/RowndPlugin.swift +83 -0
- package/ios/RowndPluginEventEmitter.m +12 -0
- package/ios/RowndPluginEventEmitter.swift +19 -0
- package/lib/commonjs/components/GlobalContext.js +30 -298
- package/lib/commonjs/components/GlobalContext.js.map +1 -1
- package/lib/commonjs/components/{BottomSheetTextInput/types.js → GlobalContext.types.js} +1 -1
- package/lib/commonjs/components/GlobalContext.types.js.map +1 -0
- package/lib/commonjs/constants/action.js +13 -0
- package/lib/commonjs/constants/action.js.map +1 -0
- package/lib/commonjs/hooks/rownd.js +15 -146
- package/lib/commonjs/hooks/rownd.js.map +1 -1
- package/lib/commonjs/index.js +2 -12
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/reducer/rowndReducer.js +89 -0
- package/lib/commonjs/reducer/rowndReducer.js.map +1 -0
- package/lib/commonjs/utils/config.js +0 -26
- package/lib/commonjs/utils/config.js.map +1 -1
- package/lib/commonjs/utils/nativeModule.js +72 -0
- package/lib/commonjs/utils/nativeModule.js.map +1 -0
- package/lib/module/components/GlobalContext.js +29 -293
- package/lib/module/components/GlobalContext.js.map +1 -1
- package/lib/module/components/GlobalContext.types.js +2 -0
- package/lib/module/components/GlobalContext.types.js.map +1 -0
- package/lib/module/constants/action.js +6 -0
- package/lib/module/constants/action.js.map +1 -0
- package/lib/module/hooks/rownd.js +12 -137
- package/lib/module/hooks/rownd.js.map +1 -1
- package/lib/module/index.js +2 -4
- package/lib/module/index.js.map +1 -1
- package/lib/module/reducer/rowndReducer.js +78 -0
- package/lib/module/reducer/rowndReducer.js.map +1 -0
- package/lib/module/utils/config.js +1 -16
- package/lib/module/utils/config.js.map +1 -1
- package/lib/module/utils/nativeModule.js +48 -0
- package/lib/module/utils/nativeModule.js.map +1 -0
- package/lib/typescript/components/GlobalContext.d.ts +13 -0
- package/lib/typescript/{src/components/GlobalContext.d.ts → components/GlobalContext.types.d.ts} +9 -35
- package/lib/typescript/constants/action.d.ts +7 -0
- package/lib/typescript/{src/hooks → hooks}/rownd.d.ts +10 -13
- package/lib/typescript/index.d.ts +3 -0
- package/lib/typescript/reducer/rowndReducer.d.ts +4 -0
- package/lib/typescript/utils/config.d.ts +10 -0
- package/lib/typescript/utils/nativeModule.d.ts +10 -0
- package/package.json +36 -56
- package/rownd-react-native.podspec +36 -0
- package/src/components/GlobalContext.tsx +44 -457
- package/src/components/GlobalContext.types.ts +105 -0
- package/src/constants/action.ts +8 -0
- package/src/hooks/rownd.ts +29 -147
- package/src/index.tsx +2 -4
- package/src/reducer/rowndReducer.ts +78 -0
- package/src/utils/config.ts +0 -27
- package/src/utils/nativeModule.ts +69 -0
- package/android/src/main/java/com/reactnative/ReactNativePackage.java +0 -22
- package/android/src/main/java/com/reactnative/ReactNativeViewManager.java +0 -31
- package/ios/ReactNativeViewManager.m +0 -34
- package/lib/commonjs/assets/images/checkmark--filled.svg +0 -12
- package/lib/commonjs/assets/images/email-verify-waiting.svg +0 -36
- package/lib/commonjs/assets/images/error-icon-material.svg +0 -1
- package/lib/commonjs/assets/images/phone-verify-waiting.svg +0 -26
- package/lib/commonjs/components/AuthenticatedComponent.js +0 -35
- package/lib/commonjs/components/AuthenticatedComponent.js.map +0 -1
- package/lib/commonjs/components/AutoSigninDialog.js +0 -132
- package/lib/commonjs/components/AutoSigninDialog.js.map +0 -1
- package/lib/commonjs/components/BottomSheetTextInput/BottomSheetTextInput.js +0 -65
- package/lib/commonjs/components/BottomSheetTextInput/BottomSheetTextInput.js.map +0 -1
- package/lib/commonjs/components/BottomSheetTextInput/index.js +0 -24
- package/lib/commonjs/components/BottomSheetTextInput/index.js.map +0 -1
- package/lib/commonjs/components/BottomSheetTextInput/types.js.map +0 -1
- package/lib/commonjs/components/DarkText.js +0 -35
- package/lib/commonjs/components/DarkText.js.map +0 -1
- package/lib/commonjs/components/DefaultContext.js +0 -266
- package/lib/commonjs/components/DefaultContext.js.map +0 -1
- package/lib/commonjs/components/RowndComponents.js +0 -25
- package/lib/commonjs/components/RowndComponents.js.map +0 -1
- package/lib/commonjs/components/RowndProvider.js +0 -55
- package/lib/commonjs/components/RowndProvider.js.map +0 -1
- package/lib/commonjs/components/SignIn.js +0 -638
- package/lib/commonjs/components/SignIn.js.map +0 -1
- package/lib/commonjs/components/images/CheckmarkFilled.js +0 -40
- package/lib/commonjs/components/images/CheckmarkFilled.js.map +0 -1
- package/lib/commonjs/components/images/EmailVerifyWaiting.js +0 -100
- package/lib/commonjs/components/images/EmailVerifyWaiting.js.map +0 -1
- package/lib/commonjs/components/images/ErrorIcon.js +0 -31
- package/lib/commonjs/components/images/ErrorIcon.js.map +0 -1
- package/lib/commonjs/components/images/PhoneVerifyWaiting.js +0 -91
- package/lib/commonjs/components/images/PhoneVerifyWaiting.js.map +0 -1
- package/lib/commonjs/data/actions.js +0 -26
- package/lib/commonjs/data/actions.js.map +0 -1
- package/lib/commonjs/hooks/api.js +0 -155
- package/lib/commonjs/hooks/api.js.map +0 -1
- package/lib/commonjs/hooks/debounce.js +0 -38
- package/lib/commonjs/hooks/debounce.js.map +0 -1
- package/lib/commonjs/hooks/fingerprint.js +0 -176
- package/lib/commonjs/hooks/fingerprint.js.map +0 -1
- package/lib/commonjs/hooks/index.js +0 -48
- package/lib/commonjs/hooks/index.js.map +0 -1
- package/lib/commonjs/hooks/interval.js +0 -31
- package/lib/commonjs/hooks/interval.js.map +0 -1
- package/lib/commonjs/hooks/nav.js +0 -39
- package/lib/commonjs/hooks/nav.js.map +0 -1
- package/lib/commonjs/index.tsx.bak +0 -26
- package/lib/commonjs/types.js +0 -2
- package/lib/commonjs/types.js.map +0 -1
- package/lib/commonjs/utils/events.js +0 -57
- package/lib/commonjs/utils/events.js.map +0 -1
- package/lib/commonjs/utils/form.js +0 -46
- package/lib/commonjs/utils/form.js.map +0 -1
- package/lib/commonjs/utils/queue.js +0 -117
- package/lib/commonjs/utils/queue.js.map +0 -1
- package/lib/commonjs/utils/storage.js +0 -15
- package/lib/commonjs/utils/storage.js.map +0 -1
- package/lib/commonjs/utils/tokens.js +0 -35
- package/lib/commonjs/utils/tokens.js.map +0 -1
- package/lib/commonjs/utils/user-data.js +0 -21
- package/lib/commonjs/utils/user-data.js.map +0 -1
- package/lib/module/assets/images/checkmark--filled.svg +0 -12
- package/lib/module/assets/images/email-verify-waiting.svg +0 -36
- package/lib/module/assets/images/error-icon-material.svg +0 -1
- package/lib/module/assets/images/phone-verify-waiting.svg +0 -26
- package/lib/module/components/AuthenticatedComponent.js +0 -24
- package/lib/module/components/AuthenticatedComponent.js.map +0 -1
- package/lib/module/components/AutoSigninDialog.js +0 -110
- package/lib/module/components/AutoSigninDialog.js.map +0 -1
- package/lib/module/components/BottomSheetTextInput/BottomSheetTextInput.js +0 -52
- package/lib/module/components/BottomSheetTextInput/BottomSheetTextInput.js.map +0 -1
- package/lib/module/components/BottomSheetTextInput/index.js +0 -5
- package/lib/module/components/BottomSheetTextInput/index.js.map +0 -1
- package/lib/module/components/BottomSheetTextInput/types.js +0 -2
- package/lib/module/components/BottomSheetTextInput/types.js.map +0 -1
- package/lib/module/components/DarkText.js +0 -24
- package/lib/module/components/DarkText.js.map +0 -1
- package/lib/module/components/DefaultContext.js +0 -244
- package/lib/module/components/DefaultContext.js.map +0 -1
- package/lib/module/components/RowndComponents.js +0 -12
- package/lib/module/components/RowndComponents.js.map +0 -1
- package/lib/module/components/RowndProvider.js +0 -39
- package/lib/module/components/RowndProvider.js.map +0 -1
- package/lib/module/components/SignIn.js +0 -610
- package/lib/module/components/SignIn.js.map +0 -1
- package/lib/module/components/images/CheckmarkFilled.js +0 -27
- package/lib/module/components/images/CheckmarkFilled.js.map +0 -1
- package/lib/module/components/images/EmailVerifyWaiting.js +0 -87
- package/lib/module/components/images/EmailVerifyWaiting.js.map +0 -1
- package/lib/module/components/images/ErrorIcon.js +0 -18
- package/lib/module/components/images/ErrorIcon.js.map +0 -1
- package/lib/module/components/images/PhoneVerifyWaiting.js +0 -78
- package/lib/module/components/images/PhoneVerifyWaiting.js.map +0 -1
- package/lib/module/data/actions.js +0 -19
- package/lib/module/data/actions.js.map +0 -1
- package/lib/module/hooks/api.js +0 -135
- package/lib/module/hooks/api.js.map +0 -1
- package/lib/module/hooks/debounce.js +0 -29
- package/lib/module/hooks/debounce.js.map +0 -1
- package/lib/module/hooks/fingerprint.js +0 -157
- package/lib/module/hooks/fingerprint.js.map +0 -1
- package/lib/module/hooks/index.js +0 -7
- package/lib/module/hooks/index.js.map +0 -1
- package/lib/module/hooks/interval.js +0 -23
- package/lib/module/hooks/interval.js.map +0 -1
- package/lib/module/hooks/nav.js +0 -30
- package/lib/module/hooks/nav.js.map +0 -1
- package/lib/module/index.tsx.bak +0 -26
- package/lib/module/types.js +0 -2
- package/lib/module/types.js.map +0 -1
- package/lib/module/utils/events.js +0 -45
- package/lib/module/utils/events.js.map +0 -1
- package/lib/module/utils/form.js +0 -34
- package/lib/module/utils/form.js.map +0 -1
- package/lib/module/utils/queue.js +0 -109
- package/lib/module/utils/queue.js.map +0 -1
- package/lib/module/utils/storage.js +0 -6
- package/lib/module/utils/storage.js.map +0 -1
- package/lib/module/utils/tokens.js +0 -24
- package/lib/module/utils/tokens.js.map +0 -1
- package/lib/module/utils/user-data.js +0 -14
- package/lib/module/utils/user-data.js.map +0 -1
- package/lib/package.json +0 -173
- package/lib/typescript/src/components/AuthenticatedComponent.d.ts +0 -7
- package/lib/typescript/src/components/AutoSigninDialog.d.ts +0 -2
- package/lib/typescript/src/components/BottomSheetTextInput/BottomSheetTextInput.d.ts +0 -4
- package/lib/typescript/src/components/BottomSheetTextInput/index.d.ts +0 -2
- package/lib/typescript/src/components/BottomSheetTextInput/types.d.ts +0 -3
- package/lib/typescript/src/components/DarkText.d.ts +0 -3
- package/lib/typescript/src/components/DefaultContext.d.ts +0 -12
- package/lib/typescript/src/components/RowndComponents.d.ts +0 -2
- package/lib/typescript/src/components/RowndProvider.d.ts +0 -8
- package/lib/typescript/src/components/SignIn.d.ts +0 -2
- package/lib/typescript/src/components/images/CheckmarkFilled.d.ts +0 -4
- package/lib/typescript/src/components/images/EmailVerifyWaiting.d.ts +0 -4
- package/lib/typescript/src/components/images/ErrorIcon.d.ts +0 -4
- package/lib/typescript/src/components/images/PhoneVerifyWaiting.d.ts +0 -4
- package/lib/typescript/src/data/actions.d.ts +0 -20
- package/lib/typescript/src/hooks/api.d.ts +0 -12
- package/lib/typescript/src/hooks/debounce.d.ts +0 -5
- package/lib/typescript/src/hooks/fingerprint.d.ts +0 -12
- package/lib/typescript/src/hooks/index.d.ts +0 -6
- package/lib/typescript/src/hooks/interval.d.ts +0 -2
- package/lib/typescript/src/hooks/nav.d.ts +0 -6
- package/lib/typescript/src/index.d.ts +0 -4
- package/lib/typescript/src/types.d.ts +0 -26
- package/lib/typescript/src/utils/config.d.ts +0 -18
- package/lib/typescript/src/utils/events.d.ts +0 -22
- package/lib/typescript/src/utils/form.d.ts +0 -18
- package/lib/typescript/src/utils/queue.d.ts +0 -21
- package/lib/typescript/src/utils/storage.d.ts +0 -3
- package/lib/typescript/src/utils/tokens.d.ts +0 -4
- package/lib/typescript/src/utils/user-data.d.ts +0 -3
- package/react-native.podspec +0 -19
- package/src/assets/images/checkmark--filled.svg +0 -12
- package/src/assets/images/email-verify-waiting.svg +0 -36
- package/src/assets/images/error-icon-material.svg +0 -1
- package/src/assets/images/phone-verify-waiting.svg +0 -26
- package/src/components/AuthenticatedComponent.tsx +0 -30
- package/src/components/AutoSigninDialog.tsx +0 -131
- package/src/components/BottomSheetTextInput/BottomSheetTextInput.tsx +0 -57
- package/src/components/BottomSheetTextInput/index.ts +0 -5
- package/src/components/BottomSheetTextInput/types.ts +0 -3
- package/src/components/DarkText.tsx +0 -16
- package/src/components/DefaultContext.tsx +0 -278
- package/src/components/RowndComponents.tsx +0 -18
- package/src/components/RowndProvider.tsx +0 -56
- package/src/components/SignIn.tsx +0 -793
- package/src/components/images/CheckmarkFilled.tsx +0 -30
- package/src/components/images/EmailVerifyWaiting.tsx +0 -95
- package/src/components/images/ErrorIcon.tsx +0 -11
- package/src/components/images/PhoneVerifyWaiting.tsx +0 -74
- package/src/data/actions.ts +0 -21
- package/src/hooks/api.ts +0 -162
- package/src/hooks/debounce.ts +0 -36
- package/src/hooks/fingerprint.ts +0 -217
- package/src/hooks/index.ts +0 -7
- package/src/hooks/interval.ts +0 -25
- package/src/hooks/nav.tsx +0 -29
- package/src/index.tsx.bak +0 -26
- package/src/types.ts +0 -27
- package/src/utils/events.ts +0 -54
- package/src/utils/form.tsx +0 -64
- package/src/utils/queue.ts +0 -75
- package/src/utils/storage.ts +0 -7
- package/src/utils/tokens.ts +0 -26
- package/src/utils/user-data.ts +0 -15
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = useDebounce;
|
|
7
|
-
|
|
8
|
-
var _debounce = require("debounce");
|
|
9
|
-
|
|
10
|
-
var _react = require("react");
|
|
11
|
-
|
|
12
|
-
function useDebounce(cb, delay) {
|
|
13
|
-
const immediate = false;
|
|
14
|
-
const inputsRef = (0, _react.useRef)(cb);
|
|
15
|
-
const isMounted = useIsMounted();
|
|
16
|
-
(0, _react.useEffect)(() => {
|
|
17
|
-
inputsRef.current = {
|
|
18
|
-
cb,
|
|
19
|
-
delay
|
|
20
|
-
};
|
|
21
|
-
});
|
|
22
|
-
return (0, _react.useMemo)(() => (0, _debounce.debounce)(function () {
|
|
23
|
-
// Don't execute callback, if (1) component in the meanwhile
|
|
24
|
-
// has been unmounted or (2) delay has changed
|
|
25
|
-
if (inputsRef.current.delay === delay && isMounted()) inputsRef.current.cb(...arguments);
|
|
26
|
-
}, delay, immediate), [delay, immediate, isMounted]);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function useIsMounted() {
|
|
30
|
-
const isMountedRef = (0, _react.useRef)(true);
|
|
31
|
-
(0, _react.useEffect)(() => {
|
|
32
|
-
return () => {
|
|
33
|
-
isMountedRef.current = false;
|
|
34
|
-
};
|
|
35
|
-
}, []);
|
|
36
|
-
return () => isMountedRef.current;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=debounce.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useDebounce","cb","delay","immediate","inputsRef","useRef","isMounted","useIsMounted","useEffect","current","useMemo","debounce","isMountedRef"],"sources":["debounce.ts"],"sourcesContent":["import { debounce } from 'debounce';\nimport { useMemo, useEffect, useRef } from 'react';\n\nexport default function useDebounce(cb: any, delay: any) {\n const immediate = false;\n const inputsRef = useRef(cb);\n const isMounted = useIsMounted();\n useEffect(() => {\n inputsRef.current = { cb, delay };\n });\n\n return useMemo(\n () =>\n debounce(\n (...args: any) => {\n // Don't execute callback, if (1) component in the meanwhile\n // has been unmounted or (2) delay has changed\n if (inputsRef.current.delay === delay && isMounted())\n inputsRef.current.cb(...args);\n },\n delay,\n immediate\n ),\n [delay, immediate, isMounted]\n );\n}\n\nfunction useIsMounted() {\n const isMountedRef = useRef(true);\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return () => isMountedRef.current;\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEe,SAASA,WAAT,CAAqBC,EAArB,EAA8BC,KAA9B,EAA0C;EACvD,MAAMC,SAAS,GAAG,KAAlB;EACA,MAAMC,SAAS,GAAG,IAAAC,aAAA,EAAOJ,EAAP,CAAlB;EACA,MAAMK,SAAS,GAAGC,YAAY,EAA9B;EACA,IAAAC,gBAAA,EAAU,MAAM;IACdJ,SAAS,CAACK,OAAV,GAAoB;MAAER,EAAF;MAAMC;IAAN,CAApB;EACD,CAFD;EAIA,OAAO,IAAAQ,cAAA,EACL,MACE,IAAAC,kBAAA,EACE,YAAkB;IAChB;IACA;IACA,IAAIP,SAAS,CAACK,OAAV,CAAkBP,KAAlB,KAA4BA,KAA5B,IAAqCI,SAAS,EAAlD,EACEF,SAAS,CAACK,OAAV,CAAkBR,EAAlB,CAAqB,YAArB;EACH,CANH,EAOEC,KAPF,EAQEC,SARF,CAFG,EAYL,CAACD,KAAD,EAAQC,SAAR,EAAmBG,SAAnB,CAZK,CAAP;AAcD;;AAED,SAASC,YAAT,GAAwB;EACtB,MAAMK,YAAY,GAAG,IAAAP,aAAA,EAAO,IAAP,CAArB;EACA,IAAAG,gBAAA,EAAU,MAAM;IACd,OAAO,MAAM;MACXI,YAAY,CAACH,OAAb,GAAuB,KAAvB;IACD,CAFD;EAGD,CAJD,EAIG,EAJH;EAKA,OAAO,MAAMG,YAAY,CAACH,OAA1B;AACD"}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = _default;
|
|
7
|
-
|
|
8
|
-
var _reactNativeDeviceInfo = _interopRequireDefault(require("react-native-device-info"));
|
|
9
|
-
|
|
10
|
-
var _react = require("react");
|
|
11
|
-
|
|
12
|
-
var _api = _interopRequireDefault(require("./api"));
|
|
13
|
-
|
|
14
|
-
var _GlobalContext = require("../components/GlobalContext");
|
|
15
|
-
|
|
16
|
-
var _storage = _interopRequireDefault(require("../utils/storage"));
|
|
17
|
-
|
|
18
|
-
var _reactNativeSha = require("react-native-sha256");
|
|
19
|
-
|
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
-
|
|
22
|
-
let isFingerprintingInProgress = false;
|
|
23
|
-
|
|
24
|
-
function _default() {
|
|
25
|
-
var _state$user5, _state$user5$data, _state$user6, _state$user6$data, _state$user9, _state$user9$data, _state$user10, _state$user10$data;
|
|
26
|
-
|
|
27
|
-
const {
|
|
28
|
-
state
|
|
29
|
-
} = (0, _GlobalContext.useGlobalContext)();
|
|
30
|
-
const {
|
|
31
|
-
client: api
|
|
32
|
-
} = (0, _api.default)();
|
|
33
|
-
/**
|
|
34
|
-
* Computes hashes for all possible lookup fields values coupled with the app ID
|
|
35
|
-
* @param appId
|
|
36
|
-
* @param rawLookupValues
|
|
37
|
-
* @returns array of challenge hashes
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
async function computePossibleChallengeLookupValues(appId, rawLookupValues) {
|
|
41
|
-
const lookupHashes = [];
|
|
42
|
-
|
|
43
|
-
for (const value of rawLookupValues) {
|
|
44
|
-
lookupHashes.push(await (0, _reactNativeSha.sha256)(`${appId}:${value}`));
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return lookupHashes;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Looks for a challenge in storage based on presented lookup values
|
|
51
|
-
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const getChallengeIfPresent = (0, _react.useCallback)(async (appId, challengeLookupValues) => {
|
|
55
|
-
if (!appId) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const challenges = JSON.parse(_storage.default.getString('challenges') || '{}');
|
|
60
|
-
|
|
61
|
-
if (!Object.keys(challenges).length) {
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
let challengeKey = '';
|
|
66
|
-
let challengeValue = '';
|
|
67
|
-
|
|
68
|
-
for (const value of challengeLookupValues) {
|
|
69
|
-
const hash = await (0, _reactNativeSha.sha256)(`${appId}:${value}`);
|
|
70
|
-
const challenge = Object.entries(challenges).find(_ref => {
|
|
71
|
-
let [, hashes] = _ref;
|
|
72
|
-
return hashes.includes(hash);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
if (challenge) {
|
|
76
|
-
challengeKey = hash;
|
|
77
|
-
challengeValue = challenge[0];
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (!challengeKey || !challengeValue) {
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return {
|
|
87
|
-
key: challengeKey,
|
|
88
|
-
value: challengeValue
|
|
89
|
-
};
|
|
90
|
-
}, []);
|
|
91
|
-
const getFingerprint = (0, _react.useCallback)(async () => {
|
|
92
|
-
const visitorId = _reactNativeDeviceInfo.default.getDeviceId();
|
|
93
|
-
|
|
94
|
-
return {
|
|
95
|
-
visitorId
|
|
96
|
-
};
|
|
97
|
-
}, []);
|
|
98
|
-
const registerFingerprint = (0, _react.useCallback)(async () => {
|
|
99
|
-
if (!state.auth.access_token || !state.auth.is_verified_user || !state.app.id || isFingerprintingInProgress) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
isFingerprintingInProgress = true;
|
|
104
|
-
|
|
105
|
-
try {
|
|
106
|
-
var _state$user, _state$user$data, _state$user2, _state$user2$data, _state$user3, _state$user3$data, _state$user4, _state$user4$data;
|
|
107
|
-
|
|
108
|
-
// Check for existing challenge
|
|
109
|
-
const challengeEntry = await getChallengeIfPresent(state.app.id, [(_state$user = state.user) === null || _state$user === void 0 ? void 0 : (_state$user$data = _state$user.data) === null || _state$user$data === void 0 ? void 0 : _state$user$data.email, (_state$user2 = state.user) === null || _state$user2 === void 0 ? void 0 : (_state$user2$data = _state$user2.data) === null || _state$user2$data === void 0 ? void 0 : _state$user2$data.phone_number].filter(Boolean));
|
|
110
|
-
const fingerprint = await getFingerprint();
|
|
111
|
-
const payload = await api.post('hub/auth/fingerprints', {
|
|
112
|
-
headers: {
|
|
113
|
-
Authorization: `Bearer ${state.auth.access_token}`
|
|
114
|
-
},
|
|
115
|
-
json: {
|
|
116
|
-
hash: fingerprint.visitorId,
|
|
117
|
-
challenge: (challengeEntry === null || challengeEntry === void 0 ? void 0 : challengeEntry.value) || null // Might exist from a previous run, in which case this request will be a no-op
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
}).json();
|
|
121
|
-
|
|
122
|
-
if (payload.challenge === (challengeEntry === null || challengeEntry === void 0 ? void 0 : challengeEntry.key)) {
|
|
123
|
-
// This is a no-op
|
|
124
|
-
console.debug('Fingerprint already registered');
|
|
125
|
-
return;
|
|
126
|
-
} // Save the challenge for future sign-ins if we don't have one already or we got a new one from the server
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
const challengeLookupHashes = await computePossibleChallengeLookupValues(state.app.id, [(_state$user3 = state.user) === null || _state$user3 === void 0 ? void 0 : (_state$user3$data = _state$user3.data) === null || _state$user3$data === void 0 ? void 0 : _state$user3$data.email, (_state$user4 = state.user) === null || _state$user4 === void 0 ? void 0 : (_state$user4$data = _state$user4.data) === null || _state$user4$data === void 0 ? void 0 : _state$user4$data.phone_number].filter(Boolean));
|
|
130
|
-
|
|
131
|
-
if (payload.challenge && challengeLookupHashes.length > 0) {
|
|
132
|
-
const challenges = JSON.parse(_storage.default.getString('challenges') || '{}');
|
|
133
|
-
|
|
134
|
-
_storage.default.set('challenges', JSON.stringify({ ...challenges,
|
|
135
|
-
[payload.challenge]: challengeLookupHashes
|
|
136
|
-
}));
|
|
137
|
-
}
|
|
138
|
-
} catch (err) {
|
|
139
|
-
console.warn('Failed to register fingerprint', err);
|
|
140
|
-
} finally {
|
|
141
|
-
isFingerprintingInProgress = false;
|
|
142
|
-
}
|
|
143
|
-
}, [api, state.app.id, state.auth.access_token, state.auth.is_verified_user, (_state$user5 = state.user) === null || _state$user5 === void 0 ? void 0 : (_state$user5$data = _state$user5.data) === null || _state$user5$data === void 0 ? void 0 : _state$user5$data.email, (_state$user6 = state.user) === null || _state$user6 === void 0 ? void 0 : (_state$user6$data = _state$user6.data) === null || _state$user6$data === void 0 ? void 0 : _state$user6$data.phone_number, getChallengeIfPresent, getFingerprint]);
|
|
144
|
-
const clearFingerprint = (0, _react.useCallback)(challenge => {
|
|
145
|
-
const challenges = JSON.parse(_storage.default.getString('challenges') || '{}');
|
|
146
|
-
delete challenges[challenge];
|
|
147
|
-
|
|
148
|
-
_storage.default.set('challenges', JSON.stringify(challenges));
|
|
149
|
-
}, []);
|
|
150
|
-
(0, _react.useEffect)(() => {
|
|
151
|
-
if (!state.auth.access_token) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
(async () => {
|
|
156
|
-
var _state$user7, _state$user7$data, _state$user8, _state$user8$data;
|
|
157
|
-
|
|
158
|
-
// If already fingerprinted, don't try again
|
|
159
|
-
const existingChallenge = await getChallengeIfPresent(state.app.id, [(_state$user7 = state.user) === null || _state$user7 === void 0 ? void 0 : (_state$user7$data = _state$user7.data) === null || _state$user7$data === void 0 ? void 0 : _state$user7$data.email, (_state$user8 = state.user) === null || _state$user8 === void 0 ? void 0 : (_state$user8$data = _state$user8.data) === null || _state$user8$data === void 0 ? void 0 : _state$user8$data.phone_number].filter(Boolean)); // Don't need to re-register a fingerprint if we already have one registered
|
|
160
|
-
|
|
161
|
-
if (existingChallenge) {
|
|
162
|
-
console.debug('Found existing challenge, so not requesting fingerprint registration.');
|
|
163
|
-
return;
|
|
164
|
-
} // We have an access token, so we can use it to get the fingerprint
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
registerFingerprint();
|
|
168
|
-
})();
|
|
169
|
-
}, [getChallengeIfPresent, registerFingerprint, state.app.id, state.auth.access_token, (_state$user9 = state.user) === null || _state$user9 === void 0 ? void 0 : (_state$user9$data = _state$user9.data) === null || _state$user9$data === void 0 ? void 0 : _state$user9$data.email, (_state$user10 = state.user) === null || _state$user10 === void 0 ? void 0 : (_state$user10$data = _state$user10.data) === null || _state$user10$data === void 0 ? void 0 : _state$user10$data.phone_number]);
|
|
170
|
-
return {
|
|
171
|
-
getFingerprint,
|
|
172
|
-
getChallengeIfPresent,
|
|
173
|
-
clearFingerprint
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=fingerprint.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["isFingerprintingInProgress","state","useGlobalContext","client","api","useApi","computePossibleChallengeLookupValues","appId","rawLookupValues","lookupHashes","value","push","sha256","getChallengeIfPresent","useCallback","challengeLookupValues","challenges","JSON","parse","storage","getString","Object","keys","length","challengeKey","challengeValue","hash","challenge","entries","find","hashes","includes","key","getFingerprint","visitorId","DeviceInfo","getDeviceId","registerFingerprint","auth","access_token","is_verified_user","app","id","challengeEntry","user","data","email","phone_number","filter","Boolean","fingerprint","payload","post","headers","Authorization","json","console","debug","challengeLookupHashes","set","stringify","err","warn","clearFingerprint","useEffect","existingChallenge"],"sources":["fingerprint.ts"],"sourcesContent":["import DeviceInfo from 'react-native-device-info';\nimport { useEffect, useCallback } from 'react';\nimport useApi from './api';\nimport { useGlobalContext } from '../components/GlobalContext';\nimport storage from '../utils/storage';\nimport { sha256 } from 'react-native-sha256';\n\ninterface IFingerprint {\n message: string;\n hash: string;\n challenge: string;\n}\n\ninterface IChallenge {\n key: string;\n value: string;\n}\n\nlet isFingerprintingInProgress = false;\n\nexport default function () {\n const { state } = useGlobalContext();\n const { client: api } = useApi();\n\n /**\n * Computes hashes for all possible lookup fields values coupled with the app ID\n * @param appId\n * @param rawLookupValues\n * @returns array of challenge hashes\n */\n async function computePossibleChallengeLookupValues(\n appId: string,\n rawLookupValues: string[]\n ): Promise<string[]> {\n const lookupHashes = [];\n for (const value of rawLookupValues) {\n lookupHashes.push(await sha256(`${appId}:${value}`));\n }\n return lookupHashes;\n }\n\n /**\n * Looks for a challenge in storage based on presented lookup values\n */\n const getChallengeIfPresent = useCallback(\n async (\n appId: string | undefined,\n challengeLookupValues: string[]\n ): Promise<IChallenge | null> => {\n if (!appId) {\n return null;\n }\n\n const challenges: Record<string, string[]> = JSON.parse(\n storage.getString('challenges') || '{}'\n );\n\n if (!Object.keys(challenges).length) {\n return null;\n }\n\n let challengeKey = '';\n let challengeValue = '';\n for (const value of challengeLookupValues) {\n const hash = await sha256(`${appId}:${value}`);\n const challenge = Object.entries(challenges).find(([, hashes]) =>\n hashes.includes(hash)\n );\n\n if (challenge) {\n challengeKey = hash;\n challengeValue = challenge[0];\n break;\n }\n }\n\n if (!challengeKey || !challengeValue) {\n return null;\n }\n\n return {\n key: challengeKey,\n value: challengeValue,\n };\n },\n []\n );\n\n const getFingerprint = useCallback(async () => {\n const visitorId = DeviceInfo.getDeviceId();\n\n return {\n visitorId,\n };\n }, []);\n\n const registerFingerprint = useCallback(async () => {\n if (\n !state.auth.access_token ||\n !state.auth.is_verified_user ||\n !state.app.id ||\n isFingerprintingInProgress\n ) {\n return;\n }\n\n isFingerprintingInProgress = true;\n\n try {\n // Check for existing challenge\n const challengeEntry = await getChallengeIfPresent(\n state.app.id,\n [state.user?.data?.email, state.user?.data?.phone_number].filter(\n Boolean\n )\n );\n\n const fingerprint = await getFingerprint();\n const payload: IFingerprint = await api\n .post('hub/auth/fingerprints', {\n headers: {\n Authorization: `Bearer ${state.auth.access_token}`,\n },\n json: {\n hash: fingerprint.visitorId,\n challenge: challengeEntry?.value || null, // Might exist from a previous run, in which case this request will be a no-op\n },\n })\n .json();\n\n if (payload.challenge === challengeEntry?.key) {\n // This is a no-op\n console.debug('Fingerprint already registered');\n return;\n }\n\n // Save the challenge for future sign-ins if we don't have one already or we got a new one from the server\n const challengeLookupHashes = await computePossibleChallengeLookupValues(\n state.app.id,\n [state.user?.data?.email, state.user?.data?.phone_number].filter(\n Boolean\n )\n );\n if (payload.challenge && challengeLookupHashes.length > 0) {\n const challenges = JSON.parse(storage.getString('challenges') || '{}');\n storage.set(\n 'challenges',\n JSON.stringify({\n ...challenges,\n [payload.challenge]: challengeLookupHashes,\n })\n );\n }\n } catch (err) {\n console.warn('Failed to register fingerprint', err);\n } finally {\n isFingerprintingInProgress = false;\n }\n }, [\n api,\n state.app.id,\n state.auth.access_token,\n state.auth.is_verified_user,\n state.user?.data?.email,\n state.user?.data?.phone_number,\n getChallengeIfPresent,\n getFingerprint,\n ]);\n\n const clearFingerprint = useCallback((challenge: string) => {\n const challenges: Record<string, string[]> = JSON.parse(\n storage.getString('challenges') || '{}'\n );\n delete challenges[challenge];\n storage.set('challenges', JSON.stringify(challenges));\n }, []);\n\n useEffect(() => {\n if (!state.auth.access_token) {\n return;\n }\n\n (async () => {\n // If already fingerprinted, don't try again\n const existingChallenge = await getChallengeIfPresent(\n state.app.id,\n [state.user?.data?.email, state.user?.data?.phone_number].filter(\n Boolean\n )\n );\n\n // Don't need to re-register a fingerprint if we already have one registered\n if (existingChallenge) {\n console.debug(\n 'Found existing challenge, so not requesting fingerprint registration.'\n );\n return;\n }\n\n // We have an access token, so we can use it to get the fingerprint\n registerFingerprint();\n })();\n }, [\n getChallengeIfPresent,\n registerFingerprint,\n state.app.id,\n state.auth.access_token,\n state.user?.data?.email,\n state.user?.data?.phone_number,\n ]);\n\n return {\n getFingerprint,\n getChallengeIfPresent,\n clearFingerprint,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "useApi", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _api.default;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "useDebounce", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () {
|
|
15
|
-
return _debounce.default;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
Object.defineProperty(exports, "useDeviceFingerprint", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () {
|
|
21
|
-
return _fingerprint.default;
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(exports, "useInterval", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function () {
|
|
27
|
-
return _interval.default;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(exports, "useNav", {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () {
|
|
33
|
-
return _nav.default;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
var _api = _interopRequireDefault(require("./api"));
|
|
38
|
-
|
|
39
|
-
var _debounce = _interopRequireDefault(require("./debounce"));
|
|
40
|
-
|
|
41
|
-
var _interval = _interopRequireDefault(require("./interval"));
|
|
42
|
-
|
|
43
|
-
var _nav = _interopRequireDefault(require("./nav"));
|
|
44
|
-
|
|
45
|
-
var _fingerprint = _interopRequireDefault(require("./fingerprint"));
|
|
46
|
-
|
|
47
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
48
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["import useApi from './api';\nimport useDebounce from './debounce';\nimport useInterval from './interval';\nimport useNav from './nav';\nimport useDeviceFingerprint from './fingerprint';\n\nexport { useApi, useDebounce, useInterval, useNav, useDeviceFingerprint };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = require("react");
|
|
9
|
-
|
|
10
|
-
function useInterval(callback, delay) {
|
|
11
|
-
const savedCallback = (0, _react.useRef)(callback); // Remember the latest callback if it changes.
|
|
12
|
-
|
|
13
|
-
(0, _react.useLayoutEffect)(() => {
|
|
14
|
-
savedCallback.current = callback;
|
|
15
|
-
}, [callback]); // Set up the interval.
|
|
16
|
-
|
|
17
|
-
(0, _react.useEffect)(() => {
|
|
18
|
-
// Don't schedule if no delay is specified.
|
|
19
|
-
// Note: 0 is a valid value for delay.
|
|
20
|
-
if (!delay && delay !== 0) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const id = setInterval(() => savedCallback.current(), delay);
|
|
25
|
-
return () => clearInterval(id);
|
|
26
|
-
}, [delay]);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
var _default = useInterval;
|
|
30
|
-
exports.default = _default;
|
|
31
|
-
//# sourceMappingURL=interval.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useInterval","callback","delay","savedCallback","useRef","useLayoutEffect","current","useEffect","id","setInterval","clearInterval"],"sources":["interval.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nfunction useInterval(callback: () => void, delay: number | null) {\n const savedCallback = useRef(callback);\n\n // Remember the latest callback if it changes.\n useLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n // Don't schedule if no delay is specified.\n // Note: 0 is a valid value for delay.\n if (!delay && delay !== 0) {\n return;\n }\n\n const id = setInterval(() => savedCallback.current(), delay);\n\n return () => clearInterval(id);\n }, [delay]);\n}\n\nexport default useInterval;\n"],"mappings":";;;;;;;AAAA;;AAEA,SAASA,WAAT,CAAqBC,QAArB,EAA2CC,KAA3C,EAAiE;EAC/D,MAAMC,aAAa,GAAG,IAAAC,aAAA,EAAOH,QAAP,CAAtB,CAD+D,CAG/D;;EACA,IAAAI,sBAAA,EAAgB,MAAM;IACpBF,aAAa,CAACG,OAAd,GAAwBL,QAAxB;EACD,CAFD,EAEG,CAACA,QAAD,CAFH,EAJ+D,CAQ/D;;EACA,IAAAM,gBAAA,EAAU,MAAM;IACd;IACA;IACA,IAAI,CAACL,KAAD,IAAUA,KAAK,KAAK,CAAxB,EAA2B;MACzB;IACD;;IAED,MAAMM,EAAE,GAAGC,WAAW,CAAC,MAAMN,aAAa,CAACG,OAAd,EAAP,EAAgCJ,KAAhC,CAAtB;IAEA,OAAO,MAAMQ,aAAa,CAACF,EAAD,CAA1B;EACD,CAVD,EAUG,CAACN,KAAD,CAVH;AAWD;;eAEcF,W"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = useNav;
|
|
7
|
-
|
|
8
|
-
var _GlobalContext = require("../components/GlobalContext");
|
|
9
|
-
|
|
10
|
-
var _actions = require("../data/actions");
|
|
11
|
-
|
|
12
|
-
function useNav() {
|
|
13
|
-
const {
|
|
14
|
-
dispatch
|
|
15
|
-
} = (0, _GlobalContext.useGlobalContext)();
|
|
16
|
-
return _ref => {
|
|
17
|
-
let {
|
|
18
|
-
route,
|
|
19
|
-
hide
|
|
20
|
-
} = _ref;
|
|
21
|
-
|
|
22
|
-
if (hide) {
|
|
23
|
-
dispatch({
|
|
24
|
-
type: _actions.ActionType.SET_CONTAINER_VISIBLE,
|
|
25
|
-
payload: {
|
|
26
|
-
isVisible: false
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
} else if (route) {
|
|
30
|
-
dispatch({
|
|
31
|
-
type: _actions.ActionType.CHANGE_ROUTE,
|
|
32
|
-
payload: {
|
|
33
|
-
current_route: route
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=nav.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useNav","dispatch","useGlobalContext","route","hide","type","ActionType","SET_CONTAINER_VISIBLE","payload","isVisible","CHANGE_ROUTE","current_route"],"sources":["nav.tsx"],"sourcesContent":["import { useGlobalContext } from '../components/GlobalContext';\nimport { ActionType } from '../data/actions';\n\ninterface INavOpts {\n route?: string;\n hide?: boolean;\n}\n\nexport default function useNav() {\n const { dispatch } = useGlobalContext();\n\n return ({ route, hide }: INavOpts) => {\n if (hide) {\n dispatch({\n type: ActionType.SET_CONTAINER_VISIBLE,\n payload: {\n isVisible: false,\n },\n });\n } else if (route) {\n dispatch({\n type: ActionType.CHANGE_ROUTE,\n payload: {\n current_route: route,\n },\n });\n }\n };\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AAOe,SAASA,MAAT,GAAkB;EAC/B,MAAM;IAAEC;EAAF,IAAe,IAAAC,+BAAA,GAArB;EAEA,OAAO,QAA+B;IAAA,IAA9B;MAAEC,KAAF;MAASC;IAAT,CAA8B;;IACpC,IAAIA,IAAJ,EAAU;MACRH,QAAQ,CAAC;QACPI,IAAI,EAAEC,mBAAA,CAAWC,qBADV;QAEPC,OAAO,EAAE;UACPC,SAAS,EAAE;QADJ;MAFF,CAAD,CAAR;IAMD,CAPD,MAOO,IAAIN,KAAJ,EAAW;MAChBF,QAAQ,CAAC;QACPI,IAAI,EAAEC,mBAAA,CAAWI,YADV;QAEPF,OAAO,EAAE;UACPG,aAAa,EAAER;QADR;MAFF,CAAD,CAAR;IAMD;EACF,CAhBD;AAiBD"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
requireNativeComponent,
|
|
3
|
-
UIManager,
|
|
4
|
-
Platform,
|
|
5
|
-
ViewStyle,
|
|
6
|
-
} from 'react-native';
|
|
7
|
-
|
|
8
|
-
const LINKING_ERROR =
|
|
9
|
-
`The package '@rownd/react-native' doesn't seem to be linked. Make sure: \n\n` +
|
|
10
|
-
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
|
|
11
|
-
'- You rebuilt the app after installing the package\n' +
|
|
12
|
-
'- You are not using Expo managed workflow\n';
|
|
13
|
-
|
|
14
|
-
type ReactNativeProps = {
|
|
15
|
-
color: string;
|
|
16
|
-
style: ViewStyle;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
const ComponentName = 'ReactNativeView';
|
|
20
|
-
|
|
21
|
-
export const ReactNativeView =
|
|
22
|
-
UIManager.getViewManagerConfig(ComponentName) != null
|
|
23
|
-
? requireNativeComponent<ReactNativeProps>(ComponentName)
|
|
24
|
-
: () => {
|
|
25
|
-
throw new Error(LINKING_ERROR);
|
|
26
|
-
};
|
package/lib/commonjs/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type TRowndContext = {\n requestSignIn: Function;\n signOut: Function;\n getAccessToken: Function;\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;\n is_authenticated: boolean;\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};\n"],"mappings":""}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.events = exports.EventType = void 0;
|
|
7
|
-
|
|
8
|
-
var _eventemitter = _interopRequireDefault(require("eventemitter3"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
const bus = new _eventemitter.default();
|
|
13
|
-
let EventType;
|
|
14
|
-
exports.EventType = EventType;
|
|
15
|
-
|
|
16
|
-
(function (EventType) {
|
|
17
|
-
EventType["AUTH"] = "auth";
|
|
18
|
-
EventType["SIGN_OUT"] = "sign_out";
|
|
19
|
-
EventType["USER_DATA"] = "user_data";
|
|
20
|
-
EventType["USER_DATA_SAVED"] = "user_data_saved";
|
|
21
|
-
})(EventType || (exports.EventType = EventType = {}));
|
|
22
|
-
|
|
23
|
-
const events = {
|
|
24
|
-
addEventListener: (type, callback, options) => {
|
|
25
|
-
if (!Object.values(EventType).includes(type)) {
|
|
26
|
-
console.warn(`Unknown event type: ${type}`);
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
let busFn = bus.on;
|
|
31
|
-
|
|
32
|
-
if (options === true || options !== null && options !== void 0 && options.once) {
|
|
33
|
-
busFn = bus.once;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
busFn.apply(bus, [type, callback, options]);
|
|
37
|
-
},
|
|
38
|
-
removeEventListener: bus.removeListener,
|
|
39
|
-
dispatchEvent: event => {
|
|
40
|
-
if (!Object.values(EventType).includes(event.type)) {
|
|
41
|
-
throw new Error(`Unknown event type: ${event.type}`);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return bus.emit(event.type, event.detail);
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
dispatch(type, data) {
|
|
48
|
-
if (!Object.values(EventType).includes(type)) {
|
|
49
|
-
throw new Error(`Unknown event type: ${type}`);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return bus.emit(type, data);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
};
|
|
56
|
-
exports.events = events;
|
|
57
|
-
//# sourceMappingURL=events.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["bus","EventEmitter","EventType","events","addEventListener","type","callback","options","Object","values","includes","console","warn","busFn","on","once","apply","removeEventListener","removeListener","dispatchEvent","event","Error","emit","detail","dispatch","data"],"sources":["events.ts"],"sourcesContent":["import EventEmitter from 'eventemitter3';\nconst bus = new EventEmitter();\n\nexport enum EventType {\n AUTH = 'auth',\n SIGN_OUT = 'sign_out',\n USER_DATA = 'user_data',\n USER_DATA_SAVED = 'user_data_saved',\n}\n\nexport type TAuthEvent = {\n access_token: string;\n user_id: string;\n app_id: string;\n};\n\ntype EventListenerOptions = {\n once?: boolean;\n};\n\nexport const events = {\n addEventListener: (\n type: string,\n callback: (...args: any[]) => void | null,\n options?: boolean | EventListenerOptions | undefined\n ): void => {\n if (!Object.values<string>(EventType).includes(type)) {\n console.warn(`Unknown event type: ${type}`);\n return;\n }\n\n let busFn = bus.on;\n if (options === true || (options as EventListenerOptions)?.once) {\n busFn = bus.once;\n }\n\n busFn.apply(bus, [type, callback, options]);\n },\n removeEventListener: bus.removeListener,\n dispatchEvent: (event: CustomEvent): boolean => {\n if (!Object.values<string>(EventType).includes(event.type)) {\n throw new Error(`Unknown event type: ${event.type}`);\n }\n\n return bus.emit(event.type, event.detail);\n },\n dispatch(type: EventType, data: any): boolean {\n if (!Object.values<string>(EventType).includes(type)) {\n throw new Error(`Unknown event type: ${type}`);\n }\n\n return bus.emit(type, data);\n },\n};\n"],"mappings":";;;;;;;AAAA;;;;AACA,MAAMA,GAAG,GAAG,IAAIC,qBAAJ,EAAZ;IAEYC,S;;;WAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;EAAAA,S;GAAAA,S,yBAAAA,S;;AAiBL,MAAMC,MAAM,GAAG;EACpBC,gBAAgB,EAAE,CAChBC,IADgB,EAEhBC,QAFgB,EAGhBC,OAHgB,KAIP;IACT,IAAI,CAACC,MAAM,CAACC,MAAP,CAAsBP,SAAtB,EAAiCQ,QAAjC,CAA0CL,IAA1C,CAAL,EAAsD;MACpDM,OAAO,CAACC,IAAR,CAAc,uBAAsBP,IAAK,EAAzC;MACA;IACD;;IAED,IAAIQ,KAAK,GAAGb,GAAG,CAACc,EAAhB;;IACA,IAAIP,OAAO,KAAK,IAAZ,IAAqBA,OAArB,aAAqBA,OAArB,eAAqBA,OAAD,CAAmCQ,IAA3D,EAAiE;MAC/DF,KAAK,GAAGb,GAAG,CAACe,IAAZ;IACD;;IAEDF,KAAK,CAACG,KAAN,CAAYhB,GAAZ,EAAiB,CAACK,IAAD,EAAOC,QAAP,EAAiBC,OAAjB,CAAjB;EACD,CAjBmB;EAkBpBU,mBAAmB,EAAEjB,GAAG,CAACkB,cAlBL;EAmBpBC,aAAa,EAAGC,KAAD,IAAiC;IAC9C,IAAI,CAACZ,MAAM,CAACC,MAAP,CAAsBP,SAAtB,EAAiCQ,QAAjC,CAA0CU,KAAK,CAACf,IAAhD,CAAL,EAA4D;MAC1D,MAAM,IAAIgB,KAAJ,CAAW,uBAAsBD,KAAK,CAACf,IAAK,EAA5C,CAAN;IACD;;IAED,OAAOL,GAAG,CAACsB,IAAJ,CAASF,KAAK,CAACf,IAAf,EAAqBe,KAAK,CAACG,MAA3B,CAAP;EACD,CAzBmB;;EA0BpBC,QAAQ,CAACnB,IAAD,EAAkBoB,IAAlB,EAAsC;IAC5C,IAAI,CAACjB,MAAM,CAACC,MAAP,CAAsBP,SAAtB,EAAiCQ,QAAjC,CAA0CL,IAA1C,CAAL,EAAsD;MACpD,MAAM,IAAIgB,KAAJ,CAAW,uBAAsBhB,IAAK,EAAtC,CAAN;IACD;;IAED,OAAOL,GAAG,CAACsB,IAAJ,CAASjB,IAAT,EAAeoB,IAAf,CAAP;EACD;;AAhCmB,CAAf"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.renderField = renderField;
|
|
7
|
-
|
|
8
|
-
var _reactNative = require("react-native");
|
|
9
|
-
|
|
10
|
-
var _picker = require("@react-native-picker/picker");
|
|
11
|
-
|
|
12
|
-
var _react = _interopRequireDefault(require("react"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
function renderField(_ref) {
|
|
17
|
-
var _options$;
|
|
18
|
-
|
|
19
|
-
let {
|
|
20
|
-
id,
|
|
21
|
-
label = '',
|
|
22
|
-
name,
|
|
23
|
-
type = 'input',
|
|
24
|
-
value,
|
|
25
|
-
placeholder,
|
|
26
|
-
options = null,
|
|
27
|
-
onChange
|
|
28
|
-
} = _ref;
|
|
29
|
-
|
|
30
|
-
if (!id) {
|
|
31
|
-
id = `rph-input-${name}`;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, label && /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, label), type === 'select' && /*#__PURE__*/_react.default.createElement(_picker.Picker, {
|
|
35
|
-
onValueChange: onChange,
|
|
36
|
-
selectedValue: value || (options === null || options === void 0 ? void 0 : (_options$ = options[0]) === null || _options$ === void 0 ? void 0 : _options$.value)
|
|
37
|
-
}, options === null || options === void 0 ? void 0 : options.map(opt => /*#__PURE__*/_react.default.createElement(_picker.Picker.Item, {
|
|
38
|
-
value: opt.value,
|
|
39
|
-
key: opt.value
|
|
40
|
-
}, ' ', opt.label, ' '))), type === 'input' && /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, {
|
|
41
|
-
value: value,
|
|
42
|
-
placeholder: placeholder,
|
|
43
|
-
onChangeText: onChange
|
|
44
|
-
}));
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=form.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["renderField","id","label","name","type","value","placeholder","options","onChange","map","opt"],"sources":["form.tsx"],"sourcesContent":["import { Text, TextInput } from 'react-native';\nimport { Picker } from '@react-native-picker/picker';\nimport React from 'react';\n\ntype FormFieldProps = {\n id?: string;\n name: string;\n value?: string;\n type?: string;\n label?: string;\n placeholder?: string;\n options?:\n | [\n {\n value: string;\n label: string;\n }\n ]\n | null;\n onChange?: (value: string) => void;\n};\n\nexport function renderField({\n id,\n label = '',\n name,\n type = 'input',\n value,\n placeholder,\n options = null,\n onChange,\n}: FormFieldProps) {\n if (!id) {\n id = `rph-input-${name}`;\n }\n\n return (\n <>\n {label && <Text>{label}</Text>}\n\n {type === 'select' && (\n <Picker\n onValueChange={onChange}\n selectedValue={value || options?.[0]?.value}\n >\n {options?.map((opt) => (\n <Picker.Item value={opt.value} key={opt.value}>\n {' '}\n {opt.label}{' '}\n </Picker.Item>\n ))}\n </Picker>\n )}\n\n {type === 'input' && (\n <TextInput\n value={value}\n placeholder={placeholder}\n onChangeText={onChange}\n />\n )}\n </>\n );\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAoBO,SAASA,WAAT,OASY;EAAA;;EAAA,IATS;IAC1BC,EAD0B;IAE1BC,KAAK,GAAG,EAFkB;IAG1BC,IAH0B;IAI1BC,IAAI,GAAG,OAJmB;IAK1BC,KAL0B;IAM1BC,WAN0B;IAO1BC,OAAO,GAAG,IAPgB;IAQ1BC;EAR0B,CAST;;EACjB,IAAI,CAACP,EAAL,EAAS;IACPA,EAAE,GAAI,aAAYE,IAAK,EAAvB;EACD;;EAED,oBACE,4DACGD,KAAK,iBAAI,6BAAC,iBAAD,QAAOA,KAAP,CADZ,EAGGE,IAAI,KAAK,QAAT,iBACC,6BAAC,cAAD;IACE,aAAa,EAAEI,QADjB;IAEE,aAAa,EAAEH,KAAK,KAAIE,OAAJ,aAAIA,OAAJ,oCAAIA,OAAO,CAAG,CAAH,CAAX,8CAAI,UAAcF,KAAlB;EAFtB,GAIGE,OAJH,aAIGA,OAJH,uBAIGA,OAAO,CAAEE,GAAT,CAAcC,GAAD,iBACZ,6BAAC,cAAD,CAAQ,IAAR;IAAa,KAAK,EAAEA,GAAG,CAACL,KAAxB;IAA+B,GAAG,EAAEK,GAAG,CAACL;EAAxC,GACG,GADH,EAEGK,GAAG,CAACR,KAFP,EAEc,GAFd,CADD,CAJH,CAJJ,EAiBGE,IAAI,KAAK,OAAT,iBACC,6BAAC,sBAAD;IACE,KAAK,EAAEC,KADT;IAEE,WAAW,EAAEC,WAFf;IAGE,YAAY,EAAEE;EAHhB,EAlBJ,CADF;AA2BD"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
9
|
-
|
|
10
|
-
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
|
11
|
-
|
|
12
|
-
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
|
13
|
-
|
|
14
|
-
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
|
15
|
-
|
|
16
|
-
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
|
17
|
-
|
|
18
|
-
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
|
19
|
-
|
|
20
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
|
21
|
-
|
|
22
|
-
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
|
23
|
-
|
|
24
|
-
// import { logger } from "./utils/log";
|
|
25
|
-
let count = 0;
|
|
26
|
-
|
|
27
|
-
var _items = /*#__PURE__*/new WeakMap();
|
|
28
|
-
|
|
29
|
-
class Queue {
|
|
30
|
-
constructor() {
|
|
31
|
-
_classPrivateFieldInitSpec(this, _items, {
|
|
32
|
-
writable: true,
|
|
33
|
-
value: void 0
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
_classPrivateFieldSet(this, _items, []);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
enqueue(item) {
|
|
40
|
-
_classPrivateFieldGet(this, _items).push(item);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
dequeue() {
|
|
44
|
-
return _classPrivateFieldGet(this, _items).shift();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
get size() {
|
|
48
|
-
return _classPrivateFieldGet(this, _items).length;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
var _pendingPromise = /*#__PURE__*/new WeakMap();
|
|
54
|
-
|
|
55
|
-
class AutoQueue extends Queue {
|
|
56
|
-
constructor() {
|
|
57
|
-
super();
|
|
58
|
-
|
|
59
|
-
_defineProperty(this, "_cache", void 0);
|
|
60
|
-
|
|
61
|
-
_classPrivateFieldInitSpec(this, _pendingPromise, {
|
|
62
|
-
writable: true,
|
|
63
|
-
value: void 0
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
_classPrivateFieldSet(this, _pendingPromise, false);
|
|
67
|
-
|
|
68
|
-
this._cache = {};
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
enqueue(action) {
|
|
72
|
-
return new Promise((resolve, reject) => {
|
|
73
|
-
super.enqueue({
|
|
74
|
-
action,
|
|
75
|
-
resolve,
|
|
76
|
-
reject,
|
|
77
|
-
count: count++
|
|
78
|
-
}); // logger.log('queued', count);
|
|
79
|
-
|
|
80
|
-
this.dequeue();
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
async dequeue() {
|
|
85
|
-
if (_classPrivateFieldGet(this, _pendingPromise)) return false;
|
|
86
|
-
const item = super.dequeue();
|
|
87
|
-
|
|
88
|
-
if (!item) {
|
|
89
|
-
this._cache = {};
|
|
90
|
-
return false;
|
|
91
|
-
} // logger.log('dequeued', item.count);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
try {
|
|
95
|
-
_classPrivateFieldSet(this, _pendingPromise, true);
|
|
96
|
-
|
|
97
|
-
const payload = await item.action(this);
|
|
98
|
-
|
|
99
|
-
_classPrivateFieldSet(this, _pendingPromise, false);
|
|
100
|
-
|
|
101
|
-
item.resolve(payload);
|
|
102
|
-
} catch (e) {
|
|
103
|
-
_classPrivateFieldSet(this, _pendingPromise, false);
|
|
104
|
-
|
|
105
|
-
item.reject(e);
|
|
106
|
-
} finally {
|
|
107
|
-
this.dequeue();
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return true;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
var _default = AutoQueue;
|
|
116
|
-
exports.default = _default;
|
|
117
|
-
//# sourceMappingURL=queue.js.map
|