@chem-po/firebase-native 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/lib/commonjs/adapter/auth.js +221 -0
  2. package/lib/commonjs/adapter/auth.js.map +1 -0
  3. package/lib/commonjs/adapter/db.js +103 -0
  4. package/lib/commonjs/adapter/db.js.map +1 -0
  5. package/lib/commonjs/adapter/index.js +16 -0
  6. package/lib/commonjs/adapter/index.js.map +1 -0
  7. package/lib/commonjs/adapter/storage.js +52 -0
  8. package/lib/commonjs/adapter/storage.js.map +1 -0
  9. package/lib/commonjs/auth/functions.js +11 -0
  10. package/lib/commonjs/auth/functions.js.map +1 -0
  11. package/lib/commonjs/auth/index.js +17 -0
  12. package/lib/commonjs/auth/index.js.map +1 -0
  13. package/lib/commonjs/components/AuthenticatorVerify.js +90 -0
  14. package/lib/commonjs/components/AuthenticatorVerify.js.map +1 -0
  15. package/lib/commonjs/components/FirebaseSignIn.js +196 -0
  16. package/lib/commonjs/components/FirebaseSignIn.js.map +1 -0
  17. package/lib/commonjs/components/PhoneVerify.js +123 -0
  18. package/lib/commonjs/components/PhoneVerify.js.map +1 -0
  19. package/lib/commonjs/components/TwoFactorAuthModal.js +118 -0
  20. package/lib/commonjs/components/TwoFactorAuthModal.js.map +1 -0
  21. package/lib/commonjs/components/index.js +28 -0
  22. package/lib/commonjs/components/index.js.map +1 -0
  23. package/lib/commonjs/contexts/FirebaseContext.js +48 -0
  24. package/lib/commonjs/contexts/FirebaseContext.js.map +1 -0
  25. package/lib/commonjs/contexts/index.js +17 -0
  26. package/lib/commonjs/contexts/index.js.map +1 -0
  27. package/lib/commonjs/db/index.js +17 -0
  28. package/lib/commonjs/db/index.js.map +1 -0
  29. package/lib/commonjs/db/utils.js +120 -0
  30. package/lib/commonjs/db/utils.js.map +1 -0
  31. package/lib/commonjs/hooks/backend.js +12 -0
  32. package/lib/commonjs/hooks/backend.js.map +1 -0
  33. package/lib/commonjs/hooks/index.js +17 -0
  34. package/lib/commonjs/hooks/index.js.map +1 -0
  35. package/lib/commonjs/hooks/useAuthenticatorVerify.js +52 -0
  36. package/lib/commonjs/hooks/useAuthenticatorVerify.js.map +1 -0
  37. package/lib/commonjs/hooks/usePhoneVerify.js +83 -0
  38. package/lib/commonjs/hooks/usePhoneVerify.js.map +1 -0
  39. package/lib/commonjs/icons/Google.js +29 -0
  40. package/lib/commonjs/icons/Google.js.map +1 -0
  41. package/lib/commonjs/index.js +94 -0
  42. package/lib/commonjs/index.js.map +1 -0
  43. package/lib/commonjs/storage/index.js +17 -0
  44. package/lib/commonjs/storage/index.js.map +1 -0
  45. package/lib/commonjs/storage/utils.js +37 -0
  46. package/lib/commonjs/storage/utils.js.map +1 -0
  47. package/lib/commonjs/types/adapter.js +6 -0
  48. package/lib/commonjs/types/adapter.js.map +1 -0
  49. package/lib/commonjs/types/auth.js +6 -0
  50. package/lib/commonjs/types/auth.js.map +1 -0
  51. package/lib/commonjs/types/db.js +6 -0
  52. package/lib/commonjs/types/db.js.map +1 -0
  53. package/lib/commonjs/types/functions.js +6 -0
  54. package/lib/commonjs/types/functions.js.map +1 -0
  55. package/lib/commonjs/types/index.js +6 -0
  56. package/lib/commonjs/types/index.js.map +1 -0
  57. package/lib/commonjs/types/storage.js +6 -0
  58. package/lib/commonjs/types/storage.js.map +1 -0
  59. package/lib/module/adapter/auth.js +214 -0
  60. package/lib/module/adapter/auth.js.map +1 -0
  61. package/lib/module/adapter/db.js +96 -0
  62. package/lib/module/adapter/db.js.map +1 -0
  63. package/lib/module/adapter/index.js +9 -0
  64. package/lib/module/adapter/index.js.map +1 -0
  65. package/lib/module/adapter/storage.js +45 -0
  66. package/lib/module/adapter/storage.js.map +1 -0
  67. package/lib/module/auth/functions.js +3 -0
  68. package/lib/module/auth/functions.js.map +1 -0
  69. package/lib/module/auth/index.js +2 -0
  70. package/lib/module/auth/index.js.map +1 -0
  71. package/lib/module/components/AuthenticatorVerify.js +82 -0
  72. package/lib/module/components/AuthenticatorVerify.js.map +1 -0
  73. package/lib/module/components/FirebaseSignIn.js +187 -0
  74. package/lib/module/components/FirebaseSignIn.js.map +1 -0
  75. package/lib/module/components/PhoneVerify.js +116 -0
  76. package/lib/module/components/PhoneVerify.js.map +1 -0
  77. package/lib/module/components/TwoFactorAuthModal.js +110 -0
  78. package/lib/module/components/TwoFactorAuthModal.js.map +1 -0
  79. package/lib/module/components/index.js +3 -0
  80. package/lib/module/components/index.js.map +1 -0
  81. package/lib/module/contexts/FirebaseContext.js +39 -0
  82. package/lib/module/contexts/FirebaseContext.js.map +1 -0
  83. package/lib/module/contexts/index.js +2 -0
  84. package/lib/module/contexts/index.js.map +1 -0
  85. package/lib/module/db/index.js +2 -0
  86. package/lib/module/db/index.js.map +1 -0
  87. package/lib/module/db/utils.js +111 -0
  88. package/lib/module/db/utils.js.map +1 -0
  89. package/lib/module/hooks/backend.js +5 -0
  90. package/lib/module/hooks/backend.js.map +1 -0
  91. package/lib/module/hooks/index.js +2 -0
  92. package/lib/module/hooks/index.js.map +1 -0
  93. package/lib/module/hooks/useAuthenticatorVerify.js +45 -0
  94. package/lib/module/hooks/useAuthenticatorVerify.js.map +1 -0
  95. package/lib/module/hooks/usePhoneVerify.js +76 -0
  96. package/lib/module/hooks/usePhoneVerify.js.map +1 -0
  97. package/lib/module/icons/Google.js +22 -0
  98. package/lib/module/icons/Google.js.map +1 -0
  99. package/lib/module/index.js +9 -0
  100. package/lib/module/index.js.map +1 -0
  101. package/lib/module/storage/index.js +2 -0
  102. package/lib/module/storage/index.js.map +1 -0
  103. package/lib/module/storage/utils.js +30 -0
  104. package/lib/module/storage/utils.js.map +1 -0
  105. package/lib/module/types/adapter.js +2 -0
  106. package/lib/module/types/adapter.js.map +1 -0
  107. package/lib/module/types/auth.js +2 -0
  108. package/lib/module/types/auth.js.map +1 -0
  109. package/lib/module/types/db.js +2 -0
  110. package/lib/module/types/db.js.map +1 -0
  111. package/lib/module/types/functions.js +2 -0
  112. package/lib/module/types/functions.js.map +1 -0
  113. package/lib/module/types/index.js +2 -0
  114. package/lib/module/types/index.js.map +1 -0
  115. package/lib/module/types/storage.js +2 -0
  116. package/lib/module/types/storage.js.map +1 -0
  117. package/lib/typescript/adapter/auth.d.ts +7 -0
  118. package/lib/typescript/adapter/auth.d.ts.map +1 -0
  119. package/lib/typescript/adapter/db.d.ts +5 -0
  120. package/lib/typescript/adapter/db.d.ts.map +1 -0
  121. package/lib/typescript/adapter/index.d.ts +9 -0
  122. package/lib/typescript/adapter/index.d.ts.map +1 -0
  123. package/lib/typescript/adapter/storage.d.ts +4 -0
  124. package/lib/typescript/adapter/storage.d.ts.map +1 -0
  125. package/lib/typescript/auth/functions.d.ts +4 -0
  126. package/lib/typescript/auth/functions.d.ts.map +1 -0
  127. package/lib/typescript/auth/index.d.ts +2 -0
  128. package/lib/typescript/auth/index.d.ts.map +1 -0
  129. package/lib/typescript/components/AuthenticatorVerify.d.ts +3 -0
  130. package/lib/typescript/components/AuthenticatorVerify.d.ts.map +1 -0
  131. package/lib/typescript/components/FirebaseSignIn.d.ts +6 -0
  132. package/lib/typescript/components/FirebaseSignIn.d.ts.map +1 -0
  133. package/lib/typescript/components/PhoneVerify.d.ts +6 -0
  134. package/lib/typescript/components/PhoneVerify.d.ts.map +1 -0
  135. package/lib/typescript/components/TwoFactorAuthModal.d.ts +3 -0
  136. package/lib/typescript/components/TwoFactorAuthModal.d.ts.map +1 -0
  137. package/lib/typescript/components/index.d.ts +3 -0
  138. package/lib/typescript/components/index.d.ts.map +1 -0
  139. package/lib/typescript/contexts/FirebaseContext.d.ts +9 -0
  140. package/lib/typescript/contexts/FirebaseContext.d.ts.map +1 -0
  141. package/lib/typescript/contexts/index.d.ts +2 -0
  142. package/lib/typescript/contexts/index.d.ts.map +1 -0
  143. package/lib/typescript/db/index.d.ts +2 -0
  144. package/lib/typescript/db/index.d.ts.map +1 -0
  145. package/lib/typescript/db/utils.d.ts +6 -0
  146. package/lib/typescript/db/utils.d.ts.map +1 -0
  147. package/lib/typescript/hooks/backend.d.ts +2 -0
  148. package/lib/typescript/hooks/backend.d.ts.map +1 -0
  149. package/lib/typescript/hooks/index.d.ts +2 -0
  150. package/lib/typescript/hooks/index.d.ts.map +1 -0
  151. package/lib/typescript/hooks/useAuthenticatorVerify.d.ts +8 -0
  152. package/lib/typescript/hooks/useAuthenticatorVerify.d.ts.map +1 -0
  153. package/lib/typescript/hooks/usePhoneVerify.d.ts +9 -0
  154. package/lib/typescript/hooks/usePhoneVerify.d.ts.map +1 -0
  155. package/lib/typescript/icons/Google.d.ts +5 -0
  156. package/lib/typescript/icons/Google.d.ts.map +1 -0
  157. package/lib/typescript/index.d.ts +9 -0
  158. package/lib/typescript/index.d.ts.map +1 -0
  159. package/lib/typescript/storage/index.d.ts +2 -0
  160. package/lib/typescript/storage/index.d.ts.map +1 -0
  161. package/lib/typescript/storage/utils.d.ts +4 -0
  162. package/lib/typescript/storage/utils.d.ts.map +1 -0
  163. package/lib/typescript/types/adapter.d.ts +6 -0
  164. package/lib/typescript/types/adapter.d.ts.map +1 -0
  165. package/lib/typescript/types/auth.d.ts +12 -0
  166. package/lib/typescript/types/auth.d.ts.map +1 -0
  167. package/lib/typescript/types/db.d.ts +8 -0
  168. package/lib/typescript/types/db.d.ts.map +1 -0
  169. package/lib/typescript/types/functions.d.ts +3 -0
  170. package/lib/typescript/types/functions.d.ts.map +1 -0
  171. package/lib/typescript/types/index.d.ts +24 -0
  172. package/lib/typescript/types/index.d.ts.map +1 -0
  173. package/lib/typescript/types/storage.d.ts +3 -0
  174. package/lib/typescript/types/storage.d.ts.map +1 -0
  175. package/package.json +29 -12
  176. package/src/adapter/auth.ts +281 -0
  177. package/src/adapter/db.ts +146 -0
  178. package/src/adapter/index.ts +30 -0
  179. package/src/adapter/storage.ts +58 -0
  180. package/src/auth/functions.ts +7 -0
  181. package/src/auth/index.ts +1 -0
  182. package/src/components/AuthenticatorVerify.tsx +75 -0
  183. package/src/components/FirebaseSignIn.tsx +187 -0
  184. package/src/components/PhoneVerify.tsx +102 -0
  185. package/src/components/TwoFactorAuthModal.tsx +133 -0
  186. package/src/components/index.ts +2 -0
  187. package/src/contexts/FirebaseContext.tsx +54 -0
  188. package/src/contexts/index.ts +1 -0
  189. package/src/db/index.ts +1 -0
  190. package/src/db/utils.ts +142 -0
  191. package/src/hooks/backend.ts +4 -0
  192. package/src/hooks/index.ts +1 -0
  193. package/src/hooks/useAuthenticatorVerify.ts +45 -0
  194. package/src/hooks/usePhoneVerify.ts +76 -0
  195. package/src/icons/Google.tsx +24 -0
  196. package/src/index.ts +8 -0
  197. package/src/storage/index.ts +1 -0
  198. package/src/storage/utils.ts +29 -0
  199. package/src/types/adapter.ts +13 -0
  200. package/src/types/auth.ts +13 -0
  201. package/src/types/db.ts +10 -0
  202. package/src/types/functions.ts +3 -0
  203. package/src/types/index.ts +26 -0
  204. package/src/types/storage.ts +3 -0
@@ -0,0 +1,214 @@
1
+ import { getIdTokenResult, getMultiFactorResolver, GoogleAuthProvider, onAuthStateChanged, PhoneAuthProvider, PhoneMultiFactorGenerator, sendPasswordResetEmail, signInWithCredential, signInWithCustomToken, signInWithEmailAndPassword, signOut } from '@react-native-firebase/auth';
2
+ import { GoogleSignin } from '@react-native-google-signin/google-signin';
3
+ const providerInitialized = {};
4
+ const getUserWithRole = async user => {
5
+ var _user$multiFactor;
6
+ const {
7
+ claims
8
+ } = await getIdTokenResult(user);
9
+ return {
10
+ ...user,
11
+ role: claims.role ?? 'user',
12
+ multiFactorVerified: !!((_user$multiFactor = user.multiFactor) !== null && _user$multiFactor !== void 0 && _user$multiFactor.enrolledFactors.length)
13
+ };
14
+ };
15
+ const toEnrollmentFactor = hint => {
16
+ if (hint.factorId === PhoneMultiFactorGenerator.FACTOR_ID) {
17
+ return {
18
+ type: 'phone',
19
+ phoneNumber: hint.phoneNumber,
20
+ enrollmentTime: hint.enrollmentTime,
21
+ displayName: hint.displayName,
22
+ uid: hint.uid
23
+ };
24
+ }
25
+ if (hint.factorId === 'totp') {
26
+ return {
27
+ type: 'totp',
28
+ enrollmentTime: hint.enrollmentTime,
29
+ displayName: hint.displayName,
30
+ uid: hint.uid
31
+ };
32
+ }
33
+ throw new Error('Unsupported factor type: ' + hint.factorId);
34
+ };
35
+ const toFirebaseFactor = factor => {
36
+ if (factor.type === 'phone') {
37
+ return {
38
+ factorId: PhoneMultiFactorGenerator.FACTOR_ID,
39
+ phoneNumber: factor.phoneNumber,
40
+ enrollmentTime: factor.enrollmentTime,
41
+ uid: factor.uid,
42
+ displayName: factor.displayName
43
+ };
44
+ }
45
+ if (factor.type === 'totp') {
46
+ return {
47
+ factorId: 'totp',
48
+ enrollmentTime: factor.enrollmentTime,
49
+ uid: factor.uid,
50
+ displayName: factor.displayName
51
+ };
52
+ }
53
+ throw new Error(`Unsupported factor type: ${factor.factorId ?? 'Missing factor type'}`);
54
+ };
55
+ const sendMultiFactorCode = async (auth, factor, resolver) => {
56
+ const sessionId = resolver.session;
57
+ // const verificationId = await new PhoneAuthProvider(auth).verifyPhoneNumber(phoneSignInFactor, sessionId)
58
+ if (factor.type === 'phone') {
59
+ const verificationId = await auth.verifyPhoneNumberWithMultiFactorInfo(toFirebaseFactor(factor), sessionId);
60
+ return {
61
+ verificationId,
62
+ factor,
63
+ resolver
64
+ };
65
+ }
66
+ throw new Error(`Unsupported factor type: ${factor.type ?? 'Missing factor type'}`);
67
+ };
68
+ const getEnrolledFactors = async (auth, error) => {
69
+ const resolver = getMultiFactorResolver(auth, error);
70
+ if (resolver.hints.length === 0) {
71
+ throw new Error('No multi-factor verification methods found, please enroll one on the website');
72
+ }
73
+ return {
74
+ enrollmentFactors: resolver.hints.map(toEnrollmentFactor),
75
+ multiFactorResolver: resolver
76
+ };
77
+ };
78
+ const verifyMultiFactor = async (verification, code) => {
79
+ const credential = await PhoneAuthProvider.credential(verification.verificationId, code);
80
+ const assertion = PhoneMultiFactorGenerator.assertion(credential);
81
+ const resolver = verification.resolver;
82
+ if (!resolver) throw new Error('Internal error signing in with two factor: resolver not found');
83
+ const userCredential = await resolver.resolveSignIn(assertion);
84
+ const user = userCredential.user;
85
+ if (!user) throw new Error('No user found');
86
+ return {
87
+ user: await getUserWithRole(user)
88
+ };
89
+ };
90
+ const handleSignInError = async error => {
91
+ if (error.code === 'auth/multi-factor-auth-required') {
92
+ return {
93
+ requestArgs: error
94
+ };
95
+ }
96
+ throw error;
97
+ };
98
+ const initializeProvider = async provider => {
99
+ if (providerInitialized[provider.name]) return;
100
+ switch (provider.name) {
101
+ case 'google':
102
+ if (!provider.webClientId) {
103
+ throw new Error('Google web client ID is required when using Google Auth. Refer to react native firebase docs for more information.');
104
+ }
105
+ await GoogleSignin.hasPlayServices({
106
+ showPlayServicesUpdateDialog: true
107
+ });
108
+ GoogleSignin.configure({
109
+ webClientId: provider.webClientId
110
+ });
111
+ break;
112
+ case 'email':
113
+ // Native SDK doesn't need special initialization
114
+ break;
115
+ default:
116
+ throw new Error(`Unsupported provider: ${provider.name}`);
117
+ }
118
+ providerInitialized[provider.name] = true;
119
+ };
120
+ const handleInitialLogin = async (userCredential, twoFactorRequired) => {
121
+ const user = userCredential.user;
122
+ if (!user) throw new Error('No user found');
123
+ if (twoFactorRequired) {
124
+ throw new Error('This app requires two factor authentication, please enroll a factor on the website and try again');
125
+ }
126
+ return {
127
+ user: await getUserWithRole(user)
128
+ };
129
+ };
130
+ const loginWithGoogle = async (auth, twoFactorRequired) => {
131
+ try {
132
+ var _signInResult$data;
133
+ const signInResult = await GoogleSignin.signIn();
134
+ const idToken = (_signInResult$data = signInResult.data) === null || _signInResult$data === void 0 ? void 0 : _signInResult$data.idToken;
135
+ if (!idToken) {
136
+ throw new Error('No ID token found');
137
+ }
138
+ const googleCredential = GoogleAuthProvider.credential(idToken);
139
+ const userCredential = await signInWithCredential(auth, googleCredential);
140
+ return await handleInitialLogin(userCredential, twoFactorRequired);
141
+ } catch (error) {
142
+ return await handleSignInError(error);
143
+ }
144
+ };
145
+ const getLoginWithPassword = (auth, twoFactorRequired) => async (provider, {
146
+ email,
147
+ password
148
+ }) => {
149
+ await initializeProvider(provider);
150
+ try {
151
+ const userCredential = await signInWithEmailAndPassword(auth, email, password);
152
+ return await handleInitialLogin(userCredential, twoFactorRequired);
153
+ } catch (error) {
154
+ return await handleSignInError(error);
155
+ }
156
+ };
157
+ const getLoginWithPopup = (auth, twoFactorRequired) => async provider => {
158
+ await initializeProvider(provider);
159
+ switch (provider.name) {
160
+ case 'google':
161
+ return loginWithGoogle(auth, twoFactorRequired);
162
+ default:
163
+ throw new Error(`Unsupported provider: ${provider.name}`);
164
+ }
165
+ };
166
+ const getLoginWithToken = (auth, twoFactorRequired) => async (provider, token) => {
167
+ await initializeProvider(provider);
168
+ try {
169
+ const userCredential = await signInWithCustomToken(auth, token);
170
+ return await handleInitialLogin(userCredential, twoFactorRequired);
171
+ } catch (error) {
172
+ return await handleSignInError(error);
173
+ }
174
+ };
175
+ const resetPassword = async (auth, provider, usernameOrEmail) => {
176
+ await initializeProvider(provider);
177
+ await sendPasswordResetEmail(auth, usernameOrEmail);
178
+ };
179
+ export const getFirebaseAuthAdapter = (auth, twoFactorRequired) => ({
180
+ twoFactorRequired,
181
+ getCurrentUser: async () => {
182
+ const user = auth.currentUser;
183
+ if (!user) return null;
184
+ return getUserWithRole(user);
185
+ },
186
+ loginWithPassword: getLoginWithPassword(auth, twoFactorRequired),
187
+ loginWithPopup: getLoginWithPopup(auth, twoFactorRequired),
188
+ loginWithToken: getLoginWithToken(auth, twoFactorRequired),
189
+ resetPassword: (...args) => {
190
+ return resetPassword(auth, ...args);
191
+ },
192
+ verifyMultiFactor,
193
+ sendMultiFactorCode: (...args) => {
194
+ return sendMultiFactorCode(auth, ...args);
195
+ },
196
+ getEnrolledFactors: (...args) => {
197
+ return getEnrolledFactors(auth, ...args);
198
+ },
199
+ logout: async () => {
200
+ await signOut(auth);
201
+ },
202
+ subscribeToUser: callback => {
203
+ return onAuthStateChanged(auth, user => {
204
+ if (!user) {
205
+ callback(null);
206
+ return;
207
+ }
208
+ getUserWithRole(user).then(result => {
209
+ callback(result);
210
+ });
211
+ });
212
+ }
213
+ });
214
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getIdTokenResult","getMultiFactorResolver","GoogleAuthProvider","onAuthStateChanged","PhoneAuthProvider","PhoneMultiFactorGenerator","sendPasswordResetEmail","signInWithCredential","signInWithCustomToken","signInWithEmailAndPassword","signOut","GoogleSignin","providerInitialized","getUserWithRole","user","_user$multiFactor","claims","role","multiFactorVerified","multiFactor","enrolledFactors","length","toEnrollmentFactor","hint","factorId","FACTOR_ID","type","phoneNumber","enrollmentTime","displayName","uid","Error","toFirebaseFactor","factor","sendMultiFactorCode","auth","resolver","sessionId","session","verificationId","verifyPhoneNumberWithMultiFactorInfo","getEnrolledFactors","error","hints","enrollmentFactors","map","multiFactorResolver","verifyMultiFactor","verification","code","credential","assertion","userCredential","resolveSignIn","handleSignInError","requestArgs","initializeProvider","provider","name","webClientId","hasPlayServices","showPlayServicesUpdateDialog","configure","handleInitialLogin","twoFactorRequired","loginWithGoogle","_signInResult$data","signInResult","signIn","idToken","data","googleCredential","getLoginWithPassword","email","password","getLoginWithPopup","getLoginWithToken","token","resetPassword","usernameOrEmail","getFirebaseAuthAdapter","getCurrentUser","currentUser","loginWithPassword","loginWithPopup","loginWithToken","args","logout","subscribeToUser","callback","then","result"],"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":"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","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,3 @@
1
+ export const getThirdPartyAuthUrl = functions => functions.httpsCallable('getThirdPartyAuthUrl');
2
+ export const getThirdPartyAuthToken = functions => functions.httpsCallable('getThirdPartyAuthToken');
3
+ //# sourceMappingURL=functions.js.map
@@ -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,2 @@
1
+ export * from './functions';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["auth/index.ts"],"mappings":"AAAA,cAAc,aAAa","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ import { LoadingButton, Txt } from '@chem-po/react-native';
2
+ import React from 'react';
3
+ import { StyleSheet, TextInput, View } from 'react-native';
4
+ import { useAuthenticatorVerify } from '../hooks/useAuthenticatorVerify';
5
+ export const AuthenticatorVerify = () => {
6
+ const {
7
+ code,
8
+ setCode,
9
+ verifying,
10
+ error,
11
+ handleVerify
12
+ } = useAuthenticatorVerify();
13
+ return /*#__PURE__*/React.createElement(View, {
14
+ style: styles.wrapper
15
+ }, /*#__PURE__*/React.createElement(View, {
16
+ style: styles.container
17
+ }, /*#__PURE__*/React.createElement(Txt, {
18
+ style: styles.text
19
+ }, "Enter the code on your authenticator app:"), /*#__PURE__*/React.createElement(TextInput, {
20
+ style: styles.input,
21
+ value: code,
22
+ onChangeText: setCode,
23
+ placeholder: "Verification Code",
24
+ keyboardType: "number-pad",
25
+ maxLength: 6,
26
+ autoFocus: true
27
+ }), error ? /*#__PURE__*/React.createElement(Txt, {
28
+ style: styles.errorText
29
+ }, error) : null, /*#__PURE__*/React.createElement(LoadingButton, {
30
+ style: styles.button,
31
+ onPress: handleVerify,
32
+ disabled: verifying
33
+ }, /*#__PURE__*/React.createElement(Txt, {
34
+ style: styles.buttonText
35
+ }, verifying ? 'Verifying...' : 'Verify'))));
36
+ };
37
+ const styles = StyleSheet.create({
38
+ wrapper: {
39
+ flex: 1,
40
+ padding: 16
41
+ },
42
+ container: {
43
+ flex: 1,
44
+ alignItems: 'center',
45
+ justifyContent: 'center',
46
+ gap: 16
47
+ },
48
+ text: {
49
+ fontSize: 16,
50
+ textAlign: 'center',
51
+ marginBottom: 8
52
+ },
53
+ input: {
54
+ width: '100%',
55
+ height: 48,
56
+ borderWidth: 1,
57
+ borderColor: '#ccc',
58
+ borderRadius: 8,
59
+ paddingHorizontal: 16,
60
+ fontSize: 16,
61
+ marginBottom: 8
62
+ },
63
+ button: {
64
+ backgroundColor: '#007AFF',
65
+ paddingHorizontal: 24,
66
+ paddingVertical: 12,
67
+ borderRadius: 8,
68
+ minWidth: 200,
69
+ alignItems: 'center'
70
+ },
71
+ buttonText: {
72
+ color: 'white',
73
+ fontSize: 16,
74
+ fontWeight: '600'
75
+ },
76
+ errorText: {
77
+ color: 'red',
78
+ fontSize: 14,
79
+ marginBottom: 8
80
+ }
81
+ });
82
+ //# sourceMappingURL=AuthenticatorVerify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LoadingButton","Txt","React","StyleSheet","TextInput","View","useAuthenticatorVerify","AuthenticatorVerify","code","setCode","verifying","error","handleVerify","createElement","style","styles","wrapper","container","text","input","value","onChangeText","placeholder","keyboardType","maxLength","autoFocus","errorText","button","onPress","disabled","buttonText","create","flex","padding","alignItems","justifyContent","gap","fontSize","textAlign","marginBottom","width","height","borderWidth","borderColor","borderRadius","paddingHorizontal","backgroundColor","paddingVertical","minWidth","color","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/AuthenticatorVerify.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,GAAG,QAAQ,uBAAuB;AAC1D,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,SAAS,EAAEC,IAAI,QAAQ,cAAc;AAC1D,SAASC,sBAAsB,QAAQ,iCAAiC;AAExE,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;EACvC,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAEC,SAAS;IAAEC,KAAK;IAAEC;EAAa,CAAC,GAAGN,sBAAsB,CAAC,CAAC;EAElF,oBACEJ,KAAA,CAAAW,aAAA,CAACR,IAAI;IAACS,KAAK,EAAEC,MAAM,CAACC;EAAQ,gBAC1Bd,KAAA,CAAAW,aAAA,CAACR,IAAI;IAACS,KAAK,EAAEC,MAAM,CAACE;EAAU,gBAC5Bf,KAAA,CAAAW,aAAA,CAACZ,GAAG;IAACa,KAAK,EAAEC,MAAM,CAACG;EAAK,GAAC,2CAA8C,CAAC,eACxEhB,KAAA,CAAAW,aAAA,CAACT,SAAS;IACRU,KAAK,EAAEC,MAAM,CAACI,KAAM;IACpBC,KAAK,EAAEZ,IAAK;IACZa,YAAY,EAAEZ,OAAQ;IACtBa,WAAW,EAAC,mBAAmB;IAC/BC,YAAY,EAAC,YAAY;IACzBC,SAAS,EAAE,CAAE;IACbC,SAAS;EAAA,CACV,CAAC,EACDd,KAAK,gBAAGT,KAAA,CAAAW,aAAA,CAACZ,GAAG;IAACa,KAAK,EAAEC,MAAM,CAACW;EAAU,GAAEf,KAAW,CAAC,GAAG,IAAI,eAC3DT,KAAA,CAAAW,aAAA,CAACb,aAAa;IAACc,KAAK,EAAEC,MAAM,CAACY,MAAO;IAACC,OAAO,EAAEhB,YAAa;IAACiB,QAAQ,EAAEnB;EAAU,gBAC9ER,KAAA,CAAAW,aAAA,CAACZ,GAAG;IAACa,KAAK,EAAEC,MAAM,CAACe;EAAW,GAAEpB,SAAS,GAAG,cAAc,GAAG,QAAc,CAC9D,CACX,CACF,CAAC;AAEX,CAAC;AAED,MAAMK,MAAM,GAAGZ,UAAU,CAAC4B,MAAM,CAAC;EAC/Bf,OAAO,EAAE;IACPgB,IAAI,EAAE,CAAC;IACPC,OAAO,EAAE;EACX,CAAC;EACDhB,SAAS,EAAE;IACTe,IAAI,EAAE,CAAC;IACPE,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,GAAG,EAAE;EACP,CAAC;EACDlB,IAAI,EAAE;IACJmB,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBC,YAAY,EAAE;EAChB,CAAC;EACDpB,KAAK,EAAE;IACLqB,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,EAAE;IACVC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE,CAAC;IACfC,iBAAiB,EAAE,EAAE;IACrBR,QAAQ,EAAE,EAAE;IACZE,YAAY,EAAE;EAChB,CAAC;EACDZ,MAAM,EAAE;IACNmB,eAAe,EAAE,SAAS;IAC1BD,iBAAiB,EAAE,EAAE;IACrBE,eAAe,EAAE,EAAE;IACnBH,YAAY,EAAE,CAAC;IACfI,QAAQ,EAAE,GAAG;IACbd,UAAU,EAAE;EACd,CAAC;EACDJ,UAAU,EAAE;IACVmB,KAAK,EAAE,OAAO;IACdZ,QAAQ,EAAE,EAAE;IACZa,UAAU,EAAE;EACd,CAAC;EACDxB,SAAS,EAAE;IACTuB,KAAK,EAAE,KAAK;IACZZ,QAAQ,EAAE,EAAE;IACZE,YAAY,EAAE;EAChB;AACF,CAAC,CAAC","ignoreList":[]}