From 4a8941ea0f261a312aacda4157fc73ca47efc0cb Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Fri, 4 Sep 2020 17:20:06 -0400 Subject: [PATCH] Add clear bookmark changes button --- app/src/composables/use-preset/use-preset.ts | 18 +++++++++++++----- app/src/modules/collections/routes/browse.vue | 14 ++++++++++++-- app/src/stores/presets.ts | 15 ++++++++++++++- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/app/src/composables/use-preset/use-preset.ts b/app/src/composables/use-preset/use-preset.ts index 24b7e149b3..bef17c2505 100644 --- a/app/src/composables/use-preset/use-preset.ts +++ b/app/src/composables/use-preset/use-preset.ts @@ -9,7 +9,7 @@ export function usePreset(collection: Ref, bookmark: Ref const presetsStore = usePresetsStore(); const userStore = useUserStore(); - const saving = ref(false); + const busy = ref(false); const { info: collectionInfo } = useCollection(collection); @@ -25,19 +25,26 @@ export function usePreset(collection: Ref, bookmark: Ref const bookmarkIsMine = computed(() => localPreset.value.user === userStore.state.currentUser!.id); const savePreset = async (preset?: Partial) => { - saving.value = true; + busy.value = true; const updatedValues = await presetsStore.savePreset(preset ? preset : localPreset.value); initLocalPreset(); localPreset.value.id = updatedValues.id; - saving.value = false; + busy.value = false; return updatedValues; }; - const saveLocal = async () => { + const saveLocal = () => { presetsStore.saveLocal(localPreset.value); initLocalPreset(); }; + const clearLocalSave = async () => { + busy.value = true; + await presetsStore.clearLocalSave(localPreset.value); + initLocalPreset(); + busy.value = false; + }; + const autoSave = debounce(async () => { if (!bookmark || bookmark.value === null) { savePreset(); @@ -159,7 +166,8 @@ export function usePreset(collection: Ref, bookmark: Ref resetPreset, bookmarkSaved, bookmarkIsMine, - saving, + busy, + clearLocalSave, }; async function resetPreset() { diff --git a/app/src/modules/collections/routes/browse.vue b/app/src/modules/collections/routes/browse.vue index 68276244ae..a108283db1 100644 --- a/app/src/modules/collections/routes/browse.vue +++ b/app/src/modules/collections/routes/browse.vue @@ -44,6 +44,13 @@ + + @@ -287,7 +294,8 @@ export default defineComponent({ resetPreset, bookmarkSaved, bookmarkIsMine, - saving: bookmarkSaving, + busy: bookmarkSaving, + clearLocalSave, } = usePreset(collection, bookmarkID); const { @@ -359,6 +367,7 @@ export default defineComponent({ bookmarkSaved, bookmarkIsMine, bookmarkSaving, + clearLocalSave, }; function useBreadcrumb() { @@ -587,7 +596,8 @@ export default defineComponent({ } .add, - .save { + .save, + .clear { color: var(--foreground-subdued); transition: color var(--fast) var(--transition); diff --git a/app/src/stores/presets.ts b/app/src/stores/presets.ts index d00d3e40cc..b8a5b0cce5 100644 --- a/app/src/stores/presets.ts +++ b/app/src/stores/presets.ts @@ -168,7 +168,7 @@ export const usePresetsStore = createStore({ } }, - async saveLocal(updatedPreset: Preset) { + saveLocal(updatedPreset: Preset) { this.state.collectionPresets = this.state.collectionPresets.map((preset) => { if (preset.id === updatedPreset.id) { return { @@ -180,5 +180,18 @@ export const usePresetsStore = createStore({ return preset; }); }, + + async clearLocalSave(preset: Preset) { + const response = await api.get(`/presets/${preset.id}`); + + this.state.collectionPresets = this.state.collectionPresets.map((preset) => { + if (preset.id === response.data.data.id) { + console.log('replace'); + return response.data.data; + } + + return preset; + }); + }, }, });