aboutsummaryrefslogtreecommitdiffstats
path: root/stores/loader.ts
blob: 9d4b7ad126b64d6617576338acccdc6cb46ac78d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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;
    },
  },
});