@chem-po/firebase-native 0.0.38 → 0.0.40
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/lib/commonjs/adapter/auth.js +10 -3
- package/lib/commonjs/adapter/auth.js.map +1 -1
- package/lib/commonjs/components/FirebaseSignIn.js +20 -14
- package/lib/commonjs/components/FirebaseSignIn.js.map +1 -1
- package/lib/commonjs/components/PhoneVerify.js +45 -33
- package/lib/commonjs/components/PhoneVerify.js.map +1 -1
- package/lib/commonjs/components/TwoFactorAuthModal.js +72 -15
- package/lib/commonjs/components/TwoFactorAuthModal.js.map +1 -1
- package/lib/commonjs/hooks/usePhoneVerify.js +13 -5
- package/lib/commonjs/hooks/usePhoneVerify.js.map +1 -1
- package/lib/commonjs/utils/validation.js +4 -0
- package/lib/commonjs/utils/validation.js.map +1 -1
- package/lib/module/adapter/auth.js +10 -3
- package/lib/module/adapter/auth.js.map +1 -1
- package/lib/module/components/FirebaseSignIn.js +21 -15
- package/lib/module/components/FirebaseSignIn.js.map +1 -1
- package/lib/module/components/PhoneVerify.js +47 -35
- package/lib/module/components/PhoneVerify.js.map +1 -1
- package/lib/module/components/TwoFactorAuthModal.js +71 -15
- package/lib/module/components/TwoFactorAuthModal.js.map +1 -1
- package/lib/module/hooks/usePhoneVerify.js +13 -5
- package/lib/module/hooks/usePhoneVerify.js.map +1 -1
- package/lib/module/utils/validation.js +4 -0
- package/lib/module/utils/validation.js.map +1 -1
- package/lib/typescript/adapter/auth.d.ts.map +1 -1
- package/lib/typescript/components/FirebaseSignIn.d.ts.map +1 -1
- package/lib/typescript/components/PhoneVerify.d.ts.map +1 -1
- package/lib/typescript/components/TwoFactorAuthModal.d.ts +1 -0
- package/lib/typescript/components/TwoFactorAuthModal.d.ts.map +1 -1
- package/lib/typescript/hooks/usePhoneVerify.d.ts +3 -1
- package/lib/typescript/hooks/usePhoneVerify.d.ts.map +1 -1
- package/lib/typescript/utils/validation.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/adapter/auth.ts +98 -83
- package/src/components/FirebaseSignIn.tsx +21 -14
- package/src/components/PhoneVerify.tsx +46 -33
- package/src/components/TwoFactorAuthModal.tsx +87 -23
- package/src/hooks/usePhoneVerify.ts +15 -4
- package/src/utils/validation.ts +7 -0
|
@@ -1,33 +1,60 @@
|
|
|
1
|
-
import { useAuth, useBackgroundColor } from '@chem-po/react';
|
|
1
|
+
import { useAuth, useBackgroundColor, useBorderColor, useIconColor } from '@chem-po/react';
|
|
2
2
|
import { Txt } from '@chem-po/react-native';
|
|
3
|
+
import { useFont } from '@chem-po/react-native/src/hooks/useFont';
|
|
4
|
+
import { Ionicons } from '@expo/vector-icons';
|
|
3
5
|
import React, { useState } from 'react';
|
|
4
6
|
import { ScrollView, StyleSheet, TouchableOpacity, View } from 'react-native';
|
|
5
7
|
import { Modal, Portal } from 'react-native-paper';
|
|
6
8
|
import { useBackend } from '../hooks/backend';
|
|
7
9
|
import { AuthenticatorVerify } from './AuthenticatorVerify';
|
|
8
10
|
import { PhoneVerify } from './PhoneVerify';
|
|
11
|
+
const FactorView = ({
|
|
12
|
+
factor,
|
|
13
|
+
buttonBackgroundColor,
|
|
14
|
+
iconColor,
|
|
15
|
+
borderColor,
|
|
16
|
+
onPress
|
|
17
|
+
}) => {
|
|
18
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
19
|
+
style: [styles.factorButton, {
|
|
20
|
+
backgroundColor: buttonBackgroundColor,
|
|
21
|
+
borderColor
|
|
22
|
+
}],
|
|
23
|
+
onPress: onPress
|
|
24
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
25
|
+
style: styles.factorContent
|
|
26
|
+
}, /*#__PURE__*/React.createElement(Ionicons, {
|
|
27
|
+
name: factor.type === 'phone' ? 'phone-portrait' : 'qr-code',
|
|
28
|
+
size: 20,
|
|
29
|
+
color: iconColor
|
|
30
|
+
}), /*#__PURE__*/React.createElement(Txt, {
|
|
31
|
+
style: styles.factorHeaderText
|
|
32
|
+
}, factor.type === 'phone' ? `Phone: ${factor.phoneNumber}` : 'Authenticator App'), factor.displayName ? /*#__PURE__*/React.createElement(Txt, {
|
|
33
|
+
style: styles.factorDetailsText
|
|
34
|
+
}, factor.displayName) : null));
|
|
35
|
+
};
|
|
9
36
|
const TwoFactorSelect = ({
|
|
10
37
|
factors,
|
|
11
38
|
onSelect
|
|
12
39
|
}) => {
|
|
13
40
|
const buttonBackgroundColor = useBackgroundColor(100);
|
|
41
|
+
const borderColor = useBorderColor();
|
|
42
|
+
const iconColor = useIconColor();
|
|
43
|
+
const textFont = useFont('body', 'md');
|
|
14
44
|
return /*#__PURE__*/React.createElement(View, {
|
|
15
45
|
style: styles.selectContainer
|
|
16
46
|
}, /*#__PURE__*/React.createElement(Txt, {
|
|
17
|
-
style: styles.selectTitle
|
|
47
|
+
style: [styles.selectTitle, textFont]
|
|
18
48
|
}, "Select an option to verify with:"), /*#__PURE__*/React.createElement(View, {
|
|
19
49
|
style: styles.factorsList
|
|
20
|
-
}, factors.map(factor => /*#__PURE__*/React.createElement(
|
|
21
|
-
key: factor.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}, factor.type === 'phone' ? `Phone: ${factor.phoneNumber}` : 'Authenticator App'), factor.displayName ? /*#__PURE__*/React.createElement(Txt, {
|
|
29
|
-
style: styles.factorDetailsText
|
|
30
|
-
}, factor.displayName) : null))));
|
|
50
|
+
}, factors.map(factor => /*#__PURE__*/React.createElement(FactorView, {
|
|
51
|
+
key: `${factor.type}-${factor.enrollmentTime}`,
|
|
52
|
+
factor: factor,
|
|
53
|
+
buttonBackgroundColor: buttonBackgroundColor,
|
|
54
|
+
onPress: () => onSelect(factor),
|
|
55
|
+
iconColor: iconColor,
|
|
56
|
+
borderColor: borderColor
|
|
57
|
+
}))));
|
|
31
58
|
};
|
|
32
59
|
const TwoFactorVerify = ({
|
|
33
60
|
factorInfo
|
|
@@ -72,6 +99,29 @@ export const TwoFactorAuthModal = () => {
|
|
|
72
99
|
contentContainerStyle: styles.scrollContent
|
|
73
100
|
}, /*#__PURE__*/React.createElement(TwoFactorContent, null)))));
|
|
74
101
|
};
|
|
102
|
+
const testFactor = {
|
|
103
|
+
uid: 'test',
|
|
104
|
+
type: 'phone',
|
|
105
|
+
phoneNumber: '1234567890',
|
|
106
|
+
displayName: 'Test Phone',
|
|
107
|
+
enrollmentTime: '2021-01-01'
|
|
108
|
+
};
|
|
109
|
+
export const TestTwoFactorVerifyModal = () => {
|
|
110
|
+
const backgroundColor = useBackgroundColor(150);
|
|
111
|
+
return /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(Modal, {
|
|
112
|
+
visible: true,
|
|
113
|
+
onDismiss: () => {},
|
|
114
|
+
style: styles.modal
|
|
115
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
116
|
+
style: [styles.modalContent, {
|
|
117
|
+
backgroundColor
|
|
118
|
+
}]
|
|
119
|
+
}, /*#__PURE__*/React.createElement(ScrollView, {
|
|
120
|
+
contentContainerStyle: styles.scrollContent
|
|
121
|
+
}, /*#__PURE__*/React.createElement(TwoFactorVerify, {
|
|
122
|
+
factorInfo: testFactor
|
|
123
|
+
})))));
|
|
124
|
+
};
|
|
75
125
|
const styles = StyleSheet.create({
|
|
76
126
|
modal: {
|
|
77
127
|
margin: 0
|
|
@@ -89,18 +139,24 @@ const styles = StyleSheet.create({
|
|
|
89
139
|
},
|
|
90
140
|
selectTitle: {
|
|
91
141
|
fontSize: 16,
|
|
92
|
-
marginBottom:
|
|
142
|
+
marginBottom: 8,
|
|
143
|
+
paddingHorizontal: 4
|
|
93
144
|
},
|
|
94
145
|
factorsList: {
|
|
95
146
|
gap: 8
|
|
96
147
|
},
|
|
148
|
+
factorContent: {
|
|
149
|
+
flexDirection: 'row',
|
|
150
|
+
alignItems: 'center',
|
|
151
|
+
gap: 8
|
|
152
|
+
},
|
|
97
153
|
factorButton: {
|
|
98
154
|
padding: 16,
|
|
99
155
|
borderRadius: 8,
|
|
100
156
|
borderWidth: 1
|
|
101
157
|
},
|
|
102
158
|
factorHeaderText: {
|
|
103
|
-
fontSize:
|
|
159
|
+
fontSize: 16,
|
|
104
160
|
fontWeight: 'bold',
|
|
105
161
|
opacity: 0.8
|
|
106
162
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useAuth","useBackgroundColor","Txt","React","useState","ScrollView","StyleSheet","TouchableOpacity","View","Modal","Portal","useBackend","AuthenticatorVerify","PhoneVerify","
|
|
1
|
+
{"version":3,"names":["useAuth","useBackgroundColor","useBorderColor","useIconColor","Txt","useFont","Ionicons","React","useState","ScrollView","StyleSheet","TouchableOpacity","View","Modal","Portal","useBackend","AuthenticatorVerify","PhoneVerify","FactorView","factor","buttonBackgroundColor","iconColor","borderColor","onPress","createElement","style","styles","factorButton","backgroundColor","factorContent","name","type","size","color","factorHeaderText","phoneNumber","displayName","factorDetailsText","TwoFactorSelect","factors","onSelect","textFont","selectContainer","selectTitle","factorsList","map","key","enrollmentTime","TwoFactorVerify","factorInfo","TwoFactorContent","selectedEnrollmentFactor","setSelectedEnrollmentFactor","enrolledFactors","s","enrollmentFactors","length","TwoFactorAuthModal","multiFactorVerification","twoFactorVerification","auth","visible","onDismiss","logout","modal","modalContent","contentContainerStyle","scrollContent","testFactor","uid","TestTwoFactorVerifyModal","create","margin","borderRadius","maxHeight","padding","width","fontSize","marginBottom","paddingHorizontal","gap","flexDirection","alignItems","borderWidth","fontWeight","opacity"],"sourceRoot":"..\\..\\..\\src","sources":["components/TwoFactorAuthModal.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@ import { useCallback, useEffect, useRef, useState } from 'react';
|
|
|
3
3
|
import { useBackend } from './backend';
|
|
4
4
|
export const usePhoneVerify = (factor, automaticallySendSmsCode) => {
|
|
5
5
|
const [code, setCode] = useState('');
|
|
6
|
+
const [sendingCode, setSendingCode] = useState(false);
|
|
6
7
|
const [verifying, setVerifying] = useState(false);
|
|
7
8
|
const [error, setError] = useState('');
|
|
8
9
|
const {
|
|
@@ -18,15 +19,20 @@ export const usePhoneVerify = (factor, automaticallySendSmsCode) => {
|
|
|
18
19
|
const initSendCode = useRef(!!automaticallySendSmsCode);
|
|
19
20
|
const {
|
|
20
21
|
showSuccess,
|
|
21
|
-
showError
|
|
22
|
-
showInfo
|
|
22
|
+
showError
|
|
23
23
|
} = useToast();
|
|
24
24
|
const sendCode = useCallback(async () => {
|
|
25
25
|
if (!enrollmentFactors) {
|
|
26
26
|
showError('Error - No session found');
|
|
27
27
|
return;
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
setSendingCode(true);
|
|
30
|
+
return auth.sendMultiFactorCode(factor, enrollmentFactors.multiFactorResolver).then(() => {
|
|
31
|
+
setSendingCode(false);
|
|
32
|
+
}).catch(e => {
|
|
33
|
+
setSendingCode(false);
|
|
34
|
+
setError(e.message || 'An error occurred');
|
|
35
|
+
});
|
|
30
36
|
}, [auth, factor, twoFactorVerification, showError]);
|
|
31
37
|
const initSendCodeFunc = useRef(sendCode);
|
|
32
38
|
useEffect(() => {
|
|
@@ -34,7 +40,7 @@ export const usePhoneVerify = (factor, automaticallySendSmsCode) => {
|
|
|
34
40
|
initSendCodeFunc.current();
|
|
35
41
|
}
|
|
36
42
|
}, []);
|
|
37
|
-
const handleVerify = useCallback(() => {
|
|
43
|
+
const handleVerify = useCallback(async () => {
|
|
38
44
|
setVerifying(true);
|
|
39
45
|
setError('');
|
|
40
46
|
if (!twoFactorVerification) {
|
|
@@ -56,7 +62,7 @@ export const usePhoneVerify = (factor, automaticallySendSmsCode) => {
|
|
|
56
62
|
showError('Error - Two factor verification is not supported');
|
|
57
63
|
return;
|
|
58
64
|
}
|
|
59
|
-
verify(twoFactorVerification, code).then(() => {
|
|
65
|
+
return verify(twoFactorVerification, code).then(() => {
|
|
60
66
|
setVerifying(false);
|
|
61
67
|
setCode('');
|
|
62
68
|
showSuccess('Verification successful');
|
|
@@ -68,7 +74,9 @@ export const usePhoneVerify = (factor, automaticallySendSmsCode) => {
|
|
|
68
74
|
return {
|
|
69
75
|
code,
|
|
70
76
|
setCode,
|
|
77
|
+
sendCode,
|
|
71
78
|
verifying,
|
|
79
|
+
sendingCode,
|
|
72
80
|
error,
|
|
73
81
|
handleVerify
|
|
74
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useAuth","useToast","useCallback","useEffect","useRef","useState","useBackend","usePhoneVerify","factor","automaticallySendSmsCode","code","setCode","verifying","setVerifying","error","setError","auth","multiFactorVerification","twoFactorVerification","enrollmentFactors","initSendCode","showSuccess","showError","
|
|
1
|
+
{"version":3,"names":["useAuth","useToast","useCallback","useEffect","useRef","useState","useBackend","usePhoneVerify","factor","automaticallySendSmsCode","code","setCode","sendingCode","setSendingCode","verifying","setVerifying","error","setError","auth","multiFactorVerification","twoFactorVerification","enrollmentFactors","initSendCode","showSuccess","showError","sendCode","sendMultiFactorCode","multiFactorResolver","then","catch","e","message","initSendCodeFunc","current","handleVerify","resolver","verificationId","verify","verifyMultiFactor"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/usePhoneVerify.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
1
2
|
/**
|
|
2
3
|
* Validates Firebase authentication configuration to help identify common setup issues
|
|
3
4
|
*/
|
|
@@ -14,6 +15,9 @@ export const validateAuthConfiguration = providers => {
|
|
|
14
15
|
} else if (!googleProvider.webClientId.includes('.apps.googleusercontent.com')) {
|
|
15
16
|
warnings.push('Google webClientId format looks incorrect. Expected format: "xxx.apps.googleusercontent.com"');
|
|
16
17
|
}
|
|
18
|
+
if (Platform.OS === 'ios' && !googleProvider.iosClientId) {
|
|
19
|
+
errors.push('Google provider is missing iosClientId. ' + 'Get this from Firebase Console > Authentication > Sign-in method > Google > iOS SDK configuration');
|
|
20
|
+
}
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
// Check environment
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["validateAuthConfiguration","providers","_process$env","errors","warnings","googleProvider","find","p","name","webClientId","push","includes","process","isExpo","env","EXPO_PUBLIC_ENVIRONMENT","undefined","isValid","length","logValidationResults","result","packageName","console","error","forEach","warn","warning","log","validateAndLogAuthConfig"],"sourceRoot":"..\\..\\..\\src","sources":["utils/validation.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["Platform","validateAuthConfiguration","providers","_process$env","errors","warnings","googleProvider","find","p","name","webClientId","push","includes","OS","iosClientId","process","isExpo","env","EXPO_PUBLIC_ENVIRONMENT","undefined","isValid","length","logValidationResults","result","packageName","console","error","forEach","warn","warning","log","validateAndLogAuthConfig"],"sourceRoot":"..\\..\\..\\src","sources":["utils/validation.ts"],"mappings":"AACA,SAASA,QAAQ,QAAQ,cAAc;AAQvC;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,GAAIC,SAA6B,IAAuB;EAAA,IAAAC,YAAA;EAC5F,MAAMC,MAAgB,GAAG,EAAE;EAC3B,MAAMC,QAAkB,GAAG,EAAE;;EAE7B;EACA,MAAMC,cAAc,GAAGJ,SAAS,CAACK,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,IAAI,KAAK,QAAQ,CAAmC;EAEjG,IAAIH,cAAc,EAAE;IAClB,IAAI,CAACA,cAAc,CAACI,WAAW,EAAE;MAC/BN,MAAM,CAACO,IAAI,CACT,0CAA0C,GACxC,mGACJ,CAAC;IACH,CAAC,MAAM,IAAI,CAACL,cAAc,CAACI,WAAW,CAACE,QAAQ,CAAC,6BAA6B,CAAC,EAAE;MAC9EP,QAAQ,CAACM,IAAI,CACX,8FACF,CAAC;IACH;IACA,IAAIX,QAAQ,CAACa,EAAE,KAAK,KAAK,IAAI,CAACP,cAAc,CAACQ,WAAW,EAAE;MACxDV,MAAM,CAACO,IAAI,CACT,0CAA0C,GACxC,mGACJ,CAAC;IACH;EACF;;EAEA;EACA,IAAI,OAAOI,OAAO,KAAK,WAAW,EAAE;IAClCV,QAAQ,CAACM,IAAI,CAAC,+EAA+E,CAAC;EAChG;;EAEA;EACA,MAAMK,MAAM,GACV,OAAOD,OAAO,KAAK,WAAW,IAAI,EAAAZ,YAAA,GAAAY,OAAO,CAACE,GAAG,cAAAd,YAAA,uBAAXA,YAAA,CAAae,uBAAuB,MAAKC,SAAS;EACtF,IAAI,CAACH,MAAM,EAAE;IACXX,QAAQ,CAACM,IAAI,CACX,oDAAoD,GAClD,qDAAqD,GACrD,2DACJ,CAAC;EACH;EAEA,OAAO;IACLS,OAAO,EAAEhB,MAAM,CAACiB,MAAM,KAAK,CAAC;IAC5BjB,MAAM;IACNC;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMiB,oBAAoB,GAAGA,CAClCC,MAAwB,EACxBC,WAAW,GAAG,0BAA0B,KACrC;EACH,IAAID,MAAM,CAACnB,MAAM,CAACiB,MAAM,GAAG,CAAC,EAAE;IAC5BI,OAAO,CAACC,KAAK,CAAC,IAAIF,WAAW,+BAA+B,CAAC;IAC7DD,MAAM,CAACnB,MAAM,CAACuB,OAAO,CAACD,KAAK,IAAID,OAAO,CAACC,KAAK,CAAC,OAAOA,KAAK,EAAE,CAAC,CAAC;EAC/D;EAEA,IAAIH,MAAM,CAAClB,QAAQ,CAACgB,MAAM,GAAG,CAAC,EAAE;IAC9BI,OAAO,CAACG,IAAI,CAAC,IAAIJ,WAAW,2BAA2B,CAAC;IACxDD,MAAM,CAAClB,QAAQ,CAACsB,OAAO,CAACE,OAAO,IAAIJ,OAAO,CAACG,IAAI,CAAC,SAASC,OAAO,EAAE,CAAC,CAAC;EACtE;EAEA,IAAIN,MAAM,CAACH,OAAO,IAAIG,MAAM,CAAClB,QAAQ,CAACgB,MAAM,KAAK,CAAC,EAAE;IAClDI,OAAO,CAACK,GAAG,CAAC,IAAIN,WAAW,qCAAqC,CAAC;EACnE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMO,wBAAwB,GAAI7B,SAA6B,IAAK;EACzE,MAAMqB,MAAM,GAAGtB,yBAAyB,CAACC,SAAS,CAAC;EACnDoB,oBAAoB,CAACC,MAAM,CAAC;EAC5B,OAAOA,MAAM;AACf,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/adapter/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAQjB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/adapter/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAQjB,MAAM,eAAe,CAAA;AAoBtB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AA8c1C,eAAO,MAAM,sBAAsB,GACjC,MAAM,IAAI,EACV,mBAAmB,OAAO,KACzB,WAAW,CAAC,gBAAgB,EAAE,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA4DzE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FirebaseSignIn.d.ts","sourceRoot":"","sources":["../../../src/components/FirebaseSignIn.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAA0B,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"FirebaseSignIn.d.ts","sourceRoot":"","sources":["../../../src/components/FirebaseSignIn.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAA0B,MAAM,eAAe,CAAA;AAK7F,OAAO,KAAgC,MAAM,OAAO,CAAA;AA6HpD,eAAO,MAAM,cAAc,GAAI,oCAG5B;IACD,cAAc,CAAC,EAAE,kBAAkB,CAAA;IACnC,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAClC,sBAOA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhoneVerify.d.ts","sourceRoot":"","sources":["../../../src/components/PhoneVerify.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"PhoneVerify.d.ts","sourceRoot":"","sources":["../../../src/components/PhoneVerify.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAGxE,OAAO,KAAkB,MAAM,OAAO,CAAA;AAKtC,eAAO,MAAM,WAAW,GAAI,YAAY;IAAE,MAAM,EAAE,qBAAqB,CAAA;CAAE,sBA4DxE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TwoFactorAuthModal.d.ts","sourceRoot":"","sources":["../../../src/components/TwoFactorAuthModal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TwoFactorAuthModal.d.ts","sourceRoot":"","sources":["../../../src/components/TwoFactorAuthModal.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAuGvC,eAAO,MAAM,kBAAkB,gCAwB9B,CAAA;AASD,eAAO,MAAM,wBAAwB,yBAapC,CAAA"}
|
|
@@ -2,8 +2,10 @@ import { PhoneEnrollmentFactor } from '@chem-po/core';
|
|
|
2
2
|
export declare const usePhoneVerify: (factor: PhoneEnrollmentFactor, automaticallySendSmsCode: boolean) => {
|
|
3
3
|
code: string;
|
|
4
4
|
setCode: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
5
|
+
sendCode: () => Promise<void>;
|
|
5
6
|
verifying: boolean;
|
|
7
|
+
sendingCode: boolean;
|
|
6
8
|
error: string;
|
|
7
|
-
handleVerify: () => void
|
|
9
|
+
handleVerify: () => Promise<void>;
|
|
8
10
|
};
|
|
9
11
|
//# sourceMappingURL=usePhoneVerify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePhoneVerify.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePhoneVerify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAKrD,eAAO,MAAM,cAAc,GAAI,QAAQ,qBAAqB,EAAE,0BAA0B,OAAO
|
|
1
|
+
{"version":3,"file":"usePhoneVerify.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePhoneVerify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAKrD,eAAO,MAAM,cAAc,GAAI,QAAQ,qBAAqB,EAAE,0BAA0B,OAAO;;;;;;;;CAiF9F,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,eAAe,CAAA;AAGpE,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAAI,WAAW,gBAAgB,EAAE,KAAG,gBA+CzE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,gBAAgB,EACxB,oBAAwC,SAezC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GAAI,WAAW,gBAAgB,EAAE,qBAIrE,CAAA"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@chem-po/firebase-native",
|
|
3
3
|
"author": "Elan Canfield",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.40",
|
|
6
6
|
"main": "lib/commonjs/index.js",
|
|
7
7
|
"types": "lib/typescript/index.d.ts",
|
|
8
8
|
"source": "src/index.ts",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"react-native-paper": "^5.14.3",
|
|
45
45
|
"react-native-svg": "15.11.2",
|
|
46
46
|
"zustand": "^4.3.3",
|
|
47
|
-
"@chem-po/
|
|
48
|
-
"@chem-po/
|
|
49
|
-
"@chem-po/react": "0.0.
|
|
47
|
+
"@chem-po/core": "0.0.40",
|
|
48
|
+
"@chem-po/react-native": "0.0.40",
|
|
49
|
+
"@chem-po/react": "0.0.40"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@babel/core": "^7.26.0",
|