Jelajahi Sumber

feat: save ui setting to db

yukendev 2 tahun lalu
induk
melakukan
89c2462b08
1 mengubah file dengan 16 tambahan dan 3 penghapusan
  1. 16 3
      apps/app/src/components/Me/UISettings.tsx

+ 16 - 3
apps/app/src/components/Me/UISettings.tsx

@@ -3,6 +3,8 @@ import { useCallback } from 'react';
 import { useTranslation } from 'react-i18next';
 import { useTranslation } from 'react-i18next';
 import { UncontrolledTooltip } from 'reactstrap';
 import { UncontrolledTooltip } from 'reactstrap';
 
 
+import { scheduleToPut } from '~/client/services/user-ui-settings';
+import { toastError, toastSuccess } from '~/client/util/toastr';
 import { useCollapsedContentsOpened, usePreferCollapsedMode, useSidebarMode } from '~/stores/ui';
 import { useCollapsedContentsOpened, usePreferCollapsedMode, useSidebarMode } from '~/stores/ui';
 
 
 import SidebarCollapsedIcon from './SidebarCollapsedIcon';
 import SidebarCollapsedIcon from './SidebarCollapsedIcon';
@@ -29,13 +31,24 @@ export const UISettings = (): JSX.Element => {
   const {
   const {
     data: sidebarMode, isDrawerMode, isDockMode, isCollapsedMode,
     data: sidebarMode, isDrawerMode, isDockMode, isCollapsedMode,
   } = useSidebarMode();
   } = useSidebarMode();
-  const { mutateAndSave: mutatePreferCollapsedMode } = usePreferCollapsedMode();
+  const { mutate: mutatePreferCollapsedMode } = usePreferCollapsedMode();
   const { mutate: mutateCollapsedContentsOpened } = useCollapsedContentsOpened();
   const { mutate: mutateCollapsedContentsOpened } = useCollapsedContentsOpened();
 
 
   const toggleCollapsed = useCallback(() => {
   const toggleCollapsed = useCallback(() => {
     mutatePreferCollapsedMode(!isCollapsedMode());
     mutatePreferCollapsedMode(!isCollapsedMode());
     mutateCollapsedContentsOpened(false);
     mutateCollapsedContentsOpened(false);
-  }, [isCollapsedMode, mutateCollapsedContentsOpened, mutatePreferCollapsedMode]);
+  }, [mutatePreferCollapsedMode, isCollapsedMode, mutateCollapsedContentsOpened]);
+
+  const updateButtonHandler = useCallback(() => {
+    try {
+      scheduleToPut({ preferCollapsedModeByUser: isCollapsedMode() });
+      toastSuccess(t('toaster.update_successed', { target: t('ui_settings.side_bar_mode.settings'), ns: 'commons' }));
+    }
+    catch (err) {
+      toastError(err);
+    }
+
+  }, [isCollapsedMode, t]);
 
 
   const renderSidebarModeSwitch = () => {
   const renderSidebarModeSwitch = () => {
     return (
     return (
@@ -93,7 +106,7 @@ export const UISettings = (): JSX.Element => {
 
 
           <div className="row my-3">
           <div className="row my-3">
             <div className="offset-4 col-5">
             <div className="offset-4 col-5">
-              <button data-testid="" type="button" className="btn btn-primary" onClick={() => {}}>
+              <button data-testid="" type="button" className="btn btn-primary" onClick={updateButtonHandler}>
                 {t('Update')}
                 {t('Update')}
               </button>
               </button>
             </div>
             </div>