import React, { useState, useCallback, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { Card, CardBody } from 'reactstrap'; import { toastSuccess, toastError } from '~/client/util/apiNotification'; import { apiv3Get, apiv3Put } from '~/client/util/apiv3-client'; import { isDarkMode as isDarkModeByUtil } from '~/client/util/color-scheme'; const CustomizeSidebarsetting = (): JSX.Element => { const { t } = useTranslation(); const [isSidebarDrawerMode, setIsSidebarDrawerMode] = useState(false); const [isSidebarClosedAtDockMode, setIsSidebarClosedAtDockMode] = useState(false); const [retrieveError, setRetrieveError] = useState(); const isDarkMode = isDarkModeByUtil(); const colorText = isDarkMode ? 'dark' : 'light'; const drawerIconFileName = `/images/customize-settings/drawer-${colorText}.svg`; const dockIconFileName = `/images/customize-settings/dock-${colorText}.svg`; const retrieveIsSidebarDrawerMode = useCallback(async() => { try { const res = await apiv3Get('/customize-setting/sidebar'); setIsSidebarDrawerMode(res.data.isSidebarDrawerMode); } catch (err) { setRetrieveError(err); toastError(err); } }, []); const retrieveIsSidebarClosedAtDockMode = useCallback(async() => { try { const res = await apiv3Get('/customize-setting/isSidebarClosedAtDockMode'); setIsSidebarClosedAtDockMode(res.data.isSidebarClosedAtDockMode); } catch (err) { setRetrieveError(err); toastError(err); } }, []); const retrieveData = useCallback(async() => { await retrieveIsSidebarDrawerMode(); await retrieveIsSidebarClosedAtDockMode(); }, [retrieveIsSidebarDrawerMode, retrieveIsSidebarClosedAtDockMode]); const submitIsSidebarDrawerMode = useCallback(async() => { try { await apiv3Put('/customize-setting/sidebar', { isSidebarDrawerMode }); toastSuccess(t('toaster.update_successed', { target: t('admin:customize_setting.default_sidebar_mode.title') })); } catch (err) { toastError(err); } }, [t, isSidebarDrawerMode]); const submitIsSidebarClosedAtDockMode = useCallback(async() => { try { await apiv3Put('/customize-setting/isSidebarClosedAtDockMode', { isSidebarClosedAtDockMode }); toastSuccess(t('toaster.update_successed', { target: t('admin:customize_setting.default_sidebar_mode.dock_mode_default') })); } catch (err) { toastError(err); } }, [t, isSidebarClosedAtDockMode]); const onClickSubmit = useCallback(async() => { await submitIsSidebarDrawerMode(); await submitIsSidebarClosedAtDockMode(); retrieveData(); }, [retrieveData, submitIsSidebarClosedAtDockMode, submitIsSidebarDrawerMode]); useEffect(() => { retrieveData(); }, [retrieveData]); return (

{t('admin:customize_setting.default_sidebar_mode.title')}

{t('admin:customize_setting.default_sidebar_mode.desc')}
setIsSidebarDrawerMode(true)} role="button" >
Drawer Mode
setIsSidebarDrawerMode(false)} role="button" >
Dock Mode
{t('admin:customize_setting.default_sidebar_mode.dock_mode_default_desc')}
setIsSidebarClosedAtDockMode(false)} />
setIsSidebarClosedAtDockMode(true)} />
); }; export default CustomizeSidebarsetting;