memos/web/src/store/module/storage.ts

32 lines
1.1 KiB
TypeScript

import store, { useAppSelector } from "..";
import * as api from "../../helpers/api";
import { setStorages, createStorage, patchStorage, deleteStorage } from "../reducer/storage";
export const useStorageStore = () => {
const state = useAppSelector((state) => state.storage);
return {
state,
getState: () => {
return store.getState().storage;
},
fetchStorages: async () => {
const { data } = (await api.getStorageList()).data;
store.dispatch(setStorages(data));
},
createStorage: async (storageCreate: StorageCreate) => {
const { data: storage } = (await api.createStorage(storageCreate)).data;
store.dispatch(createStorage(storage));
return storage;
},
patchStorage: async (storagePatch: StoragePatch) => {
const { data: storage } = (await api.patchStorage(storagePatch)).data;
store.dispatch(patchStorage(storage));
return storage;
},
deleteStorageById: async (storageId: StorageId) => {
await api.deleteStorage(storageId);
store.dispatch(deleteStorage(storageId));
},
};
};