import useSWR from 'swr' import useSWRMutation from 'swr/mutation' import { protocol } from './index' import { DEL_DELETE_HOUSE, GET_HOUSE_DETAIL, GET_HOUSES_LIST, POST_HOUSE_CREATE, PUT_UPDATE_HOUSE, } from './url' const getAllHouse = async ({ page, pageSize }) => { const url = GET_HOUSES_LIST({ page, pageSize }) const response = await protocol.get(url, {}) return response.data } const getHouseDetail = async (id) => { const url = GET_HOUSE_DETAIL(id) const response = await protocol.get(url, {}) return response.data } const postCreateHouse = (payload) => { return protocol.post(POST_HOUSE_CREATE, payload) } const putUpdateHouse = (payload) => { return protocol.put(PUT_UPDATE_HOUSE, payload) } const putDeleteHouse = (_action, { arg: id }) => { return protocol.delete(DEL_DELETE_HOUSE(id)) } const createOrUpdateHouse = (_action, { arg }) => { const isUpdate = !!arg.id const fnWait = isUpdate ? putUpdateHouse : postCreateHouse return fnWait(arg) } export function useHouse(page, pageSize) { const swrObj = useSWR({ page, pageSize }, getAllHouse) const { trigger, isMutating } = useSWRMutation('action', putDeleteHouse) return { ...swrObj, houses: swrObj.data ?? [], trigger, isMutating, } } export function useHouseDetail(id) { const swrObj = useSWR(id, getHouseDetail) const { trigger, isMutating } = useSWRMutation('action', createOrUpdateHouse) return { ...swrObj, house: swrObj.data ?? {}, trigger, isMutating, } }