Skip to content

Commit cb3c5d1

Browse files
committed
feat(common): update firebase version
1 parent 63f9dd9 commit cb3c5d1

File tree

3 files changed

+1788
-856
lines changed

3 files changed

+1788
-856
lines changed

lib/dbs/firebase.ts

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
1-
import firebase from 'firebase/app';
2-
import 'firebase/firestore';
1+
import { initializeApp } from 'firebase/app';
2+
import { deleteDoc, doc, getDoc, getFirestore, setDoc, updateDoc } from 'firebase/firestore';
33
import { SessionProps, UserData } from '../../types';
44

55
// Firebase config and initialization
66
// Prod applications might use config file
77
const { FIRE_API_KEY, FIRE_DOMAIN, FIRE_PROJECT_ID } = process.env;
8-
98
const firebaseConfig = {
109
apiKey: FIRE_API_KEY,
1110
authDomain: FIRE_DOMAIN,
1211
projectId: FIRE_PROJECT_ID,
1312
};
14-
15-
if (!firebase.apps.length) {
16-
// Initialize Firebase
17-
firebase.initializeApp(firebaseConfig);
18-
} else {
19-
firebase.app();
20-
}
21-
22-
const db = firebase.firestore();
13+
const app = initializeApp(firebaseConfig);
14+
const db = getFirestore(app);
2315

2416
// Firestore data management functions
2517

@@ -28,14 +20,14 @@ export async function setUser({ user }: SessionProps) {
2820
if (!user) return null;
2921

3022
const { email, id, username } = user;
31-
const ref = db.collection('users').doc(String(id));
23+
const ref = doc(db, 'users', String(id));
3224
const data: UserData = { email };
3325

3426
if (username) {
3527
data.username = username;
3628
}
3729

38-
await ref.set(data, { merge: true });
30+
await setDoc(ref, data, { merge: true });
3931
}
4032

4133
export async function setStore(session: SessionProps) {
@@ -49,10 +41,10 @@ export async function setStore(session: SessionProps) {
4941
if (!accessToken || !scope) return null;
5042

5143
const storeHash = context?.split('/')[1] || '';
52-
const ref = db.collection('store').doc(storeHash);
44+
const ref = doc(db, 'store', storeHash);
5345
const data = { accessToken, adminId: id, scope };
5446

55-
await ref.set(data);
47+
await setDoc(ref, data);
5648
}
5749

5850
// User management for multi-user apps
@@ -69,24 +61,23 @@ export async function setStoreUser(session: SessionProps) {
6961

7062
const contextString = context ?? sub;
7163
const storeHash = contextString?.split('/')[1] || '';
72-
const collection = db.collection('storeUsers');
7364
const documentId = `${userId}_${storeHash}`; // users can belong to multiple stores
74-
const ref = collection.doc(documentId);
75-
const storeUser = await ref.get();
65+
const ref = doc(db, 'storeUsers', documentId);
66+
const storeUser = await getDoc(ref);
7667

7768
// Set admin (store owner) if installing/ updating the app
7869
// https://developer.bigcommerce.com/api-docs/apps/guide/users
7970
if (accessToken) {
8071
// Create a new admin user if none exists
81-
if (!storeUser?.exists) {
82-
await ref.set({ storeHash, isAdmin: true });
72+
if (!storeUser.exists()) {
73+
await setDoc(ref, { storeHash, isAdmin: true });
8374
} else if (!storeUser.data()?.isAdmin) {
84-
await ref.update({ isAdmin: true });
75+
await updateDoc(ref, { isAdmin: true });
8576
}
8677
} else {
8778
// Create a new user if it doesn't exist
88-
if (!storeUser?.exists) {
89-
await ref.set({ storeHash, isAdmin: owner.id === userId }); // isAdmin true if owner == user
79+
if (!storeUser.exists()) {
80+
await setDoc(ref, { storeHash, isAdmin: owner.id === userId }); // isAdmin true if owner == user
9081
}
9182
}
9283
}
@@ -95,29 +86,29 @@ export async function deleteUser({ context, user, sub }: SessionProps) {
9586
const contextString = context ?? sub;
9687
const storeHash = contextString?.split('/')[1] || '';
9788
const docId = `${user?.id}_${storeHash}`;
98-
const storeUsersRef = db.collection('storeUsers').doc(docId);
89+
const ref = doc(db, 'storeUsers', docId);
9990

100-
await storeUsersRef.delete();
91+
await deleteDoc(ref);
10192
}
10293

10394
export async function hasStoreUser(storeHash: string, userId: string) {
10495
if (!storeHash || !userId) return false;
10596

10697
const docId = `${userId}_${storeHash}`;
107-
const userDoc = await db.collection('storeUsers').doc(docId).get();
98+
const userDoc = await getDoc(doc(db, 'storeUsers', docId));
10899

109-
return userDoc?.exists;
100+
return userDoc.exists();
110101
}
111102

112103
export async function getStoreToken(storeHash: string) {
113104
if (!storeHash) return null;
114-
const storeDoc = await db.collection('store').doc(storeHash).get();
105+
const storeDoc = await getDoc(doc(db, 'store', storeHash));
115106

116-
return storeDoc?.exists ? storeDoc.data()?.accessToken : null;
107+
return storeDoc.data()?.accessToken ?? null;
117108
}
118109

119110
export async function deleteStore({ store_hash: storeHash }: SessionProps) {
120-
const ref = db.collection('store').doc(storeHash);
111+
const ref = doc(db, 'store', storeHash);
121112

122-
await ref.delete();
113+
await deleteDoc(ref);
123114
}

0 commit comments

Comments
 (0)