Skip to content

Commit

Permalink
fix(core): page mode switch sometimes not working (#5306)
Browse files Browse the repository at this point in the history
Should not pass inline object without memo into `InternalLottie`.
https://github.com/toeverything/AFFiNE/blob/cdc96876b0a764ccf4f8ae9b7877ba8ae6774acb/packages/frontend/component/src/components/internal-lottie/index.tsx#L77

In the detail page when during syncing on the cloud, the detail page will be re-rendered constantly because of `useCurrentSyncEngineStatus` hook, which will then cause `PageSwitchItem` to re-render and forcing the internal lottie state to reset. As a result the click event may not be captured somehow.
  • Loading branch information
pengx17 committed Dec 15, 2023
1 parent fe2851d commit fc56a53
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,21 +45,30 @@ const HoverAnimateController = ({
);
};

const pageLottieOptions = {
loop: false,
autoplay: false,
animationData: pageHover,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice',
},
};

const edgelessLottieOptions = {
loop: false,
autoplay: false,
animationData: edgelessHover,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice',
},
};

export const PageSwitchItem = (
props: Omit<HoverAnimateControllerProps, 'children'>
) => {
return (
<HoverAnimateController {...props}>
<InternalLottie
options={{
loop: false,
autoplay: false,
animationData: pageHover,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice',
},
}}
/>
<InternalLottie options={pageLottieOptions} />
</HoverAnimateController>
);
};
Expand All @@ -69,16 +78,7 @@ export const EdgelessSwitchItem = (
) => {
return (
<HoverAnimateController {...props}>
<InternalLottie
options={{
loop: false,
autoplay: false,
animationData: edgelessHover,
rendererSettings: {
preserveAspectRatio: 'xMidYMid slice',
},
}}
/>
<InternalLottie options={edgelessLottieOptions} />
</HoverAnimateController>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { useWorkspaceStatus } from '@toeverything/hooks/use-workspace-status';
import { appSettingAtom, currentPageIdAtom } from '@toeverything/infra/atom';
import { useAtomValue, useSetAtom } from 'jotai';
import {
memo,
type ReactElement,
type ReactNode,
useCallback,
Expand Down Expand Up @@ -101,7 +102,7 @@ const DetailPageLayout = ({
);
};

const DetailPageImpl = ({ page }: { page: Page }) => {
const DetailPageImpl = memo(function DetailPageImpl({ page }: { page: Page }) {
const currentPageId = page.id;
const { openPage, jumpToSubPath } = useNavigateHelper();
const currentWorkspace = useAtomValue(waitForCurrentWorkspaceAtom);
Expand Down Expand Up @@ -200,7 +201,7 @@ const DetailPageImpl = ({ page }: { page: Page }) => {
<GlobalPageHistoryModal />
</>
);
};
});

const useForceUpdate = () => {
const [, setCount] = useState(0);
Expand Down

0 comments on commit fc56a53

Please sign in to comment.