refac: define pinia store for each feature...
instead of hooks
This commit is contained in:
parent
2b243abb82
commit
d87a5abb6d
3 changed files with 17 additions and 16 deletions
|
@ -1,13 +1,13 @@
|
||||||
import { useLoader } from "@/shared/lib/composables/loader";
|
import { useLoader } from "@/shared/lib/composables/loader";
|
||||||
import { defineInjectKey, validInject } from "@/shared/lib/di";
|
import { defineInjectKey, validInject } from "@/shared/lib/di";
|
||||||
import { reactive } from "vue";
|
import { defineStore } from "pinia";
|
||||||
import { useContactsStore } from "../store";
|
import { useContactsStore } from "../store";
|
||||||
import type { ContactFormApiCreateProps, ContactFormApiPort } from "./ports";
|
import type { ContactFormApiCreateProps, ContactFormApiPort } from "./ports";
|
||||||
|
|
||||||
export const CONTACT_FORM_API_PROVIDE_KEY =
|
export const CONTACT_FORM_API_PROVIDE_KEY =
|
||||||
defineInjectKey<ContactFormApiPort>("ContactFormApi");
|
defineInjectKey<ContactFormApiPort>("ContactFormApi");
|
||||||
|
|
||||||
export function useContactFormStore() {
|
export const useContactFormStore = defineStore("ContactForm", () => {
|
||||||
const api = validInject(CONTACT_FORM_API_PROVIDE_KEY);
|
const api = validInject(CONTACT_FORM_API_PROVIDE_KEY);
|
||||||
|
|
||||||
const contactsStore = useContactsStore();
|
const contactsStore = useContactsStore();
|
||||||
|
@ -18,8 +18,8 @@ export function useContactFormStore() {
|
||||||
contactsStore.addContact(contact);
|
contactsStore.addContact(contact);
|
||||||
}
|
}
|
||||||
|
|
||||||
return reactive({
|
return {
|
||||||
loading: loader.loading,
|
loading: loader.loading,
|
||||||
create,
|
create,
|
||||||
});
|
};
|
||||||
}
|
});
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { useLoader } from "@/shared/lib/composables/loader";
|
import { useLoader } from "@/shared/lib/composables/loader";
|
||||||
import { defineInjectKey, validInject } from "@/shared/lib/di";
|
import { defineInjectKey, validInject } from "@/shared/lib/di";
|
||||||
import { storeToRefs } from "pinia";
|
import { defineStore, storeToRefs } from "pinia";
|
||||||
import { reactive } from "vue";
|
import { reactive } from "vue";
|
||||||
import { useContactsStore } from "../store";
|
import { useContactsStore } from "../store";
|
||||||
import type {
|
import type {
|
||||||
|
@ -11,7 +11,7 @@ import type {
|
||||||
export const CONTACTS_TABLE_API_PROVIDE_KEY =
|
export const CONTACTS_TABLE_API_PROVIDE_KEY =
|
||||||
defineInjectKey<ContactsTableApiPort>("ContactsTableApi");
|
defineInjectKey<ContactsTableApiPort>("ContactsTableApi");
|
||||||
|
|
||||||
export function useContactsTableStore() {
|
export const useContactsTableStore = defineStore("ContactsTable", () => {
|
||||||
const api = validInject(CONTACTS_TABLE_API_PROVIDE_KEY);
|
const api = validInject(CONTACTS_TABLE_API_PROVIDE_KEY);
|
||||||
|
|
||||||
const contactsStore = useContactsStore();
|
const contactsStore = useContactsStore();
|
||||||
|
@ -23,9 +23,9 @@ export function useContactsTableStore() {
|
||||||
contactsStore.setContacts(contacts);
|
contactsStore.setContacts(contacts);
|
||||||
}
|
}
|
||||||
|
|
||||||
return reactive({
|
return {
|
||||||
loading: loader.loading,
|
loading: loader.loading,
|
||||||
contacts,
|
contacts,
|
||||||
fetchMany,
|
fetchMany,
|
||||||
});
|
};
|
||||||
}
|
});
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
import { useLoader } from "@/shared/lib/composables/loader";
|
import { useLoader } from "@/shared/lib/composables/loader";
|
||||||
import { defineInjectKey, validInject } from "@/shared/lib/di";
|
import { defineInjectKey, validInject } from "@/shared/lib/di";
|
||||||
import { computed, reactive } from "vue";
|
import { defineStore } from "pinia";
|
||||||
|
import { computed } from "vue";
|
||||||
import { useListsStore } from "../store";
|
import { useListsStore } from "../store";
|
||||||
import type { ListsSelectApiPort } from "./ports";
|
import type { ListsSelectApiPort } from "./ports";
|
||||||
|
|
||||||
export const LISTS_SELECT_API_PROVIDE_KEY =
|
export const LISTS_SELECT_API_PROVIDE_KEY =
|
||||||
defineInjectKey<ListsSelectApiPort>("ListsTableApi");
|
defineInjectKey<ListsSelectApiPort>("ListsSelectApi");
|
||||||
|
|
||||||
export function useListsSelectStore() {
|
export const useListsSelectStore = defineStore("ListsSelect", () => {
|
||||||
const api = validInject(LISTS_SELECT_API_PROVIDE_KEY);
|
const api = validInject(LISTS_SELECT_API_PROVIDE_KEY);
|
||||||
|
|
||||||
const listsStore = useListsStore();
|
const listsStore = useListsStore();
|
||||||
|
@ -25,9 +26,9 @@ export function useListsSelectStore() {
|
||||||
listsStore.setLists(lists);
|
listsStore.setLists(lists);
|
||||||
}
|
}
|
||||||
|
|
||||||
return reactive({
|
return {
|
||||||
loading: loader.loading,
|
loading: loader.loading,
|
||||||
selectItems,
|
selectItems,
|
||||||
fetchMany,
|
fetchMany,
|
||||||
});
|
};
|
||||||
}
|
});
|
||||||
|
|
Loading…
Reference in a new issue