From b8e053617012488f962eb1ed075d587b3c0c9678 Mon Sep 17 00:00:00 2001 From: peterpeterparker Date: Sat, 28 Nov 2020 14:11:09 +0100 Subject: [PATCH 1/3] fix: compare Firestore delete --- studio/src/app/utils/editor/firestore.utils.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/studio/src/app/utils/editor/firestore.utils.tsx b/studio/src/app/utils/editor/firestore.utils.tsx index cb96fa023..8edc0f8e0 100644 --- a/studio/src/app/utils/editor/firestore.utils.tsx +++ b/studio/src/app/utils/editor/firestore.utils.tsx @@ -1,3 +1,6 @@ +import firebase from 'firebase/app'; +import 'firebase/firestore'; + export class FirestoreUtils { static filterDelete(obj: T, replaceWithNull: boolean = false): T { if (typeof obj !== 'object' || Array.isArray(obj)) { @@ -30,10 +33,6 @@ export class FirestoreUtils { return false; } - const firestoreDelete = Object.keys(attr).find((key: string) => { - return attr[key] === 'FieldValue.delete'; - }); - - return firestoreDelete !== null && firestoreDelete !== undefined; + return JSON.stringify(attr) === JSON.stringify(firebase.firestore.FieldValue.delete()); } } From c6f2d498f215e89556f4e80c4918818f5f38cf8e Mon Sep 17 00:00:00 2001 From: peterpeterparker Date: Sat, 28 Nov 2020 14:15:36 +0100 Subject: [PATCH 2/3] fix: offline header and footer --- .../data/deck/deck.offline.service.tsx | 8 ++++++++ .../editor/offline/offline.service.tsx | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/studio/src/app/services/data/deck/deck.offline.service.tsx b/studio/src/app/services/data/deck/deck.offline.service.tsx index 4fb73158e..fa3c9e30d 100644 --- a/studio/src/app/services/data/deck/deck.offline.service.tsx +++ b/studio/src/app/services/data/deck/deck.offline.service.tsx @@ -46,6 +46,14 @@ export class DeckOfflineService { deck.data.background = null; } + if (deck.data.header && FirestoreUtils.shouldAttributeBeCleaned(deck.data.header)) { + deck.data.header = null; + } + + if (deck.data.footer && FirestoreUtils.shouldAttributeBeCleaned(deck.data.footer)) { + deck.data.footer = null; + } + deck.data.attributes = (await OfflineUtils.cleanAttributes(deck.data.attributes)) as DeckAttributes; await set(`/decks/${deck.id}`, deck); diff --git a/studio/src/app/services/editor/offline/offline.service.tsx b/studio/src/app/services/editor/offline/offline.service.tsx index 650f9a1e7..f7abaacbd 100644 --- a/studio/src/app/services/editor/offline/offline.service.tsx +++ b/studio/src/app/services/editor/offline/offline.service.tsx @@ -357,6 +357,14 @@ export class OfflineService { deckStore.state.deck.data.background = null; } + if (deckStore.state.deck.data.header && FirestoreUtils.shouldAttributeBeCleaned(deckStore.state.deck.data.header)) { + deckStore.state.deck.data.header = null; + } + + if (deckStore.state.deck.data.footer && FirestoreUtils.shouldAttributeBeCleaned(deckStore.state.deck.data.footer)) { + deckStore.state.deck.data.footer = null; + } + await set(`/decks/${deckStore.state.deck.id}`, deckStore.state.deck); this.progress(0.5); @@ -691,6 +699,16 @@ export class OfflineService { deck.data.background = firebase.firestore.FieldValue.delete(); } + if (deck.data.header === null) { + // @ts-ignore + deck.data.header = firebase.firestore.FieldValue.delete(); + } + + if (deck.data.footer === null) { + // @ts-ignore + deck.data.footer = firebase.firestore.FieldValue.delete(); + } + const persistedDeck: Deck = await this.deckOnlineService.update(deck); await del(`/decks/${deck.id}`); From cb05c2835ac6480fe78e0acc0b84a4fbb9c1329a Mon Sep 17 00:00:00 2001 From: peterpeterparker Date: Sat, 28 Nov 2020 14:16:43 +0100 Subject: [PATCH 3/3] docs: firestore changes --- studio/CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/studio/CHANGELOG.md b/studio/CHANGELOG.md index 28630020c..23e475df0 100644 --- a/studio/CHANGELOG.md +++ b/studio/CHANGELOG.md @@ -1,3 +1,10 @@ +# 3.2.0 (2020-11-28) + +### Fix + +- offline header and footer if not defined +- offline firestore delete fields comparison + # 3.1.0 (2020-11-22) ### Features