mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-17 10:06:17 +08:00
75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
import { config } from '@affine/env';
|
|
import { useAtom, useAtomValue, useSetAtom } from 'jotai';
|
|
import { useEffect } from 'react';
|
|
|
|
import {
|
|
guideHiddenAtom,
|
|
guideHiddenUntilNextUpdateAtom,
|
|
lastVersionAtom,
|
|
} from '../atoms/first-load';
|
|
|
|
export function useLastVersion() {
|
|
return useAtom(lastVersionAtom);
|
|
}
|
|
|
|
export function useGuideHidden() {
|
|
return useAtom(guideHiddenAtom);
|
|
}
|
|
|
|
export function useGuideHiddenUntilNextUpdate() {
|
|
return useAtom(guideHiddenUntilNextUpdateAtom);
|
|
}
|
|
|
|
const TIPS = {
|
|
quickSearchTips: true,
|
|
changeLog: true,
|
|
};
|
|
|
|
export function useTipsDisplayStatus() {
|
|
const permanentlyHiddenTips = useAtomValue(guideHiddenAtom);
|
|
const hiddenUntilNextUpdateTips = useAtomValue(
|
|
guideHiddenUntilNextUpdateAtom
|
|
);
|
|
|
|
return {
|
|
quickSearchTips: {
|
|
permanentlyHidden: permanentlyHiddenTips.quickSearchTips || true,
|
|
hiddenUntilNextUpdate: hiddenUntilNextUpdateTips.quickSearchTips || true,
|
|
},
|
|
changeLog: {
|
|
permanentlyHidden: permanentlyHiddenTips.changeLog || true,
|
|
hiddenUntilNextUpdate: hiddenUntilNextUpdateTips.changeLog || true,
|
|
},
|
|
};
|
|
}
|
|
|
|
export function useUpdateTipsOnVersionChange() {
|
|
const [lastVersion, setLastVersion] = useLastVersion();
|
|
const currentVersion = config.gitVersion;
|
|
const tipsDisplayStatus = useTipsDisplayStatus();
|
|
const setPermanentlyHiddenTips = useSetAtom(guideHiddenAtom);
|
|
const setHiddenUntilNextUpdateTips = useSetAtom(
|
|
guideHiddenUntilNextUpdateAtom
|
|
);
|
|
|
|
useEffect(() => {
|
|
if (lastVersion !== currentVersion) {
|
|
setLastVersion(currentVersion);
|
|
const newHiddenUntilNextUpdateTips = { ...TIPS };
|
|
const newPermanentlyHiddenTips = { ...TIPS, changeLog: false };
|
|
Object.keys(tipsDisplayStatus).forEach(tipKey => {
|
|
newHiddenUntilNextUpdateTips[tipKey as keyof typeof TIPS] = false;
|
|
});
|
|
setHiddenUntilNextUpdateTips(newHiddenUntilNextUpdateTips);
|
|
setPermanentlyHiddenTips(newPermanentlyHiddenTips);
|
|
}
|
|
}, [
|
|
currentVersion,
|
|
lastVersion,
|
|
setLastVersion,
|
|
setPermanentlyHiddenTips,
|
|
setHiddenUntilNextUpdateTips,
|
|
tipsDisplayStatus,
|
|
]);
|
|
}
|