diff options
| author | Leonardo Bishop <me@leonardobishop.com> | 2024-03-13 19:33:33 +0000 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.com> | 2024-03-13 19:33:33 +0000 |
| commit | bd26b2800e2675613c6990673ad0b7b5175aa841 (patch) | |
| tree | 26d1a89d9ed60ad73a82fbe3371d8c58578702f5 /stores | |
| parent | 825d2cadee4ddf34d0dde8c278fc8e8a99e95b95 (diff) | |
Add zip export
Diffstat (limited to 'stores')
| -rw-r--r-- | stores/export.ts | 31 | ||||
| -rw-r--r-- | stores/session.ts | 12 |
2 files changed, 37 insertions, 6 deletions
diff --git a/stores/export.ts b/stores/export.ts new file mode 100644 index 0000000..3f48aa3 --- /dev/null +++ b/stores/export.ts @@ -0,0 +1,31 @@ +import { defineStore } from 'pinia' + +export type ZipLoaderStatus = 'inactive' | 'preparing' | 'compressing' | 'ready' | 'failed'; + +export const useExportStore = defineStore('export', { + state: () => ({ + zip: { + status: 'inactive' as ZipLoaderStatus, + contents: null as Blob | null, + } + }), + getters: { + getZipStatus: (state) => () => { + return state.zip.status; + }, + getZipContents: (state) => () => { + return state.zip.contents; + }, + }, + actions: { + setZipStatus(status: ZipLoaderStatus) { + this.zip.status = status; + if (status === 'inactive' || status === 'preparing') { + this.zip.contents = null; + } + }, + setZipContents(contents: Blob) { + this.zip.contents = contents; + }, + } +}); diff --git a/stores/session.ts b/stores/session.ts index 876b6b0..50bcde7 100644 --- a/stores/session.ts +++ b/stores/session.ts @@ -111,14 +111,14 @@ export const useSessionStore = defineStore('session', { getSessionType: (state) => () => { return state.sessionType }, - getQuests(): EditorQuest[] { - return this.session.quests + getQuests: (state) => () => { + return state.session.quests }, - getCategories(): EditorCategory[] { - return this.session.categories + getCategories: (state) => () => { + return state.session.categories }, - getItems(): EditorItem[] { - return this.session.items + getItems: (state) => () => { + return state.session.items }, getQuestById: (state) => (id: string) => { if (!id) return null; |
