From 833d1b34b7b0e7bf2c5cf6aa1f4ee1c517a0cabc Mon Sep 17 00:00:00 2001 From: Marco Crapts Date: Mon, 22 May 2023 09:08:06 +0200 Subject: [PATCH] try catch json parse --- src/composables/useNotes.ts | 42 +++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/src/composables/useNotes.ts b/src/composables/useNotes.ts index e912973..231dced 100644 --- a/src/composables/useNotes.ts +++ b/src/composables/useNotes.ts @@ -6,21 +6,33 @@ import { getAllMatches } from '@/utils/helpers' import { initialized, user } from '@/composables/useFirebase' import shortid from 'shortid' -const notesSource = computed<'firebase' | 'local' | null>(() => { - if (!initialized.value) return null - return user.value ? 'firebase' : 'local' +const notesSources = computed(() => ({ + local: true, + firebase: initialized.value && user.value +})) + +type notesSourceValues = keyof typeof notesSources.value | null + +const activeNotesSource = ref(null) + +watchEffect(() => { + const getSource = (): notesSourceValues => { + if (!initialized.value) return null + return user.value ? 'firebase' : 'local' + } + activeNotesSource.value = getSource() }) const baseNotes = ref<{ [noteId: string]: BaseNote }>({}) watch( baseNotes, () => { - console.log(`Sync base notes with ${notesSource.value}`, baseNotes.value) - if (!notesSource.value) return - if (notesSource.value === 'local') { + console.log(`Sync base notes with ${activeNotesSource.value}`, baseNotes.value) + if (!activeNotesSource.value) return + if (activeNotesSource.value === 'local') { console.log('sync with local') localStorage.setItem('notes', JSON.stringify(baseNotes.value)) - } else if (notesSource.value === 'firebase') { + } else if (activeNotesSource.value === 'firebase') { console.log('sync with firebase') } }, @@ -177,14 +189,18 @@ export function getNoteReferences(note: Note) { } watch( - notesSource, + activeNotesSource, () => { - if (!notesSource.value) return + if (!activeNotesSource.value) return baseNotes.value = {} - if (notesSource.value === 'local') { - const localNotes = JSON.parse(localStorage.getItem('notes') || '{}') - baseNotes.value = localNotes - } else if (notesSource.value === 'firebase') { + if (activeNotesSource.value === 'local') { + try { + const localNotes = JSON.parse(localStorage.getItem('notes') || '{}') + baseNotes.value = localNotes + } catch (error) { + console.log(error) + } + } else if (activeNotesSource.value === 'firebase') { console.log('get notes from firebase') } if (Object.entries(baseNotes.value).length === 0) {