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:
@@ -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));
|
||||
},
|
||||
|
Reference in New Issue
Block a user