Skip to content

Commit 2fb6325

Browse files
committed
fix: local cache
1 parent 6c013b6 commit 2fb6325

File tree

4 files changed

+21
-28
lines changed

4 files changed

+21
-28
lines changed

src/GZCTF/ClientApp/src/App.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { useRoutes } from 'react-router-dom'
1515
import { SWRConfig } from 'swr'
1616
import routes from '~react-pages'
1717
import { ThemeOverride } from '@Utils/ThemeOverride'
18-
import { useBanner, useLocalStorageCache } from '@Utils/useConfig'
18+
import { useBanner, localCacheProvider } from '@Utils/useConfig'
1919
import { fetcher } from '@Api'
2020

2121
export const App: FC = () => {
@@ -31,7 +31,6 @@ export const App: FC = () => {
3131
useBanner()
3232

3333
const { t } = useTranslation()
34-
const { localCacheProvider } = useLocalStorageCache()
3534

3635
return (
3736
<ColorSchemeProvider colorScheme={colorScheme} toggleColorScheme={toggleColorScheme}>

src/GZCTF/ClientApp/src/components/AppHeader.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { useTranslation } from 'react-i18next'
1313
import { Link, useLocation, useNavigate } from 'react-router-dom'
1414
import LogoHeader from '@Components/LogoHeader'
1515
import { useIsMobile } from '@Utils/ThemeOverride'
16-
import { useLocalStorageCache } from '@Utils/useConfig'
16+
import { clearLocalCache } from '@Utils/useConfig'
1717
import { useLoginOut, useUser } from '@Utils/useUser'
1818

1919
const useHeaderStyles = createStyles((theme) => ({
@@ -34,7 +34,6 @@ const AppHeader: FC = () => {
3434
const navigate = useNavigate()
3535

3636
const { colorScheme, toggleColorScheme } = useMantineColorScheme()
37-
const { clearLocalCache } = useLocalStorageCache()
3837
const { user, error } = useUser()
3938

4039
const logout = useLoginOut()

src/GZCTF/ClientApp/src/components/AppNavbar.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import { useTranslation } from 'react-i18next'
3030
import { Link, useLocation, useNavigate } from 'react-router-dom'
3131
import MainIcon from '@Components/icon/MainIcon'
3232
import { LanguageMap, SupportedLanguages, useLanguage } from '@Utils/I18n'
33-
import { useLocalStorageCache } from '@Utils/useConfig'
33+
import { clearLocalCache } from '@Utils/useConfig'
3434
import { useLoginOut, useUser } from '@Utils/useUser'
3535
import { Role } from '@Api'
3636

@@ -123,7 +123,6 @@ const AppNavbar: FC = () => {
123123
const { colorScheme, toggleColorScheme } = useMantineColorScheme()
124124

125125
const logout = useLoginOut()
126-
const { clearLocalCache } = useLocalStorageCache()
127126
const { user, error } = useUser()
128127
const { t } = useTranslation()
129128
const { setLanguage, supportedLanguages } = useLanguage()

src/GZCTF/ClientApp/src/utils/useConfig.ts

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -102,28 +102,24 @@ export const useBanner = () => {
102102
}, [])
103103
}
104104

105-
export const useLocalStorageCache = () => {
106-
const cacheKey = 'gzctf-cache'
107-
108-
const mapRef = useRef(
109-
new Map(JSON.parse(LZString.decompress(localStorage.getItem(cacheKey) || '') || '[]'))
110-
)
111-
112-
const saveCache = () => {
113-
const appCache = LZString.compress(JSON.stringify(Array.from(mapRef.current.entries())))
114-
localStorage.setItem(cacheKey, appCache)
115-
}
116-
117-
const localCacheProvider = () => {
118-
window.addEventListener('beforeunload', saveCache)
119-
return mapRef.current as Cache
120-
}
105+
const cacheKey = 'gzctf-cache'
106+
const cacheMap = new Map(
107+
JSON.parse(LZString.decompress(localStorage.getItem(cacheKey) || '') || '[]')
108+
)
109+
110+
const saveCache = () => {
111+
const appCache = LZString.compress(JSON.stringify(Array.from(cacheMap.entries())))
112+
localStorage.setItem(cacheKey, appCache)
113+
}
121114

122-
const clearLocalCache = () => {
123-
window.removeEventListener('beforeunload', saveCache)
124-
localStorage.removeItem('gzctf-cache')
125-
window.location.reload()
126-
}
115+
export const localCacheProvider = () => {
116+
window.addEventListener('beforeunload', saveCache, true)
117+
return cacheMap as Cache
118+
}
127119

128-
return { localCacheProvider, clearLocalCache }
120+
export const clearLocalCache = () => {
121+
window.removeEventListener('beforeunload', saveCache, true)
122+
localStorage.removeItem('gzctf-cache')
123+
cacheMap.clear()
124+
window.location.reload()
129125
}

0 commit comments

Comments
 (0)