feat: memorize sidebar width

This commit is contained in:
EnixCoda 2019-08-11 10:55:02 +08:00
parent fd8ea597ca
commit 096cca294d
No known key found for this signature in database
GPG key ID: 0C1A07377913A1DD
3 changed files with 11 additions and 0 deletions

View file

@ -3,6 +3,7 @@ import HorizontalResizeHandler from 'components/ResizeHandler'
import cx from 'utils/cx'
import { useWindowSize, useMediaStyleSheet } from 'utils/hooks'
import { bodySpacingClassName } from 'utils/DOMHelper'
import configHelper, { configKeys } from 'utils/configHelper'
export type Size = number
type Props = {
@ -20,6 +21,10 @@ export default function Resizable({
}: React.PropsWithChildren<Props>) {
const [size, setSize] = React.useState(baseSize)
React.useEffect(() => {
setSize(baseSize)
}, [baseSize])
useWindowSize(
width => {
if (size > width - MINIMAL_CONTENT_VIEWPORT_WIDTH)
@ -30,6 +35,7 @@ export default function Resizable({
React.useEffect(() => {
document.documentElement.style.setProperty('--gitako-width', size + 'px')
configHelper.setOne(configKeys.sideBarWidth, size)
}, [size])
useMediaStyleSheet(

View file

@ -71,6 +71,7 @@ const init: MethodCreator<Props, ConnectorState> = dispatch => async () => {
metaData.branchName = detectedBranchName || 'master'
dispatch.call(setMetaData, metaData)
const {
sideBarWidth,
access_token: accessToken,
shortcut,
compressSingletonFolder,
@ -79,6 +80,7 @@ const init: MethodCreator<Props, ConnectorState> = dispatch => async () => {
} = await configHelper.getAll()
DOMHelper.decorateGitHubPageContent({ copyFileButton, copySnippetButton })
dispatch.set({
baseSize: sideBarWidth,
accessToken,
toggleShowSideBarShortcut: shortcut,
compressSingletonFolder,

View file

@ -2,6 +2,7 @@ import storageHelper from 'utils/storageHelper'
import { pick } from 'utils/general'
type Config = {
sideBarWidth: number
shortcut: string | undefined
access_token: string | undefined
compressSingletonFolder: boolean
@ -10,6 +11,7 @@ type Config = {
}
export enum configKeys {
sideBarWidth = 'sideBarWidth',
shortcut = 'shortcut',
accessToken = 'access_token',
compressSingletonFolder = 'compressSingletonFolder',
@ -18,6 +20,7 @@ export enum configKeys {
}
const defaultConfigs: Config = {
sideBarWidth: 260,
shortcut: undefined,
access_token: undefined,
compressSingletonFolder: true,