diff options
author | zeroinformatique | 2021-07-03 00:48:53 +0200 |
---|---|---|
committer | GitHub | 2021-07-03 00:48:53 +0200 |
commit | b6605e2c4ee73ac8b994624098344db5e44ac07d (patch) | |
tree | 5ed06cc5ecdabe070f6fdb9bc4f9a8a3b435cbe6 /viewer/src/store | |
parent | 08ac32103fb5f8cca1861267dfd07a7c0d2faf62 (diff) | |
parent | 1f0377c1b4c2959c73fe4e368673f057ef369917 (diff) | |
download | ldgallery-b6605e2c4ee73ac8b994624098344db5e44ac07d.tar.gz |
Merge pull request #302 from ldgallery/oz-types-normalization
viewer: types normalization
Diffstat (limited to 'viewer/src/store')
-rw-r--r-- | viewer/src/store/galleryStore.ts | 28 | ||||
-rw-r--r-- | viewer/src/store/index.ts | 7 | ||||
-rw-r--r-- | viewer/src/store/uiStore.ts | 5 |
3 files changed, 21 insertions, 19 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 | ||
20 | import { createModule, mutation, action } from "vuex-class-component"; | 20 | import { Config, Index, Item } from "@/@types/gallery"; |
21 | import { TagCategory, TagIndex, TagSearch } from "@/@types/tag"; | ||
21 | import IndexFactory from "@/services/indexfactory"; | 22 | import IndexFactory from "@/services/indexfactory"; |
22 | import Navigation from "@/services/navigation"; | 23 | import Navigation from "@/services/navigation"; |
24 | import { action, createModule, mutation } from "vuex-class-component"; | ||
23 | 25 | ||
24 | const VuexModule = createModule({ | 26 | const VuexModule = createModule({ |
25 | namespaced: "galleryStore", | 27 | namespaced: "galleryStore", |
@@ -27,28 +29,28 @@ const VuexModule = createModule({ | |||
27 | }); | 29 | }); |
28 | 30 | ||
29 | export default class GalleryStore extends VuexModule { | 31 | export 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 | } |
diff --git a/viewer/src/store/index.ts b/viewer/src/store/index.ts index f86d66b..1f49589 100644 --- a/viewer/src/store/index.ts +++ b/viewer/src/store/index.ts | |||
@@ -17,12 +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 | ||
20 | import GalleryStore from "@/store/galleryStore"; | ||
21 | import UIStore from "@/store/uiStore"; | ||
20 | import Vue from "vue"; | 22 | import Vue from "vue"; |
21 | import Vuex from "vuex"; | 23 | import Vuex from "vuex"; |
22 | import { extractVuexModule } from "vuex-class-component"; | 24 | import { createProxy, extractVuexModule } from "vuex-class-component"; |
23 | import { createProxy } from "vuex-class-component"; | ||
24 | import UIStore from "@/store/uiStore"; | ||
25 | import GalleryStore from "@/store/galleryStore"; | ||
26 | 25 | ||
27 | Vue.use(Vuex); | 26 | Vue.use(Vuex); |
28 | 27 | ||
diff --git a/viewer/src/store/uiStore.ts b/viewer/src/store/uiStore.ts index f065cdd..f5bb898 100644 --- a/viewer/src/store/uiStore.ts +++ b/viewer/src/store/uiStore.ts | |||
@@ -17,8 +17,9 @@ | |||
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 | ||
20 | import { createModule, mutation, action } from "vuex-class-component"; | 20 | import { Config } from "@/@types/gallery"; |
21 | import ItemComparators, { ItemSort } from "@/services/itemComparators"; | 21 | import ItemComparators, { ItemSort } from "@/services/itemComparators"; |
22 | import { action, createModule, mutation } from "vuex-class-component"; | ||
22 | 23 | ||
23 | const VuexModule = createModule({ | 24 | const VuexModule = createModule({ |
24 | namespaced: "uiStore", | 25 | namespaced: "uiStore", |
@@ -49,7 +50,7 @@ export default class UIStore extends VuexModule { | |||
49 | this.sort = sort; | 50 | this.sort = sort; |
50 | } | 51 | } |
51 | 52 | ||
52 | @action async initFromConfig(config: Gallery.Config) { | 53 | @action async initFromConfig(config: Config) { |
53 | if (config.initialItemSort) { | 54 | if (config.initialItemSort) { |
54 | const itemSort = ItemComparators.ITEM_SORTS[config.initialItemSort]; | 55 | const itemSort = ItemComparators.ITEM_SORTS[config.initialItemSort]; |
55 | if (itemSort) this.setSort(itemSort); | 56 | if (itemSort) this.setSort(itemSort); |