aboutsummaryrefslogtreecommitdiffstats
path: root/stores/loader.ts
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2024-03-12 23:18:23 +0000
committerLeonardo Bishop <me@leonardobishop.com>2024-03-12 23:18:23 +0000
commita072c91cc0dc26e417c51f666e8547e08ef40942 (patch)
tree1a7296d2acb9038b1928cc1f0f5a08aa6b92b222 /stores/loader.ts
parenta4052ffee8bc7c6c8a69eba5120b5c6c2d951b0f (diff)
Add import from file system
Diffstat (limited to 'stores/loader.ts')
-rw-r--r--stores/loader.ts55
1 files changed, 55 insertions, 0 deletions
diff --git a/stores/loader.ts b/stores/loader.ts
new file mode 100644
index 0000000..fe3742c
--- /dev/null
+++ b/stores/loader.ts
@@ -0,0 +1,55 @@
+import { defineStore } from 'pinia'
+import type { EditorCategory, EditorItem } from './session';
+
+export type FileSystemLoaderStatus = 'inactive' | 'pending' | 'loaded' | 'invalid' | 'valid';
+
+export const useLoaderStore = defineStore('loader', {
+ state: () => ({
+ fileSystem: {
+ status: 'inactive' as FileSystemLoaderStatus,
+ path: '' as string,
+ quests: [] as EditorQuest[],
+ categories: [] as EditorCategory[],
+ items: [] as EditorItem[],
+ }
+ }),
+ getters: {
+ getFileSystemLoaderStatus: (state) => () => {
+ return state.fileSystem.status;
+ },
+ getPath: (state) => () => {
+ return state.fileSystem.path;
+ },
+ getQuests: (state) => () => {
+ return state.fileSystem.quests;
+ },
+ getCategories: (state) => () => {
+ return state.fileSystem.categories;
+ },
+ getItems: (state) => () => {
+ return state.fileSystem.items;
+ },
+ },
+ actions: {
+ setFileSystemLoaderStatus(status: FileSystemLoaderStatus) {
+ this.fileSystem.status = status;
+ if (status === 'inactive' || status === 'pending') {
+ this.fileSystem.quests = [];
+ this.fileSystem.categories = [];
+ this.fileSystem.items = [];
+ }
+ },
+ setPath(path: string) {
+ this.fileSystem.path = path;
+ },
+ setQuests(quests: EditorQuest[]) {
+ this.fileSystem.quests = quests;
+ },
+ setCategories(categories: EditorCategory[]) {
+ this.fileSystem.categories = categories;
+ },
+ setItems(items: EditorItem[]) {
+ this.fileSystem.items = items;
+ }
+ }
+});