Yuken Tezuka 3 лет назад
Родитель
Сommit
d9c1ed97f8
1 измененных файлов с 15 добавлено и 12 удалено
  1. 15 12
      packages/app/src/stores/admin/customize.tsx

+ 15 - 12
packages/app/src/stores/admin/customize.tsx

@@ -2,26 +2,29 @@ import { useCallback } from 'react';
 
 import useSWR, { SWRResponse } from 'swr';
 
-import { apiv3Get } from '~/client/util/apiv3-client';
+import { apiv3Get, apiv3Put } from '~/client/util/apiv3-client';
 import { IResLayoutSetting } from '~/interfaces/customize';
 
-import { useLayoutSetting } from '../context';
+interface updateConfigMethodForAdmin<T> {
+  update: (arg: T) => void
+}
 
 
-export const useSWRxLayoutSetting = (fallbackData?: IResLayoutSetting): SWRResponse<IResLayoutSetting, Error> => {
-  const { mutate: mutateStatic } = useLayoutSetting();
+export const useSWRxLayoutSetting = (): SWRResponse<IResLayoutSetting, Error> & updateConfigMethodForAdmin<IResLayoutSetting> => {
 
   const fetcher = useCallback(async() => {
     const res = await apiv3Get('/customize-setting/layout');
+    return res.data;
+  }, []);
 
-    mutateStatic(res.data);
+  const update = useCallback(async(layoutSetting: IResLayoutSetting) => {
+    await apiv3Put('/customize-setting/layout', layoutSetting);
+  }, []);
 
-    return res.data;
-  }, [mutateStatic]);
+  const swrResponse = useSWR('/customize-setting/layout', fetcher);
 
-  return useSWR(
-    '/customize-setting/layout',
-    fetcher,
-    { fallbackData },
-  );
+  return {
+    ...swrResponse,
+    update,
+  };
 };