aboutsummaryrefslogtreecommitdiff
path: root/viewer/src/store/galleryStore.ts
diff options
context:
space:
mode:
Diffstat (limited to 'viewer/src/store/galleryStore.ts')
-rw-r--r--viewer/src/store/galleryStore.ts28
1 files changed, 15 insertions, 13 deletions
diff --git a/viewer/src/store/galleryStore.ts b/viewer/src/store/galleryStore.ts
index 6d64e12..e2adf18 100644
--- a/viewer/src/store/galleryStore.ts
+++ b/viewer/src/store/galleryStore.ts
@@ -17,9 +17,11 @@
17-- along with this program. If not, see <https://www.gnu.org/licenses/>. 17-- along with this program. If not, see <https://www.gnu.org/licenses/>.
18*/ 18*/
19 19
20import { createModule, mutation, action } from "vuex-class-component"; 20import { Config, Index, Item } from "@/@types/gallery";
21import { TagCategory, TagIndex, TagSearch } from "@/@types/tag";
21import IndexFactory from "@/services/indexfactory"; 22import IndexFactory from "@/services/indexfactory";
22import Navigation from "@/services/navigation"; 23import Navigation from "@/services/navigation";
24import { action, createModule, mutation } from "vuex-class-component";
23 25
24const VuexModule = createModule({ 26const VuexModule = createModule({
25 namespaced: "galleryStore", 27 namespaced: "galleryStore",
@@ -27,28 +29,28 @@ const VuexModule = createModule({
27}); 29});
28 30
29export default class GalleryStore extends VuexModule { 31export default class GalleryStore extends VuexModule {
30 config: Gallery.Config | null = null; 32 config: Config | null = null;
31 galleryIndex: Gallery.Index | null = null; 33 galleryIndex: Index | null = null;
32 tagsIndex: Tag.Index = {}; 34 tagsIndex: TagIndex = {};
33 tagsCategories: Tag.Category[] = []; 35 tagsCategories: TagCategory[] = [];
34 currentPath: string | null = null; 36 currentPath: string | null = null;
35 currentSearch: Tag.Search[] = []; 37 currentSearch: TagSearch[] = [];
36 38
37 // --- 39 // ---
38 40
39 @mutation private setConfig(config: Gallery.Config) { 41 @mutation private setConfig(config: Config) {
40 this.config = config; 42 this.config = config;
41 } 43 }
42 44
43 @mutation setGalleryIndex(galleryIndex: Gallery.Index) { 45 @mutation setGalleryIndex(galleryIndex: Index) {
44 this.galleryIndex = Object.freeze(galleryIndex); 46 this.galleryIndex = Object.freeze(galleryIndex);
45 } 47 }
46 48
47 @mutation private setTagsIndex(tagsIndex: Tag.Index) { 49 @mutation private setTagsIndex(tagsIndex: TagIndex) {
48 this.tagsIndex = Object.freeze(tagsIndex); 50 this.tagsIndex = Object.freeze(tagsIndex);
49 } 51 }
50 52
51 @mutation private setTagsCategories(tagsCategories: Tag.Category[]) { 53 @mutation private setTagsCategories(tagsCategories: TagCategory[]) {
52 this.tagsCategories = tagsCategories; 54 this.tagsCategories = tagsCategories;
53 } 55 }
54 56
@@ -56,19 +58,19 @@ export default class GalleryStore extends VuexModule {
56 this.currentPath = currentPath; 58 this.currentPath = currentPath;
57 } 59 }
58 60
59 @mutation setCurrentSearch(currentSearch: Tag.Search[]) { 61 @mutation setCurrentSearch(currentSearch: TagSearch[]) {
60 this.currentSearch = currentSearch; 62 this.currentSearch = currentSearch;
61 } 63 }
62 64
63 // --- 65 // ---
64 66
65 get currentItemPath(): Gallery.Item[] { 67 get currentItemPath(): Item[] {
66 const root = this.galleryIndex?.tree; 68 const root = this.galleryIndex?.tree;
67 if (root && this.currentPath) return Navigation.searchCurrentItemPath(root, this.currentPath); 69 if (root && this.currentPath) return Navigation.searchCurrentItemPath(root, this.currentPath);
68 return []; 70 return [];
69 } 71 }
70 72
71 get currentItem(): Gallery.Item | null { 73 get currentItem(): Item | null {
72 const path = this.currentItemPath; 74 const path = this.currentItemPath;
73 return path.length > 0 ? path[path.length - 1] : null; 75 return path.length > 0 ? path[path.length - 1] : null;
74 } 76 }