store settings in localstorage

This commit is contained in:
2023-05-24 23:30:28 +02:00
parent d6480a7a37
commit d62444f65e
4 changed files with 49 additions and 4 deletions

View File

@@ -7,20 +7,34 @@ import { decryptNotes, encryptionKey } from '@/composables/useEncryption'
import { defaultNotes } from '@/utils/defaultNotes'
import { mdToHtml } from '@/utils/markdown'
import { getAllMatches } from '@/utils/helpers'
import { preferredNotesSource } from '@/composables/useSettings'
export const notesSources = computed(() => ({
local: true,
firebase: initialized.value && user.value
}))
type notesSourceValues = keyof typeof notesSources.value | null
export const availableNotesSources = computed(() =>
Object.entries(notesSources.value)
.filter(([, enabled]) => enabled)
.map(([source]) => source)
)
export type notesSourceValues = keyof typeof notesSources.value | null
export const activeNotesSource = ref<notesSourceValues>(null)
watchEffect(() => {
const getSource = (): notesSourceValues => {
if (!initialized.value) return null
return user.value ? 'firebase' : 'local'
if (
preferredNotesSource.value &&
availableNotesSources.value.includes(preferredNotesSource.value)
) {
return preferredNotesSource.value
} else {
return user.value ? 'firebase' : 'local'
}
}
activeNotesSource.value = getSource()
})

View File

@@ -0,0 +1,24 @@
import type { notesSourceValues } from '@/composables/useNotes'
interface Settings {
preferredNotesSource: notesSourceValues
}
export const preferredNotesSource = ref<notesSourceValues>(null)
const updateSettings = () => {
const settings: Settings = {
preferredNotesSource: preferredNotesSource.value
}
localStorage.setItem('settings', JSON.stringify(settings))
}
export const initializeSettings = () => {
watch([preferredNotesSource], () => updateSettings())
try {
const settings: Settings = JSON.parse(localStorage.getItem('settings') || '{}')
preferredNotesSource.value = settings.preferredNotesSource
} catch (error) {
console.error(error)
}
}