Files
readest/apps/readest-app/src/app/reader/hooks/useSidebar.ts
T

47 lines
1.1 KiB
TypeScript

import { useReaderStore } from '@/store/readerStore';
import { useEffect } from 'react';
const useSidebar = (initialWidth: string, isPinned: boolean) => {
const { settings } = useReaderStore();
const {
sideBarWidth,
isSideBarVisible,
isSideBarPinned,
setSideBarWidth,
setSideBarVisible,
setSideBarPin,
toggleSideBar,
toggleSideBarPin,
} = useReaderStore();
useEffect(() => {
setSideBarWidth(initialWidth);
setSideBarPin(isPinned);
setSideBarVisible(isPinned);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const handleSideBarResize = (newWidth: string) => {
setSideBarWidth(newWidth);
settings.globalReadSettings.sideBarWidth = newWidth;
};
const handleSideBarTogglePin = () => {
toggleSideBarPin();
settings.globalReadSettings.isSideBarPinned = !isSideBarPinned;
if (isSideBarPinned && isSideBarVisible) setSideBarVisible(false);
};
return {
sideBarWidth,
isSideBarPinned,
isSideBarVisible,
handleSideBarResize,
handleSideBarTogglePin,
setSideBarVisible,
toggleSideBar,
};
};
export default useSidebar;