1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-07-26 08:11:17 +02:00

update firebase to 10

This commit is contained in:
Kushagra Gour
2024-02-20 12:55:36 +05:30
parent 24cdf7ef7c
commit 2ea0090564
8 changed files with 3154 additions and 688 deletions

View File

@@ -1,16 +1,27 @@
import { deferred } from './deferred';
import { log } from 'util';
import firebase from 'firebase/app';
import { log } from './utils';
import {
collection,
deleteField,
where,
getDoc,
query,
setDoc,
writeBatch,
doc,
deleteDoc,
updateDoc,
getDocs
} from 'firebase/firestore';
export const itemService = {
async getItem(id) {
var remoteDb = await window.db.getDb();
return remoteDb
.doc(`items/${id}`)
.get()
return getDoc(doc(remoteDb, `items/${id}`))
.then(doc => {
return doc.data();
});
})
.catch(error => log(error));
},
/**
@@ -48,22 +59,24 @@ export const itemService = {
if (window.user && !shouldFetchLocally) {
var remoteDb = await window.db.getDb();
remoteDb
.collection('items')
.where('createdBy', '==', window.user.uid)
.onSnapshot(
function(querySnapshot) {
querySnapshot.forEach(function(doc) {
items.push(doc.data());
});
log('Items fetched in ', Date.now() - t, 'ms');
// console.log(query, window.user.uid);
// d.resolve([]);
d.resolve(items);
},
function() {
d.resolve([]);
}
);
const q = query(
collection(remoteDb, 'items'),
where('createdBy', '==', window.user.uid)
);
getDocs(q)
.then(querySnapshot => {
querySnapshot.forEach(doc => {
items.push(doc.data());
});
log(`${items.length} items fetched in `, Date.now() - t, 'ms');
d.resolve(items);
})
.catch(() => {
d.resolve([]);
});
} else {
for (let i = 0; i < itemIds.length; i++) {
/* eslint-disable no-loop-func */
@@ -83,7 +96,7 @@ export const itemService = {
async setUser() {
const remoteDb = await window.db.getDb();
return remoteDb.doc(`users/${window.user.uid}`).set({
return setDoc(doc(remoteDb, `users/${window.user.uid}`), {
items: {}
});
},
@@ -113,14 +126,11 @@ export const itemService = {
// LOGGED IN
var remoteDb = await window.db.getDb();
item.createdBy = window.user.uid;
remoteDb
.collection('items')
.doc(id)
.set(item, {
merge: true
})
.then(arg => {
log('Document written', arg);
setDoc(doc(remoteDb, `items/${id}`), item, {
merge: true
})
.then(() => {
log(`Document written`);
d.resolve();
})
.catch(d.reject);
@@ -147,7 +157,7 @@ export const itemService = {
{
items: {}
},
function(result) {
function (result) {
/* eslint-disable guard-for-in */
for (var id in items) {
result.items[id] = true;
@@ -160,12 +170,15 @@ export const itemService = {
);
} else {
window.db.getDb().then(remoteDb => {
const batch = remoteDb.batch();
const batch = writeBatch(remoteDb);
/* eslint-disable guard-for-in */
for (var id in items) {
items[id].createdBy = window.user.uid;
batch.set(remoteDb.doc(`items/${id}`), items[id]);
batch.update(remoteDb.doc(`users/${window.user.uid}`), {
batch.set(doc(remoteDb, `items/${id}`), items[id]);
batch.update(doc(remoteDb, `users/${window.user.uid}`), {
[`items.${id}`]: true
});
batch.update(doc(remoteDb, `users/${window.user.uid}`), {
[`items.${id}`]: true
});
// Set these items on our cached user object too
@@ -188,12 +201,9 @@ export const itemService = {
}
const remoteDb = await window.db.getDb();
log(`Starting to save item ${id}`);
return remoteDb
.collection('items')
.doc(id)
.delete()
.then(arg => {
log('Document removed', arg);
return deleteDoc(doc(remoteDb, `items/${id}`))
.then(() => {
log('Document removed');
})
.catch(error => log(error));
},
@@ -205,7 +215,7 @@ export const itemService = {
{
items: {}
},
function(result) {
function (result) {
result.items[itemId] = true;
window.db.local.set({
items: result.items
@@ -214,12 +224,9 @@ export const itemService = {
);
}
const remoteDb = await window.db.getDb();
return remoteDb
.collection('users')
.doc(window.user.uid)
.update({
[`items.${itemId}`]: true
})
return updateDoc(doc(remoteDb, `users/${window.user.uid}`), {
[`items.${itemId}`]: true
})
.then(arg => {
log(`Item ${itemId} set for user`, arg);
window.user.items = window.user.items || {};
@@ -235,7 +242,7 @@ export const itemService = {
{
items: {}
},
function(result) {
function (result) {
delete result.items[itemId];
window.db.local.set({
items: result.items
@@ -244,15 +251,12 @@ export const itemService = {
);
}
const remoteDb = await window.db.getDb();
return remoteDb
.collection('users')
.doc(window.user.uid)
.update({
[`items.${itemId}`]: firebase.firestore.FieldValue.delete()
})
return updateDoc(doc(remoteDb, `users/${window.user.uid}`), {
[`items.${itemId}`]: deleteField()
})
.then(arg => {
delete window.user.items[itemId];
log(`Item ${itemId} unset for user`, arg);
delete window.user.items[itemId];
})
.catch(error => log(error));
},