From 903b6eaf306d495b824205e63dcc03de5e98c492 Mon Sep 17 00:00:00 2001 From: Himself65 Date: Fri, 28 Apr 2023 03:53:23 -0500 Subject: [PATCH] revert: lastVersionAtom atom (#2188) --- apps/web/src/atoms/first-load.ts | 17 +++++++++++++++-- apps/web/src/hooks/__tests__/index.spec.tsx | 3 +-- apps/web/src/hooks/use-is-first-load.ts | 3 ++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/apps/web/src/atoms/first-load.ts b/apps/web/src/atoms/first-load.ts index aeac04cfc5..9d6702e0d0 100644 --- a/apps/web/src/atoms/first-load.ts +++ b/apps/web/src/atoms/first-load.ts @@ -1,11 +1,24 @@ -import { config } from '@affine/env'; import { atomWithStorage } from 'jotai/utils'; export type Visibility = Record; +const DEFAULT_VALUE = '0.0.0'; +//atomWithStorage always uses initial value when first render +//https://github.com/pmndrs/jotai/discussions/1737 + +function getInitialValue() { + if (typeof window !== 'undefined') { + const storedValue = window.localStorage.getItem('lastVersion'); + if (storedValue) { + return JSON.parse(storedValue); + } + } + return DEFAULT_VALUE; +} + export const lastVersionAtom = atomWithStorage( 'lastVersion', - config.gitVersion + getInitialValue() ); export const guideHiddenAtom = atomWithStorage('guideHidden', {}); diff --git a/apps/web/src/hooks/__tests__/index.spec.tsx b/apps/web/src/hooks/__tests__/index.spec.tsx index 8a762b76e3..2be0571802 100644 --- a/apps/web/src/hooks/__tests__/index.spec.tsx +++ b/apps/web/src/hooks/__tests__/index.spec.tsx @@ -5,7 +5,6 @@ import 'fake-indexeddb/auto'; import assert from 'node:assert'; -import { config } from '@affine/env'; import { rootCurrentWorkspaceIdAtom, rootWorkspacesMetadataAtom, @@ -283,7 +282,7 @@ describe('useIsFirstLoad', () => { test('useLastVersion', async () => { const lastVersion = renderHook(() => useLastVersion()); const setLastVersion = lastVersion.result.current[1]; - expect(lastVersion.result.current[0]).toEqual(config.gitVersion); + expect(lastVersion.result.current[0]).toEqual('0.0.0'); setLastVersion('testVersion'); lastVersion.rerender(); expect(lastVersion.result.current[0]).toEqual('testVersion'); diff --git a/apps/web/src/hooks/use-is-first-load.ts b/apps/web/src/hooks/use-is-first-load.ts index 818127c8c3..3436f8f7e9 100644 --- a/apps/web/src/hooks/use-is-first-load.ts +++ b/apps/web/src/hooks/use-is-first-load.ts @@ -45,6 +45,7 @@ export function useTipsDisplayStatus() { export function useUpdateTipsOnVersionChange() { const [lastVersion, setLastVersion] = useLastVersion(); + const currentVersion = config.gitVersion; const tipsDisplayStatus = useTipsDisplayStatus(); const setPermanentlyHiddenTips = useSetAtom(guideHiddenAtom); const setHiddenUntilNextUpdateTips = useSetAtom( @@ -52,7 +53,6 @@ export function useUpdateTipsOnVersionChange() { ); useEffect(() => { - const currentVersion = config.gitVersion; if (lastVersion !== currentVersion) { setLastVersion(currentVersion); const newHiddenUntilNextUpdateTips = { ...TIPS }; @@ -64,6 +64,7 @@ export function useUpdateTipsOnVersionChange() { setPermanentlyHiddenTips(newPermanentlyHiddenTips); } }, [ + currentVersion, lastVersion, setLastVersion, setPermanentlyHiddenTips,