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;
}
}
});
|