@chem-po/firebase-native 0.0.16 → 0.0.18
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/README.md +215 -0
- package/lib/commonjs/adapter/auth.js +431 -0
- package/lib/commonjs/adapter/auth.js.map +1 -0
- package/lib/commonjs/adapter/db.js +103 -0
- package/lib/commonjs/adapter/db.js.map +1 -0
- package/lib/commonjs/adapter/index.js +16 -0
- package/lib/commonjs/adapter/index.js.map +1 -0
- package/lib/commonjs/adapter/storage.js +52 -0
- package/lib/commonjs/adapter/storage.js.map +1 -0
- package/lib/commonjs/auth/functions.js +11 -0
- package/lib/commonjs/auth/functions.js.map +1 -0
- package/lib/commonjs/auth/index.js +17 -0
- package/lib/commonjs/auth/index.js.map +1 -0
- package/lib/commonjs/components/AuthenticatorVerify.js +90 -0
- package/lib/commonjs/components/AuthenticatorVerify.js.map +1 -0
- package/lib/commonjs/components/FirebaseSignIn.js +196 -0
- package/lib/commonjs/components/FirebaseSignIn.js.map +1 -0
- package/lib/commonjs/components/PhoneVerify.js +123 -0
- package/lib/commonjs/components/PhoneVerify.js.map +1 -0
- package/lib/commonjs/components/TwoFactorAuthModal.js +118 -0
- package/lib/commonjs/components/TwoFactorAuthModal.js.map +1 -0
- package/lib/commonjs/components/index.js +28 -0
- package/lib/commonjs/components/index.js.map +1 -0
- package/lib/commonjs/contexts/FirebaseContext.js +48 -0
- package/lib/commonjs/contexts/FirebaseContext.js.map +1 -0
- package/lib/commonjs/contexts/index.js +17 -0
- package/lib/commonjs/contexts/index.js.map +1 -0
- package/lib/commonjs/db/index.js +17 -0
- package/lib/commonjs/db/index.js.map +1 -0
- package/lib/commonjs/db/utils.js +120 -0
- package/lib/commonjs/db/utils.js.map +1 -0
- package/lib/commonjs/hooks/backend.js +12 -0
- package/lib/commonjs/hooks/backend.js.map +1 -0
- package/lib/commonjs/hooks/index.js +17 -0
- package/lib/commonjs/hooks/index.js.map +1 -0
- package/lib/commonjs/hooks/useAuthenticatorVerify.js +52 -0
- package/lib/commonjs/hooks/useAuthenticatorVerify.js.map +1 -0
- package/lib/commonjs/hooks/usePhoneVerify.js +83 -0
- package/lib/commonjs/hooks/usePhoneVerify.js.map +1 -0
- package/lib/commonjs/icons/Google.js +29 -0
- package/lib/commonjs/icons/Google.js.map +1 -0
- package/lib/commonjs/index.js +105 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/storage/index.js +17 -0
- package/lib/commonjs/storage/index.js.map +1 -0
- package/lib/commonjs/storage/utils.js +37 -0
- package/lib/commonjs/storage/utils.js.map +1 -0
- package/lib/commonjs/types/adapter.js +6 -0
- package/lib/commonjs/types/adapter.js.map +1 -0
- package/lib/commonjs/types/auth.js +6 -0
- package/lib/commonjs/types/auth.js.map +1 -0
- package/lib/commonjs/types/db.js +6 -0
- package/lib/commonjs/types/db.js.map +1 -0
- package/lib/commonjs/types/functions.js +6 -0
- package/lib/commonjs/types/functions.js.map +1 -0
- package/lib/commonjs/types/index.js +6 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/types/storage.js +6 -0
- package/lib/commonjs/types/storage.js.map +1 -0
- package/lib/commonjs/utils/validation.js +71 -0
- package/lib/commonjs/utils/validation.js.map +1 -0
- package/lib/module/adapter/auth.js +424 -0
- package/lib/module/adapter/auth.js.map +1 -0
- package/lib/module/adapter/db.js +96 -0
- package/lib/module/adapter/db.js.map +1 -0
- package/lib/module/adapter/index.js +9 -0
- package/lib/module/adapter/index.js.map +1 -0
- package/lib/module/adapter/storage.js +45 -0
- package/lib/module/adapter/storage.js.map +1 -0
- package/lib/module/auth/functions.js +3 -0
- package/lib/module/auth/functions.js.map +1 -0
- package/lib/module/auth/index.js +2 -0
- package/lib/module/auth/index.js.map +1 -0
- package/lib/module/components/AuthenticatorVerify.js +82 -0
- package/lib/module/components/AuthenticatorVerify.js.map +1 -0
- package/lib/module/components/FirebaseSignIn.js +187 -0
- package/lib/module/components/FirebaseSignIn.js.map +1 -0
- package/lib/module/components/PhoneVerify.js +116 -0
- package/lib/module/components/PhoneVerify.js.map +1 -0
- package/lib/module/components/TwoFactorAuthModal.js +110 -0
- package/lib/module/components/TwoFactorAuthModal.js.map +1 -0
- package/lib/module/components/index.js +3 -0
- package/lib/module/components/index.js.map +1 -0
- package/lib/module/contexts/FirebaseContext.js +39 -0
- package/lib/module/contexts/FirebaseContext.js.map +1 -0
- package/lib/module/contexts/index.js +2 -0
- package/lib/module/contexts/index.js.map +1 -0
- package/lib/module/db/index.js +2 -0
- package/lib/module/db/index.js.map +1 -0
- package/lib/module/db/utils.js +111 -0
- package/lib/module/db/utils.js.map +1 -0
- package/lib/module/hooks/backend.js +5 -0
- package/lib/module/hooks/backend.js.map +1 -0
- package/lib/module/hooks/index.js +2 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useAuthenticatorVerify.js +45 -0
- package/lib/module/hooks/useAuthenticatorVerify.js.map +1 -0
- package/lib/module/hooks/usePhoneVerify.js +76 -0
- package/lib/module/hooks/usePhoneVerify.js.map +1 -0
- package/lib/module/icons/Google.js +22 -0
- package/lib/module/icons/Google.js.map +1 -0
- package/lib/module/index.js +10 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/storage/index.js +2 -0
- package/lib/module/storage/index.js.map +1 -0
- package/lib/module/storage/utils.js +30 -0
- package/lib/module/storage/utils.js.map +1 -0
- package/lib/module/types/adapter.js +2 -0
- package/lib/module/types/adapter.js.map +1 -0
- package/lib/module/types/auth.js +2 -0
- package/lib/module/types/auth.js.map +1 -0
- package/lib/module/types/db.js +2 -0
- package/lib/module/types/db.js.map +1 -0
- package/lib/module/types/functions.js +2 -0
- package/lib/module/types/functions.js.map +1 -0
- package/lib/module/types/index.js +2 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/types/storage.js +2 -0
- package/lib/module/types/storage.js.map +1 -0
- package/lib/module/utils/validation.js +62 -0
- package/lib/module/utils/validation.js.map +1 -0
- package/lib/typescript/adapter/auth.d.ts +7 -0
- package/lib/typescript/adapter/auth.d.ts.map +1 -0
- package/lib/typescript/adapter/db.d.ts +5 -0
- package/lib/typescript/adapter/db.d.ts.map +1 -0
- package/lib/typescript/adapter/index.d.ts +9 -0
- package/lib/typescript/adapter/index.d.ts.map +1 -0
- package/lib/typescript/adapter/storage.d.ts +4 -0
- package/lib/typescript/adapter/storage.d.ts.map +1 -0
- package/lib/typescript/auth/functions.d.ts +4 -0
- package/lib/typescript/auth/functions.d.ts.map +1 -0
- package/lib/typescript/auth/index.d.ts +2 -0
- package/lib/typescript/auth/index.d.ts.map +1 -0
- package/lib/typescript/components/AuthenticatorVerify.d.ts +3 -0
- package/lib/typescript/components/AuthenticatorVerify.d.ts.map +1 -0
- package/lib/typescript/components/FirebaseSignIn.d.ts +6 -0
- package/lib/typescript/components/FirebaseSignIn.d.ts.map +1 -0
- package/lib/typescript/components/PhoneVerify.d.ts +6 -0
- package/lib/typescript/components/PhoneVerify.d.ts.map +1 -0
- package/lib/typescript/components/TwoFactorAuthModal.d.ts +3 -0
- package/lib/typescript/components/TwoFactorAuthModal.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +3 -0
- package/lib/typescript/components/index.d.ts.map +1 -0
- package/lib/typescript/contexts/FirebaseContext.d.ts +9 -0
- package/lib/typescript/contexts/FirebaseContext.d.ts.map +1 -0
- package/lib/typescript/contexts/index.d.ts +2 -0
- package/lib/typescript/contexts/index.d.ts.map +1 -0
- package/lib/typescript/db/index.d.ts +2 -0
- package/lib/typescript/db/index.d.ts.map +1 -0
- package/lib/typescript/db/utils.d.ts +6 -0
- package/lib/typescript/db/utils.d.ts.map +1 -0
- package/lib/typescript/hooks/backend.d.ts +2 -0
- package/lib/typescript/hooks/backend.d.ts.map +1 -0
- package/lib/typescript/hooks/index.d.ts +2 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -0
- package/lib/typescript/hooks/useAuthenticatorVerify.d.ts +8 -0
- package/lib/typescript/hooks/useAuthenticatorVerify.d.ts.map +1 -0
- package/lib/typescript/hooks/usePhoneVerify.d.ts +9 -0
- package/lib/typescript/hooks/usePhoneVerify.d.ts.map +1 -0
- package/lib/typescript/icons/Google.d.ts +5 -0
- package/lib/typescript/icons/Google.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +10 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/storage/index.d.ts +2 -0
- package/lib/typescript/storage/index.d.ts.map +1 -0
- package/lib/typescript/storage/utils.d.ts +4 -0
- package/lib/typescript/storage/utils.d.ts.map +1 -0
- package/lib/typescript/types/adapter.d.ts +6 -0
- package/lib/typescript/types/adapter.d.ts.map +1 -0
- package/lib/typescript/types/auth.d.ts +12 -0
- package/lib/typescript/types/auth.d.ts.map +1 -0
- package/lib/typescript/types/db.d.ts +8 -0
- package/lib/typescript/types/db.d.ts.map +1 -0
- package/lib/typescript/types/functions.d.ts +3 -0
- package/lib/typescript/types/functions.d.ts.map +1 -0
- package/lib/typescript/types/index.d.ts +24 -0
- package/lib/typescript/types/index.d.ts.map +1 -0
- package/lib/typescript/types/storage.d.ts +3 -0
- package/lib/typescript/types/storage.d.ts.map +1 -0
- package/lib/typescript/utils/validation.d.ts +21 -0
- package/lib/typescript/utils/validation.d.ts.map +1 -0
- package/package.json +29 -12
- package/src/adapter/auth.ts +474 -0
- package/src/adapter/db.ts +146 -0
- package/src/adapter/index.ts +30 -0
- package/src/adapter/storage.ts +58 -0
- package/src/auth/functions.ts +7 -0
- package/src/auth/index.ts +1 -0
- package/src/components/AuthenticatorVerify.tsx +75 -0
- package/src/components/FirebaseSignIn.tsx +187 -0
- package/src/components/PhoneVerify.tsx +102 -0
- package/src/components/TwoFactorAuthModal.tsx +133 -0
- package/src/components/index.ts +2 -0
- package/src/contexts/FirebaseContext.tsx +54 -0
- package/src/contexts/index.ts +1 -0
- package/src/db/index.ts +1 -0
- package/src/db/utils.ts +142 -0
- package/src/hooks/backend.ts +4 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useAuthenticatorVerify.ts +45 -0
- package/src/hooks/usePhoneVerify.ts +76 -0
- package/src/icons/Google.tsx +24 -0
- package/src/index.ts +9 -0
- package/src/storage/index.ts +1 -0
- package/src/storage/utils.ts +29 -0
- package/src/types/adapter.ts +13 -0
- package/src/types/auth.ts +13 -0
- package/src/types/db.ts +10 -0
- package/src/types/functions.ts +3 -0
- package/src/types/index.ts +26 -0
- package/src/types/storage.ts +3 -0
- package/src/utils/validation.ts +85 -0
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
var _process$env;
|
|
2
|
+
import { getIdTokenResult, getMultiFactorResolver, GoogleAuthProvider, onAuthStateChanged, PhoneAuthProvider, PhoneMultiFactorGenerator, sendPasswordResetEmail, signInWithCredential, signInWithCustomToken, signInWithEmailAndPassword, signOut } from '@react-native-firebase/auth';
|
|
3
|
+
import { GoogleSignin } from '@react-native-google-signin/google-signin';
|
|
4
|
+
const isDebug = typeof process !== 'undefined' && ((_process$env = process.env) === null || _process$env === void 0 ? void 0 : _process$env.EXPO_PUBLIC_DEBUG) === 'true' || false;
|
|
5
|
+
const debugLog = (message, data) => {
|
|
6
|
+
if (isDebug) {
|
|
7
|
+
console.log(`[FirebaseAuth Debug] ${message}`, data || '');
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
const providerInitialized = {};
|
|
11
|
+
const getUserWithRole = async user => {
|
|
12
|
+
debugLog('Getting user with role', {
|
|
13
|
+
uid: user.uid,
|
|
14
|
+
email: user.email
|
|
15
|
+
});
|
|
16
|
+
try {
|
|
17
|
+
var _user$multiFactor, _user$multiFactor2;
|
|
18
|
+
const {
|
|
19
|
+
claims
|
|
20
|
+
} = await getIdTokenResult(user);
|
|
21
|
+
debugLog('Retrieved ID token claims', {
|
|
22
|
+
role: claims.role,
|
|
23
|
+
customClaims: Object.keys(claims)
|
|
24
|
+
});
|
|
25
|
+
const userWithRole = {
|
|
26
|
+
...user,
|
|
27
|
+
role: claims.role ?? 'user',
|
|
28
|
+
multiFactorVerified: !!((_user$multiFactor = user.multiFactor) !== null && _user$multiFactor !== void 0 && _user$multiFactor.enrolledFactors.length)
|
|
29
|
+
};
|
|
30
|
+
debugLog('User with role created', {
|
|
31
|
+
uid: userWithRole.uid,
|
|
32
|
+
role: userWithRole.role,
|
|
33
|
+
multiFactorVerified: userWithRole.multiFactorVerified,
|
|
34
|
+
enrolledFactorsCount: ((_user$multiFactor2 = user.multiFactor) === null || _user$multiFactor2 === void 0 ? void 0 : _user$multiFactor2.enrolledFactors.length) || 0
|
|
35
|
+
});
|
|
36
|
+
return userWithRole;
|
|
37
|
+
} catch (error) {
|
|
38
|
+
debugLog('Error getting user with role', error);
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const toEnrollmentFactor = hint => {
|
|
43
|
+
if (hint.factorId === PhoneMultiFactorGenerator.FACTOR_ID) {
|
|
44
|
+
return {
|
|
45
|
+
type: 'phone',
|
|
46
|
+
phoneNumber: hint.phoneNumber,
|
|
47
|
+
enrollmentTime: hint.enrollmentTime,
|
|
48
|
+
displayName: hint.displayName,
|
|
49
|
+
uid: hint.uid
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (hint.factorId === 'totp') {
|
|
53
|
+
return {
|
|
54
|
+
type: 'totp',
|
|
55
|
+
enrollmentTime: hint.enrollmentTime,
|
|
56
|
+
displayName: hint.displayName,
|
|
57
|
+
uid: hint.uid
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
throw new Error('Unsupported factor type: ' + hint.factorId);
|
|
61
|
+
};
|
|
62
|
+
const toFirebaseFactor = factor => {
|
|
63
|
+
if (factor.type === 'phone') {
|
|
64
|
+
return {
|
|
65
|
+
factorId: PhoneMultiFactorGenerator.FACTOR_ID,
|
|
66
|
+
phoneNumber: factor.phoneNumber,
|
|
67
|
+
enrollmentTime: factor.enrollmentTime,
|
|
68
|
+
uid: factor.uid,
|
|
69
|
+
displayName: factor.displayName
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (factor.type === 'totp') {
|
|
73
|
+
return {
|
|
74
|
+
factorId: 'totp',
|
|
75
|
+
enrollmentTime: factor.enrollmentTime,
|
|
76
|
+
uid: factor.uid,
|
|
77
|
+
displayName: factor.displayName
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
throw new Error(`Unsupported factor type: ${factor.factorId ?? 'Missing factor type'}`);
|
|
81
|
+
};
|
|
82
|
+
const sendMultiFactorCode = async (auth, factor, resolver) => {
|
|
83
|
+
debugLog('Sending multi-factor code', {
|
|
84
|
+
factorType: factor.type,
|
|
85
|
+
factorUid: factor.uid
|
|
86
|
+
});
|
|
87
|
+
const sessionId = resolver.session;
|
|
88
|
+
// const verificationId = await new PhoneAuthProvider(auth).verifyPhoneNumber(phoneSignInFactor, sessionId)
|
|
89
|
+
if (factor.type === 'phone') {
|
|
90
|
+
try {
|
|
91
|
+
const verificationId = await auth.verifyPhoneNumberWithMultiFactorInfo(toFirebaseFactor(factor), sessionId);
|
|
92
|
+
debugLog('Multi-factor code sent successfully', {
|
|
93
|
+
verificationId: verificationId.substring(0, 10) + '...'
|
|
94
|
+
});
|
|
95
|
+
return {
|
|
96
|
+
verificationId,
|
|
97
|
+
factor,
|
|
98
|
+
resolver
|
|
99
|
+
};
|
|
100
|
+
} catch (error) {
|
|
101
|
+
debugLog('Error sending multi-factor code', error);
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
throw new Error(`Unsupported factor type: ${factor.type ?? 'Missing factor type'}`);
|
|
106
|
+
};
|
|
107
|
+
const getEnrolledFactors = async (auth, error) => {
|
|
108
|
+
debugLog('Getting enrolled factors from error', {
|
|
109
|
+
errorCode: error === null || error === void 0 ? void 0 : error.code
|
|
110
|
+
});
|
|
111
|
+
try {
|
|
112
|
+
const resolver = getMultiFactorResolver(auth, error);
|
|
113
|
+
debugLog('Multi-factor resolver created', {
|
|
114
|
+
hintsCount: resolver.hints.length
|
|
115
|
+
});
|
|
116
|
+
if (resolver.hints.length === 0) {
|
|
117
|
+
debugLog('No enrolled factors found');
|
|
118
|
+
throw new Error('No multi-factor verification methods found, please enroll one on the website');
|
|
119
|
+
}
|
|
120
|
+
const enrollmentFactors = resolver.hints.map(toEnrollmentFactor);
|
|
121
|
+
debugLog('Enrollment factors mapped', {
|
|
122
|
+
factors: enrollmentFactors.map(f => ({
|
|
123
|
+
type: f.type,
|
|
124
|
+
uid: f.uid
|
|
125
|
+
}))
|
|
126
|
+
});
|
|
127
|
+
return {
|
|
128
|
+
enrollmentFactors,
|
|
129
|
+
multiFactorResolver: resolver
|
|
130
|
+
};
|
|
131
|
+
} catch (error) {
|
|
132
|
+
debugLog('Error getting enrolled factors', error);
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
const verifyMultiFactor = async (verification, code) => {
|
|
137
|
+
debugLog('Verifying multi-factor code', {
|
|
138
|
+
factorType: verification.factor.type,
|
|
139
|
+
codeLength: code.length
|
|
140
|
+
});
|
|
141
|
+
try {
|
|
142
|
+
var _userCredential$user;
|
|
143
|
+
const credential = await PhoneAuthProvider.credential(verification.verificationId, code);
|
|
144
|
+
debugLog('Phone credential created');
|
|
145
|
+
const assertion = PhoneMultiFactorGenerator.assertion(credential);
|
|
146
|
+
debugLog('Multi-factor assertion created');
|
|
147
|
+
const resolver = verification.resolver;
|
|
148
|
+
if (!resolver) {
|
|
149
|
+
debugLog('Multi-factor resolver not found');
|
|
150
|
+
throw new Error('Internal error signing in with two factor: resolver not found');
|
|
151
|
+
}
|
|
152
|
+
const userCredential = await resolver.resolveSignIn(assertion);
|
|
153
|
+
debugLog('Multi-factor sign-in resolved', {
|
|
154
|
+
uid: (_userCredential$user = userCredential.user) === null || _userCredential$user === void 0 ? void 0 : _userCredential$user.uid
|
|
155
|
+
});
|
|
156
|
+
const user = userCredential.user;
|
|
157
|
+
if (!user) {
|
|
158
|
+
debugLog('No user found after multi-factor resolution');
|
|
159
|
+
throw new Error('No user found');
|
|
160
|
+
}
|
|
161
|
+
const userWithRole = await getUserWithRole(user);
|
|
162
|
+
debugLog('Multi-factor verification completed successfully');
|
|
163
|
+
return {
|
|
164
|
+
user: userWithRole
|
|
165
|
+
};
|
|
166
|
+
} catch (error) {
|
|
167
|
+
debugLog('Error verifying multi-factor', error);
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
const handleSignInError = async error => {
|
|
172
|
+
debugLog('Handling sign-in error', {
|
|
173
|
+
code: error === null || error === void 0 ? void 0 : error.code,
|
|
174
|
+
message: error === null || error === void 0 ? void 0 : error.message
|
|
175
|
+
});
|
|
176
|
+
if (error.code === 'auth/multi-factor-auth-required') {
|
|
177
|
+
debugLog('Multi-factor authentication required');
|
|
178
|
+
return {
|
|
179
|
+
requestArgs: error
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
debugLog('Re-throwing sign-in error');
|
|
183
|
+
throw error;
|
|
184
|
+
};
|
|
185
|
+
const initializeProvider = async provider => {
|
|
186
|
+
debugLog('Initializing provider', {
|
|
187
|
+
name: provider.name,
|
|
188
|
+
alreadyInitialized: providerInitialized[provider.name]
|
|
189
|
+
});
|
|
190
|
+
if (providerInitialized[provider.name]) {
|
|
191
|
+
debugLog('Provider already initialized, skipping');
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
switch (provider.name) {
|
|
195
|
+
case 'google':
|
|
196
|
+
debugLog('Initializing Google provider', {
|
|
197
|
+
webClientId: !!provider.webClientId
|
|
198
|
+
});
|
|
199
|
+
if (!provider.webClientId) {
|
|
200
|
+
debugLog('Google web client ID missing');
|
|
201
|
+
throw new Error('Google web client ID is required when using Google Auth. ' + 'Get your webClientId from Firebase Console > Authentication > Sign-in method > Google > Web SDK configuration. ' + 'Then provide it in your GoogleAuthProvider: { name: "google", webClientId: "YOUR_CLIENT_ID" }');
|
|
202
|
+
}
|
|
203
|
+
try {
|
|
204
|
+
await GoogleSignin.hasPlayServices({
|
|
205
|
+
showPlayServicesUpdateDialog: true
|
|
206
|
+
});
|
|
207
|
+
debugLog('Google Play Services available');
|
|
208
|
+
GoogleSignin.configure({
|
|
209
|
+
webClientId: provider.webClientId
|
|
210
|
+
});
|
|
211
|
+
debugLog('Google Sign-In configured successfully');
|
|
212
|
+
} catch (error) {
|
|
213
|
+
debugLog('Error initializing Google provider', error);
|
|
214
|
+
if (error instanceof Error && error.message.includes('UNAVAILABLE')) {
|
|
215
|
+
throw new Error('Google Play Services is not available or needs to be updated. ' + 'Please ensure Google Play Services is installed and up to date on this device.');
|
|
216
|
+
}
|
|
217
|
+
throw error;
|
|
218
|
+
}
|
|
219
|
+
break;
|
|
220
|
+
case 'email':
|
|
221
|
+
debugLog('Email provider initialization (no special setup required)');
|
|
222
|
+
// Native SDK doesn't need special initialization
|
|
223
|
+
break;
|
|
224
|
+
default:
|
|
225
|
+
debugLog('Unsupported provider', {
|
|
226
|
+
name: provider.name
|
|
227
|
+
});
|
|
228
|
+
throw new Error(`Unsupported provider: ${provider.name}`);
|
|
229
|
+
}
|
|
230
|
+
providerInitialized[provider.name] = true;
|
|
231
|
+
debugLog('Provider initialization completed', {
|
|
232
|
+
name: provider.name
|
|
233
|
+
});
|
|
234
|
+
};
|
|
235
|
+
const handleInitialLogin = async (userCredential, twoFactorRequired) => {
|
|
236
|
+
var _userCredential$user2, _userCredential$user3;
|
|
237
|
+
debugLog('Handling initial login', {
|
|
238
|
+
uid: (_userCredential$user2 = userCredential.user) === null || _userCredential$user2 === void 0 ? void 0 : _userCredential$user2.uid,
|
|
239
|
+
twoFactorRequired,
|
|
240
|
+
enrolledFactorsCount: ((_userCredential$user3 = userCredential.user) === null || _userCredential$user3 === void 0 || (_userCredential$user3 = _userCredential$user3.multiFactor) === null || _userCredential$user3 === void 0 ? void 0 : _userCredential$user3.enrolledFactors.length) || 0
|
|
241
|
+
});
|
|
242
|
+
const user = userCredential.user;
|
|
243
|
+
if (!user) {
|
|
244
|
+
debugLog('No user found in credential');
|
|
245
|
+
throw new Error('No user found');
|
|
246
|
+
}
|
|
247
|
+
if (twoFactorRequired) {
|
|
248
|
+
debugLog('Two-factor authentication is required but user has no enrolled factors');
|
|
249
|
+
throw new Error('This app requires two factor authentication, please enroll a factor on the website and try again');
|
|
250
|
+
}
|
|
251
|
+
const userWithRole = await getUserWithRole(user);
|
|
252
|
+
debugLog('Initial login completed successfully');
|
|
253
|
+
return {
|
|
254
|
+
user: userWithRole
|
|
255
|
+
};
|
|
256
|
+
};
|
|
257
|
+
const loginWithGoogle = async (auth, twoFactorRequired) => {
|
|
258
|
+
debugLog('Starting Google sign-in', {
|
|
259
|
+
twoFactorRequired
|
|
260
|
+
});
|
|
261
|
+
try {
|
|
262
|
+
var _signInResult$data, _signInResult$data2;
|
|
263
|
+
debugLog('Calling GoogleSignin.signIn()');
|
|
264
|
+
const signInResult = await GoogleSignin.signIn();
|
|
265
|
+
debugLog('Google sign-in result received', {
|
|
266
|
+
hasIdToken: !!((_signInResult$data = signInResult.data) !== null && _signInResult$data !== void 0 && _signInResult$data.idToken)
|
|
267
|
+
});
|
|
268
|
+
const idToken = (_signInResult$data2 = signInResult.data) === null || _signInResult$data2 === void 0 ? void 0 : _signInResult$data2.idToken;
|
|
269
|
+
if (!idToken) {
|
|
270
|
+
debugLog('No ID token found in Google sign-in result');
|
|
271
|
+
throw new Error('No ID token found');
|
|
272
|
+
}
|
|
273
|
+
debugLog('Creating Google credential');
|
|
274
|
+
const googleCredential = GoogleAuthProvider.credential(idToken);
|
|
275
|
+
debugLog('Signing in with Google credential');
|
|
276
|
+
const userCredential = await signInWithCredential(auth, googleCredential);
|
|
277
|
+
return await handleInitialLogin(userCredential, twoFactorRequired);
|
|
278
|
+
} catch (error) {
|
|
279
|
+
debugLog('Error in Google sign-in', error);
|
|
280
|
+
return await handleSignInError(error);
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
const getLoginWithPassword = (auth, twoFactorRequired) => async (provider, {
|
|
284
|
+
email,
|
|
285
|
+
password
|
|
286
|
+
}) => {
|
|
287
|
+
debugLog('Starting email/password sign-in', {
|
|
288
|
+
provider: provider.name,
|
|
289
|
+
email,
|
|
290
|
+
twoFactorRequired
|
|
291
|
+
});
|
|
292
|
+
await initializeProvider(provider);
|
|
293
|
+
try {
|
|
294
|
+
var _userCredential$user4;
|
|
295
|
+
debugLog('Calling signInWithEmailAndPassword');
|
|
296
|
+
const userCredential = await signInWithEmailAndPassword(auth, email, password);
|
|
297
|
+
debugLog('Email/password sign-in successful', {
|
|
298
|
+
uid: (_userCredential$user4 = userCredential.user) === null || _userCredential$user4 === void 0 ? void 0 : _userCredential$user4.uid
|
|
299
|
+
});
|
|
300
|
+
return await handleInitialLogin(userCredential, twoFactorRequired);
|
|
301
|
+
} catch (error) {
|
|
302
|
+
debugLog('Error in email/password sign-in', error);
|
|
303
|
+
return await handleSignInError(error);
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
const getLoginWithPopup = (auth, twoFactorRequired) => async provider => {
|
|
307
|
+
debugLog('Starting popup sign-in', {
|
|
308
|
+
provider: provider.name,
|
|
309
|
+
twoFactorRequired
|
|
310
|
+
});
|
|
311
|
+
await initializeProvider(provider);
|
|
312
|
+
switch (provider.name) {
|
|
313
|
+
case 'google':
|
|
314
|
+
return loginWithGoogle(auth, twoFactorRequired);
|
|
315
|
+
default:
|
|
316
|
+
debugLog('Unsupported popup provider', {
|
|
317
|
+
name: provider.name
|
|
318
|
+
});
|
|
319
|
+
throw new Error(`Unsupported provider: ${provider.name}`);
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
const getLoginWithToken = (auth, twoFactorRequired) => async (provider, token) => {
|
|
323
|
+
debugLog('Starting token sign-in', {
|
|
324
|
+
provider: provider.name,
|
|
325
|
+
tokenLength: token.length,
|
|
326
|
+
twoFactorRequired
|
|
327
|
+
});
|
|
328
|
+
await initializeProvider(provider);
|
|
329
|
+
try {
|
|
330
|
+
var _userCredential$user5;
|
|
331
|
+
debugLog('Calling signInWithCustomToken');
|
|
332
|
+
const userCredential = await signInWithCustomToken(auth, token);
|
|
333
|
+
debugLog('Token sign-in successful', {
|
|
334
|
+
uid: (_userCredential$user5 = userCredential.user) === null || _userCredential$user5 === void 0 ? void 0 : _userCredential$user5.uid
|
|
335
|
+
});
|
|
336
|
+
return await handleInitialLogin(userCredential, twoFactorRequired);
|
|
337
|
+
} catch (error) {
|
|
338
|
+
debugLog('Error in token sign-in', error);
|
|
339
|
+
return await handleSignInError(error);
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
const resetPassword = async (auth, provider, usernameOrEmail) => {
|
|
343
|
+
debugLog('Starting password reset', {
|
|
344
|
+
provider: provider.name,
|
|
345
|
+
email: usernameOrEmail
|
|
346
|
+
});
|
|
347
|
+
await initializeProvider(provider);
|
|
348
|
+
try {
|
|
349
|
+
await sendPasswordResetEmail(auth, usernameOrEmail);
|
|
350
|
+
debugLog('Password reset email sent successfully');
|
|
351
|
+
} catch (error) {
|
|
352
|
+
debugLog('Error sending password reset email', error);
|
|
353
|
+
throw error;
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
export const getFirebaseAuthAdapter = (auth, twoFactorRequired) => {
|
|
357
|
+
debugLog('Creating Firebase Auth Adapter', {
|
|
358
|
+
twoFactorRequired
|
|
359
|
+
});
|
|
360
|
+
return {
|
|
361
|
+
twoFactorRequired,
|
|
362
|
+
getCurrentUser: async () => {
|
|
363
|
+
debugLog('Getting current user');
|
|
364
|
+
const user = auth.currentUser;
|
|
365
|
+
if (!user) {
|
|
366
|
+
debugLog('No current user found');
|
|
367
|
+
return null;
|
|
368
|
+
}
|
|
369
|
+
debugLog('Current user found', {
|
|
370
|
+
uid: user.uid,
|
|
371
|
+
email: user.email
|
|
372
|
+
});
|
|
373
|
+
return getUserWithRole(user);
|
|
374
|
+
},
|
|
375
|
+
loginWithPassword: getLoginWithPassword(auth, twoFactorRequired),
|
|
376
|
+
loginWithPopup: getLoginWithPopup(auth, twoFactorRequired),
|
|
377
|
+
loginWithToken: getLoginWithToken(auth, twoFactorRequired),
|
|
378
|
+
resetPassword: (...args) => {
|
|
379
|
+
return resetPassword(auth, ...args);
|
|
380
|
+
},
|
|
381
|
+
verifyMultiFactor,
|
|
382
|
+
sendMultiFactorCode: (...args) => {
|
|
383
|
+
return sendMultiFactorCode(auth, ...args);
|
|
384
|
+
},
|
|
385
|
+
getEnrolledFactors: (...args) => {
|
|
386
|
+
return getEnrolledFactors(auth, ...args);
|
|
387
|
+
},
|
|
388
|
+
logout: async () => {
|
|
389
|
+
debugLog('Starting logout');
|
|
390
|
+
try {
|
|
391
|
+
await signOut(auth);
|
|
392
|
+
debugLog('Logout completed successfully');
|
|
393
|
+
} catch (error) {
|
|
394
|
+
debugLog('Error during logout', error);
|
|
395
|
+
throw error;
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
subscribeToUser: callback => {
|
|
399
|
+
debugLog('Setting up user subscription');
|
|
400
|
+
return onAuthStateChanged(auth, user => {
|
|
401
|
+
if (!user) {
|
|
402
|
+
debugLog('User state changed: signed out');
|
|
403
|
+
callback(null);
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
debugLog('User state changed: user signed in', {
|
|
407
|
+
uid: user.uid,
|
|
408
|
+
email: user.email
|
|
409
|
+
});
|
|
410
|
+
getUserWithRole(user).then(result => {
|
|
411
|
+
debugLog('User subscription callback completed', {
|
|
412
|
+
uid: result.uid,
|
|
413
|
+
role: result.role
|
|
414
|
+
});
|
|
415
|
+
callback(result);
|
|
416
|
+
}).catch(error => {
|
|
417
|
+
debugLog('Error in user subscription callback', error);
|
|
418
|
+
callback(null);
|
|
419
|
+
});
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
};
|
|
423
|
+
};
|
|
424
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getIdTokenResult","getMultiFactorResolver","GoogleAuthProvider","onAuthStateChanged","PhoneAuthProvider","PhoneMultiFactorGenerator","sendPasswordResetEmail","signInWithCredential","signInWithCustomToken","signInWithEmailAndPassword","signOut","GoogleSignin","isDebug","process","_process$env","env","EXPO_PUBLIC_DEBUG","debugLog","message","data","console","log","providerInitialized","getUserWithRole","user","uid","email","_user$multiFactor","_user$multiFactor2","claims","role","customClaims","Object","keys","userWithRole","multiFactorVerified","multiFactor","enrolledFactors","length","enrolledFactorsCount","error","toEnrollmentFactor","hint","factorId","FACTOR_ID","type","phoneNumber","enrollmentTime","displayName","Error","toFirebaseFactor","factor","sendMultiFactorCode","auth","resolver","factorType","factorUid","sessionId","session","verificationId","verifyPhoneNumberWithMultiFactorInfo","substring","getEnrolledFactors","errorCode","code","hintsCount","hints","enrollmentFactors","map","factors","f","multiFactorResolver","verifyMultiFactor","verification","codeLength","_userCredential$user","credential","assertion","userCredential","resolveSignIn","handleSignInError","requestArgs","initializeProvider","provider","name","alreadyInitialized","webClientId","hasPlayServices","showPlayServicesUpdateDialog","configure","includes","handleInitialLogin","twoFactorRequired","_userCredential$user2","_userCredential$user3","loginWithGoogle","_signInResult$data","_signInResult$data2","signInResult","signIn","hasIdToken","idToken","googleCredential","getLoginWithPassword","password","_userCredential$user4","getLoginWithPopup","getLoginWithToken","token","tokenLength","_userCredential$user5","resetPassword","usernameOrEmail","getFirebaseAuthAdapter","getCurrentUser","currentUser","loginWithPassword","loginWithPopup","loginWithToken","args","logout","subscribeToUser","callback","then","result","catch"],"sourceRoot":"..\\..\\..\\src","sources":["adapter/auth.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { addMetadata } from '@chem-po/core';
|
|
2
|
+
import { useAuth } from '@chem-po/react';
|
|
3
|
+
import { deleteDoc, doc, getDoc, getDocs, onSnapshot, setDoc } from '@react-native-firebase/firestore';
|
|
4
|
+
import { httpsCallable } from '@react-native-firebase/functions';
|
|
5
|
+
import { toCursorQuery, toFirestoreQuery } from '../db/utils';
|
|
6
|
+
// import { BaseQuery, FirestoreCursor } from '../types/db'
|
|
7
|
+
|
|
8
|
+
const handleFirestoreError = error => ({
|
|
9
|
+
code: (error === null || error === void 0 ? void 0 : error.code) ?? 'unknown',
|
|
10
|
+
message: (error === null || error === void 0 ? void 0 : error.name) ?? 'Unknown Error',
|
|
11
|
+
description: (error === null || error === void 0 ? void 0 : error.message) ?? 'An unknown error occurred'
|
|
12
|
+
});
|
|
13
|
+
const toDBItem = doc => ({
|
|
14
|
+
...doc.data(),
|
|
15
|
+
id: doc.id
|
|
16
|
+
});
|
|
17
|
+
const getSubscribeToQuery = db => (baseQuery, onData, onError) => {
|
|
18
|
+
const q = toFirestoreQuery(db, baseQuery);
|
|
19
|
+
return onSnapshot(q, snapshot => {
|
|
20
|
+
const items = snapshot.docs.map(doc => toDBItem(doc));
|
|
21
|
+
onData(items, snapshot.docs[snapshot.docs.length - 1]);
|
|
22
|
+
}, error => onError(handleFirestoreError(error)));
|
|
23
|
+
};
|
|
24
|
+
const getFetchNextCursor = db => async baseQuery => {
|
|
25
|
+
const {
|
|
26
|
+
cursor
|
|
27
|
+
} = baseQuery;
|
|
28
|
+
const cursorDoc = cursor ? await getDoc(doc(db, baseQuery.collection, cursor.id)) : null;
|
|
29
|
+
const q = toCursorQuery(db, baseQuery, cursorDoc);
|
|
30
|
+
const snapshot = await getDocs(q);
|
|
31
|
+
return snapshot.docs[0] ?? null;
|
|
32
|
+
};
|
|
33
|
+
const getFetchCount = functions => async baseQuery => {
|
|
34
|
+
const fetchCountFunc = httpsCallable(functions, 'getQueryCount');
|
|
35
|
+
const {
|
|
36
|
+
data
|
|
37
|
+
} = await fetchCountFunc(baseQuery);
|
|
38
|
+
return data.count;
|
|
39
|
+
};
|
|
40
|
+
const getFetchItem = db => async path => {
|
|
41
|
+
const docRef = doc(db, path);
|
|
42
|
+
const docSnap = await getDoc(docRef);
|
|
43
|
+
const data = docSnap.data();
|
|
44
|
+
return data ? {
|
|
45
|
+
...data,
|
|
46
|
+
id: docSnap.id
|
|
47
|
+
} : null;
|
|
48
|
+
};
|
|
49
|
+
const getFetchItems = db => async baseQuery => {
|
|
50
|
+
const q = toFirestoreQuery(db, baseQuery);
|
|
51
|
+
const snapshot = await getDocs(q);
|
|
52
|
+
return snapshot.docs.map(doc => ({
|
|
53
|
+
...doc.data(),
|
|
54
|
+
id: doc.id
|
|
55
|
+
}));
|
|
56
|
+
};
|
|
57
|
+
const getCreateItem = db => async (path, item) => {
|
|
58
|
+
const docRef = doc(db, path);
|
|
59
|
+
const data = addMetadata(useAuth.getState().user, item, true);
|
|
60
|
+
await setDoc(docRef, data, {
|
|
61
|
+
merge: true
|
|
62
|
+
});
|
|
63
|
+
return docRef.id;
|
|
64
|
+
};
|
|
65
|
+
const getDeleteItem = db => async path => {
|
|
66
|
+
const docRef = doc(db, path);
|
|
67
|
+
await deleteDoc(docRef);
|
|
68
|
+
};
|
|
69
|
+
const getUpdateItem = db => async (path, item) => {
|
|
70
|
+
const docRef = doc(db, path);
|
|
71
|
+
await setDoc(docRef, item, {
|
|
72
|
+
merge: true
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
const getSubscribeToItem = db => (path, onData, onError) => {
|
|
76
|
+
const docRef = doc(db, path);
|
|
77
|
+
return onSnapshot(docRef, snapshot => {
|
|
78
|
+
const data = snapshot.data();
|
|
79
|
+
onData(data ? {
|
|
80
|
+
...data,
|
|
81
|
+
id: snapshot.id
|
|
82
|
+
} : null);
|
|
83
|
+
}, error => onError(handleFirestoreError(error)));
|
|
84
|
+
};
|
|
85
|
+
export const getFirebaseDatabaseAdapter = (db, functions) => ({
|
|
86
|
+
fetchNextCursor: getFetchNextCursor(db),
|
|
87
|
+
fetchCount: getFetchCount(functions),
|
|
88
|
+
fetchItem: getFetchItem(db),
|
|
89
|
+
fetchItems: getFetchItems(db),
|
|
90
|
+
createItem: getCreateItem(db),
|
|
91
|
+
deleteItem: getDeleteItem(db),
|
|
92
|
+
updateItem: getUpdateItem(db),
|
|
93
|
+
subscribeToItem: getSubscribeToItem(db),
|
|
94
|
+
subscribeToQuery: getSubscribeToQuery(db)
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["addMetadata","useAuth","deleteDoc","doc","getDoc","getDocs","onSnapshot","setDoc","httpsCallable","toCursorQuery","toFirestoreQuery","handleFirestoreError","error","code","message","name","description","toDBItem","data","id","getSubscribeToQuery","db","baseQuery","onData","onError","q","snapshot","items","docs","map","length","getFetchNextCursor","cursor","cursorDoc","collection","getFetchCount","functions","fetchCountFunc","count","getFetchItem","path","docRef","docSnap","getFetchItems","getCreateItem","item","getState","user","merge","getDeleteItem","getUpdateItem","getSubscribeToItem","getFirebaseDatabaseAdapter","fetchNextCursor","fetchCount","fetchItem","fetchItems","createItem","deleteItem","updateItem","subscribeToItem","subscribeToQuery"],"sourceRoot":"..\\..\\..\\src","sources":["adapter/db.ts"],"mappings":"AAAA,SACEA,WAAW,QASN,eAAe;AACtB,SAASC,OAAO,QAAQ,gBAAgB;AACxC,SACEC,SAAS,EACTC,GAAG,EAEHC,MAAM,EACNC,OAAO,EACPC,UAAU,EACVC,MAAM,QACD,kCAAkC;AACzC,SAASC,aAAa,QAAQ,kCAAkC;AAChE,SAASC,aAAa,EAAEC,gBAAgB,QAAQ,aAAa;AAG7D;;AAEA,MAAMC,oBAAoB,GAAIC,KAAU,KAAiB;EACvDC,IAAI,EAAE,CAAAD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEC,IAAI,KAAI,SAAS;EAC9BC,OAAO,EAAE,CAAAF,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,IAAI,KAAI,eAAe;EACvCC,WAAW,EAAE,CAAAJ,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,OAAO,KAAI;AACjC,CAAC,CAAC;AAEF,MAAMG,QAAQ,GACZd,GAA+C,KAChC;EACf,GAAIA,GAAG,CAACe,IAAI,CAAC,CAAqB;EAClCC,EAAE,EAAEhB,GAAG,CAACgB;AACV,CAAC,CAAC;AAEF,MAAMC,mBAAmB,GACtBC,EAAa,IACd,CACEC,SAAgC,EAChCC,MAA+B,EAC/BC,OAAgB,KACA;EAChB,MAAMC,CAAC,GAAGf,gBAAgB,CAAIW,EAAE,EAAEC,SAAS,CAAC;EAC5C,OAAOhB,UAAU,CACfmB,CAAC,EACDC,QAAQ,IAAI;IACV,MAAMC,KAAK,GAAGD,QAAQ,CAACE,IAAI,CAACC,GAAG,CAAC1B,GAAG,IAAIc,QAAQ,CAACd,GAAG,CAAC,CAAC;IACrDoB,MAAM,CAACI,KAAK,EAAED,QAAQ,CAACE,IAAI,CAACF,QAAQ,CAACE,IAAI,CAACE,MAAM,GAAG,CAAC,CAAoB,CAAC;EAC3E,CAAC,EACDlB,KAAK,IAAIY,OAAO,CAACb,oBAAoB,CAACC,KAAK,CAAC,CAC9C,CAAC;AACH,CAAC;AAEH,MAAMmB,kBAAkB,GACrBV,EAAa,IACd,MACEC,SAAgC,IACI;EACpC,MAAM;IAAEU;EAAO,CAAC,GAAGV,SAAS;EAC5B,MAAMW,SAAS,GAAGD,MAAM,GAAG,MAAM5B,MAAM,CAACD,GAAG,CAACkB,EAAE,EAAEC,SAAS,CAACY,UAAU,EAAEF,MAAM,CAACb,EAAE,CAAC,CAAC,GAAG,IAAI;EACxF,MAAMM,CAAC,GAAGhB,aAAa,CAAIY,EAAE,EAAEC,SAAS,EAAEW,SAAmC,CAAC;EAC9E,MAAMP,QAAQ,GAAG,MAAMrB,OAAO,CAACoB,CAAC,CAAC;EACjC,OAAQC,QAAQ,CAACE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI;AAClC,CAAC;AAEH,MAAMO,aAAa,GAChBC,SAAoB,IACrB,MAA4Bd,SAAgC,IAAsB;EAChF,MAAMe,cAAc,GAAG7B,aAAa,CAAC4B,SAAS,EAAE,eAAe,CAAC;EAChE,MAAM;IAAElB;EAAK,CAAC,GAAG,MAAMmB,cAAc,CAACf,SAAS,CAAC;EAChD,OAAQJ,IAAI,CAAuBoB,KAAK;AAC1C,CAAC;AAEH,MAAMC,YAAY,GACflB,EAAa,IACd,MAA4BmB,IAAY,IAAgC;EACtE,MAAMC,MAAM,GAAGtC,GAAG,CAACkB,EAAE,EAAEmB,IAAI,CAAC;EAC5B,MAAME,OAAO,GAAG,MAAMtC,MAAM,CAACqC,MAAM,CAAC;EACpC,MAAMvB,IAAI,GAAGwB,OAAO,CAACxB,IAAI,CAAC,CAAC;EAC3B,OAAOA,IAAI,GAAI;IAAE,GAAGA,IAAI;IAAEC,EAAE,EAAEuB,OAAO,CAACvB;EAAG,CAAC,GAAiB,IAAI;AACjE,CAAC;AAEH,MAAMwB,aAAa,GAChBtB,EAAa,IACd,MAA4BC,SAAgC,IAA2B;EACrF,MAAMG,CAAC,GAAGf,gBAAgB,CAAIW,EAAE,EAAEC,SAAS,CAAC;EAC5C,MAAMI,QAAQ,GAAG,MAAMrB,OAAO,CAACoB,CAAC,CAAC;EACjC,OAAOC,QAAQ,CAACE,IAAI,CAACC,GAAG,CAAC1B,GAAG,KAAK;IAAE,GAAGA,GAAG,CAACe,IAAI,CAAC,CAAC;IAAEC,EAAE,EAAEhB,GAAG,CAACgB;EAAG,CAAC,CAAc,CAAC;AAC/E,CAAC;AAEH,MAAMyB,aAAa,GAChBvB,EAAa,IACd,OAAOmB,IAAY,EAAEK,IAAe,KAAsB;EACxD,MAAMJ,MAAM,GAAGtC,GAAG,CAACkB,EAAE,EAAEmB,IAAI,CAAC;EAC5B,MAAMtB,IAAI,GAAGlB,WAAW,CAACC,OAAO,CAAC6C,QAAQ,CAAC,CAAC,CAACC,IAAI,EAAEF,IAAI,EAAE,IAAI,CAAC;EAC7D,MAAMtC,MAAM,CAACkC,MAAM,EAAEvB,IAAI,EAAE;IAAE8B,KAAK,EAAE;EAAK,CAAC,CAAC;EAC3C,OAAOP,MAAM,CAACtB,EAAE;AAClB,CAAC;AAEH,MAAM8B,aAAa,GAChB5B,EAAa,IACd,MAAOmB,IAAY,IAAoB;EACrC,MAAMC,MAAM,GAAGtC,GAAG,CAACkB,EAAE,EAAEmB,IAAI,CAAC;EAC5B,MAAMtC,SAAS,CAACuC,MAAM,CAAC;AACzB,CAAC;AAEH,MAAMS,aAAa,GAChB7B,EAAa,IACd,OAA4BmB,IAAY,EAAEK,IAAgB,KAAoB;EAC5E,MAAMJ,MAAM,GAAGtC,GAAG,CAACkB,EAAE,EAAEmB,IAAI,CAAC;EAC5B,MAAMjC,MAAM,CAACkC,MAAM,EAAEI,IAAI,EAAE;IAAEG,KAAK,EAAE;EAAK,CAAC,CAAC;AAC7C,CAAC;AAEH,MAAMG,kBAAkB,GACrB9B,EAAa,IACd,CAAsBmB,IAAY,EAAEjB,MAAqB,EAAEC,OAAgB,KAAkB;EAC3F,MAAMiB,MAAM,GAAGtC,GAAG,CAACkB,EAAE,EAAEmB,IAAI,CAAC;EAC5B,OAAOlC,UAAU,CACfmC,MAAM,EACNf,QAAQ,IAAI;IACV,MAAMR,IAAI,GAAGQ,QAAQ,CAACR,IAAI,CAAC,CAAC;IAC5BK,MAAM,CAACL,IAAI,GAAI;MAAE,GAAGA,IAAI;MAAEC,EAAE,EAAEO,QAAQ,CAACP;IAAG,CAAC,GAAiB,IAAI,CAAC;EACnE,CAAC,EACDP,KAAK,IAAIY,OAAO,CAACb,oBAAoB,CAACC,KAAK,CAAC,CAC9C,CAAC;AACH,CAAC;AAEH,OAAO,MAAMwC,0BAA0B,GAAGA,CACxC/B,EAAa,EACbe,SAAoB,MACkB;EACtCiB,eAAe,EAAEtB,kBAAkB,CAACV,EAAE,CAAC;EACvCiC,UAAU,EAAEnB,aAAa,CAACC,SAAS,CAAC;EACpCmB,SAAS,EAAEhB,YAAY,CAAClB,EAAE,CAAC;EAC3BmC,UAAU,EAAEb,aAAa,CAACtB,EAAE,CAAC;EAC7BoC,UAAU,EAAEb,aAAa,CAACvB,EAAE,CAAC;EAC7BqC,UAAU,EAAET,aAAa,CAAC5B,EAAE,CAAC;EAC7BsC,UAAU,EAAET,aAAa,CAAC7B,EAAE,CAAC;EAC7BuC,eAAe,EAAET,kBAAkB,CAAC9B,EAAE,CAAC;EACvCwC,gBAAgB,EAAEzC,mBAAmB,CAACC,EAAE;AAC1C,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { getFirebaseAuthAdapter } from './auth';
|
|
2
|
+
import { getFirebaseDatabaseAdapter } from './db';
|
|
3
|
+
import { getFirebaseStorageAdapter } from './storage';
|
|
4
|
+
export const getFirebaseAdapter = (auth, db, storage, functions, twoFactorRequired) => ({
|
|
5
|
+
auth: getFirebaseAuthAdapter(auth, twoFactorRequired),
|
|
6
|
+
db: getFirebaseDatabaseAdapter(db, functions),
|
|
7
|
+
storage: getFirebaseStorageAdapter(storage)
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getFirebaseAuthAdapter","getFirebaseDatabaseAdapter","getFirebaseStorageAdapter","getFirebaseAdapter","auth","db","storage","functions","twoFactorRequired"],"sourceRoot":"..\\..\\..\\src","sources":["adapter/index.ts"],"mappings":"AAMA,SAASA,sBAAsB,QAAQ,QAAQ;AAC/C,SAASC,0BAA0B,QAAQ,MAAM;AACjD,SAASC,yBAAyB,QAAQ,WAAW;AAWrD,OAAO,MAAMC,kBAAkB,GAAGA,CAChCC,IAAU,EACVC,EAAa,EACbC,OAAgB,EAChBC,SAAoB,EACpBC,iBAA0B,MACS;EACnCJ,IAAI,EAAEJ,sBAAsB,CAACI,IAAI,EAAEI,iBAAiB,CAAC;EACrDH,EAAE,EAAEJ,0BAA0B,CAACI,EAAE,EAAEE,SAAS,CAAC;EAC7CD,OAAO,EAAEJ,yBAAyB,CAACI,OAAO;AAC5C,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { deleteObject, getDownloadURL, getMetadata, ref, uploadBytesResumable } from '@react-native-firebase/storage';
|
|
2
|
+
export const getFirebaseStorageAdapter = storage => ({
|
|
3
|
+
delete: async path => {
|
|
4
|
+
const storageRef = ref(storage, path);
|
|
5
|
+
await deleteObject(storageRef);
|
|
6
|
+
},
|
|
7
|
+
fetchObject: async path => {
|
|
8
|
+
const storageRef = ref(storage, path);
|
|
9
|
+
const url = await getDownloadURL(storageRef);
|
|
10
|
+
const response = await fetch(url);
|
|
11
|
+
return await response.blob();
|
|
12
|
+
},
|
|
13
|
+
fetchMetadata: async path => {
|
|
14
|
+
const storageRef = ref(storage, path);
|
|
15
|
+
return await getMetadata(storageRef);
|
|
16
|
+
},
|
|
17
|
+
getObjectUrl: async path => {
|
|
18
|
+
const storageRef = ref(storage, path);
|
|
19
|
+
return await getDownloadURL(storageRef);
|
|
20
|
+
},
|
|
21
|
+
upload: async (path, data, onUploadProgress) => {
|
|
22
|
+
const storageRef = ref(storage, path);
|
|
23
|
+
// Convert dataUrl to Blob
|
|
24
|
+
const blob = await fetch(data.dataUrl).then(res => res.blob());
|
|
25
|
+
const uploadTask = uploadBytesResumable(storageRef, blob);
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
uploadTask.on('state_changed', snapshot => {
|
|
28
|
+
const progress = snapshot.bytesTransferred / snapshot.totalBytes * 100;
|
|
29
|
+
onUploadProgress({
|
|
30
|
+
loaded: snapshot.bytesTransferred,
|
|
31
|
+
total: snapshot.totalBytes,
|
|
32
|
+
percent: progress
|
|
33
|
+
});
|
|
34
|
+
}, error => reject(error), () => {
|
|
35
|
+
const fileValue = {
|
|
36
|
+
filename: data.filename,
|
|
37
|
+
type: data.type,
|
|
38
|
+
storagePath: path
|
|
39
|
+
};
|
|
40
|
+
resolve(fileValue);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["deleteObject","getDownloadURL","getMetadata","ref","uploadBytesResumable","getFirebaseStorageAdapter","storage","delete","path","storageRef","fetchObject","url","response","fetch","blob","fetchMetadata","getObjectUrl","upload","data","onUploadProgress","dataUrl","then","res","uploadTask","Promise","resolve","reject","on","snapshot","progress","bytesTransferred","totalBytes","loaded","total","percent","error","fileValue","filename","type","storagePath"],"sourceRoot":"..\\..\\..\\src","sources":["adapter/storage.ts"],"mappings":"AACA,SACEA,YAAY,EACZC,cAAc,EACdC,WAAW,EACXC,GAAG,EACHC,oBAAoB,QACf,gCAAgC;AAGvC,OAAO,MAAMC,yBAAyB,GAAIC,OAAgB,KAAiC;EACzFC,MAAM,EAAE,MAAMC,IAAI,IAAI;IACpB,MAAMC,UAAU,GAAGN,GAAG,CAACG,OAAO,EAAEE,IAAI,CAAC;IACrC,MAAMR,YAAY,CAACS,UAAU,CAAC;EAChC,CAAC;EACDC,WAAW,EAAE,MAAMF,IAAI,IAAI;IACzB,MAAMC,UAAU,GAAGN,GAAG,CAACG,OAAO,EAAEE,IAAI,CAAC;IACrC,MAAMG,GAAG,GAAG,MAAMV,cAAc,CAACQ,UAAU,CAAC;IAC5C,MAAMG,QAAQ,GAAG,MAAMC,KAAK,CAACF,GAAG,CAAC;IACjC,OAAO,MAAMC,QAAQ,CAACE,IAAI,CAAC,CAAC;EAC9B,CAAC;EACDC,aAAa,EAAE,MAAMP,IAAI,IAAI;IAC3B,MAAMC,UAAU,GAAGN,GAAG,CAACG,OAAO,EAAEE,IAAI,CAAC;IACrC,OAAO,MAAMN,WAAW,CAACO,UAAU,CAAC;EACtC,CAAC;EACDO,YAAY,EAAE,MAAMR,IAAI,IAAI;IAC1B,MAAMC,UAAU,GAAGN,GAAG,CAACG,OAAO,EAAEE,IAAI,CAAC;IACrC,OAAO,MAAMP,cAAc,CAACQ,UAAU,CAAC;EACzC,CAAC;EACDQ,MAAM,EAAE,MAAAA,CAAOT,IAAI,EAAEU,IAAI,EAAEC,gBAAgB,KAAK;IAC9C,MAAMV,UAAU,GAAGN,GAAG,CAACG,OAAO,EAAEE,IAAI,CAAC;IACrC;IACA,MAAMM,IAAI,GAAG,MAAMD,KAAK,CAACK,IAAI,CAACE,OAAO,CAAC,CAACC,IAAI,CAACC,GAAG,IAAIA,GAAG,CAACR,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAMS,UAAU,GAAGnB,oBAAoB,CAACK,UAAU,EAAEK,IAAI,CAAC;IACzD,OAAO,IAAIU,OAAO,CAAoB,CAACC,OAAO,EAAEC,MAAM,KAAK;MACzDH,UAAU,CAACI,EAAE,CACX,eAAe,EACfC,QAAQ,IAAI;QACV,MAAMC,QAAQ,GAAID,QAAQ,CAACE,gBAAgB,GAAGF,QAAQ,CAACG,UAAU,GAAI,GAAG;QACxEZ,gBAAgB,CAAC;UACfa,MAAM,EAAEJ,QAAQ,CAACE,gBAAgB;UACjCG,KAAK,EAAEL,QAAQ,CAACG,UAAU;UAC1BG,OAAO,EAAEL;QACX,CAAC,CAAC;MACJ,CAAC,EACDM,KAAK,IAAIT,MAAM,CAACS,KAAK,CAAC,EACtB,MAAM;QACJ,MAAMC,SAA4B,GAAG;UACnCC,QAAQ,EAAEnB,IAAI,CAACmB,QAAQ;UACvBC,IAAI,EAAEpB,IAAI,CAACoB,IAAI;UACfC,WAAW,EAAE/B;QACf,CAAC;QACDiB,OAAO,CAACW,SAAS,CAAC;MACpB,CACF,CAAC;IACH,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getThirdPartyAuthUrl","functions","httpsCallable","getThirdPartyAuthToken"],"sourceRoot":"..\\..\\..\\src","sources":["auth/functions.ts"],"mappings":"AAEA,OAAO,MAAMA,oBAAoB,GAAIC,SAAwC,IAC3EA,SAAS,CAACC,aAAa,CAAC,sBAAsB,CAAC;AAEjD,OAAO,MAAMC,sBAAsB,GAAIF,SAAwC,IAC7EA,SAAS,CAACC,aAAa,CAAC,wBAAwB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["auth/index.ts"],"mappings":"AAAA,cAAc,aAAa","ignoreList":[]}
|