import { useReadOnlyActions, useStoreActions } from "./use-actions-factory"; import type { BoundT } from "./types"; import type { BaseCRUDAPI, BaseCRUDAPIReadOnly } from "~/lib/api/base/base-clients"; import type { QueryValue } from "~/lib/api/base/route"; export const useData = function (defaultObject: T) { const data = reactive({ ...defaultObject }); function reset() { Object.assign(data, defaultObject); }; return { data, reset }; }; export const useReadOnlyStore = function ( store: Ref, loading: Ref, api: BaseCRUDAPIReadOnly, params = {} as Record, ) { const storeActions = useReadOnlyActions(api, store, loading); const actions = { ...storeActions, async refresh() { return await storeActions.refresh(1, -1, params); }, flushStore() { store.value = []; }, }; if (!loading.value && (!store.value || store.value.length === 0)) { const result = actions.getAll(1, -1, params); store.value = result.value || []; } return { store, actions }; }; export const useStore = function ( store: Ref, loading: Ref, api: BaseCRUDAPI, params = {} as Record, ) { const storeActions = useStoreActions(api, store, loading); const actions = { ...storeActions, async refresh() { return await storeActions.refresh(1, -1, params); }, flushStore() { store = ref([]); }, }; if (!loading.value && (!store.value || store.value.length === 0)) { const result = actions.getAll(1, -1, params); store.value = result.value || []; } return { store, actions }; };