Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Commit bb40c6b

Browse files
Merge pull request #1022 from deckgo/fix-clean-firestore-delete
fix: offline clean firestore delete
2 parents 0a6c05c + cb05c28 commit bb40c6b

File tree

4 files changed

+37
-5
lines changed

4 files changed

+37
-5
lines changed

studio/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# 3.2.0 (2020-11-28)
2+
3+
### Fix
4+
5+
- offline header and footer if not defined
6+
- offline firestore delete fields comparison
7+
18
# 3.1.0 (2020-11-22)
29

310
### Features

studio/src/app/services/data/deck/deck.offline.service.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ export class DeckOfflineService {
4646
deck.data.background = null;
4747
}
4848

49+
if (deck.data.header && FirestoreUtils.shouldAttributeBeCleaned(deck.data.header)) {
50+
deck.data.header = null;
51+
}
52+
53+
if (deck.data.footer && FirestoreUtils.shouldAttributeBeCleaned(deck.data.footer)) {
54+
deck.data.footer = null;
55+
}
56+
4957
deck.data.attributes = (await OfflineUtils.cleanAttributes(deck.data.attributes)) as DeckAttributes;
5058

5159
await set(`/decks/${deck.id}`, deck);

studio/src/app/services/editor/offline/offline.service.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,14 @@ export class OfflineService {
357357
deckStore.state.deck.data.background = null;
358358
}
359359

360+
if (deckStore.state.deck.data.header && FirestoreUtils.shouldAttributeBeCleaned(deckStore.state.deck.data.header)) {
361+
deckStore.state.deck.data.header = null;
362+
}
363+
364+
if (deckStore.state.deck.data.footer && FirestoreUtils.shouldAttributeBeCleaned(deckStore.state.deck.data.footer)) {
365+
deckStore.state.deck.data.footer = null;
366+
}
367+
360368
await set(`/decks/${deckStore.state.deck.id}`, deckStore.state.deck);
361369

362370
this.progress(0.5);
@@ -691,6 +699,16 @@ export class OfflineService {
691699
deck.data.background = firebase.firestore.FieldValue.delete();
692700
}
693701

702+
if (deck.data.header === null) {
703+
// @ts-ignore
704+
deck.data.header = firebase.firestore.FieldValue.delete();
705+
}
706+
707+
if (deck.data.footer === null) {
708+
// @ts-ignore
709+
deck.data.footer = firebase.firestore.FieldValue.delete();
710+
}
711+
694712
const persistedDeck: Deck = await this.deckOnlineService.update(deck);
695713

696714
await del(`/decks/${deck.id}`);

studio/src/app/utils/editor/firestore.utils.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import firebase from 'firebase/app';
2+
import 'firebase/firestore';
3+
14
export class FirestoreUtils {
25
static filterDelete<T>(obj: T, replaceWithNull: boolean = false): T {
36
if (typeof obj !== 'object' || Array.isArray(obj)) {
@@ -30,10 +33,6 @@ export class FirestoreUtils {
3033
return false;
3134
}
3235

33-
const firestoreDelete = Object.keys(attr).find((key: string) => {
34-
return attr[key] === 'FieldValue.delete';
35-
});
36-
37-
return firestoreDelete !== null && firestoreDelete !== undefined;
36+
return JSON.stringify(attr) === JSON.stringify(firebase.firestore.FieldValue.delete());
3837
}
3938
}

0 commit comments

Comments
 (0)