Skip to content

Commit

Permalink
fix(core): restore lost activation state of sidebar menu items (#6520)
Browse files Browse the repository at this point in the history
  • Loading branch information
JimmFly committed Apr 12, 2024
1 parent 6a535b9 commit 62f90e5
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 17 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { useBlockSuitePageReferences } from '@affine/core/hooks/use-block-suite-page-references';
import { Workbench } from '@affine/core/modules/workbench';
import { useAFFiNEI18N } from '@affine/i18n/hooks';
import { EdgelessIcon, PageIcon } from '@blocksuite/icons';
import type { DocCollection, DocMeta } from '@blocksuite/store';
import { useDraggable } from '@dnd-kit/core';
import * as Collapsible from '@radix-ui/react-collapsible';
import { PageRecordList, useLiveData, useService } from '@toeverything/infra';
import React, { useCallback, useMemo } from 'react';
import { useParams } from 'react-router-dom';

import {
type DNDIdentifier,
Expand Down Expand Up @@ -35,12 +35,13 @@ export const Page = ({
allPageMeta: Record<string, DocMeta>;
}) => {
const [collapsed, setCollapsed] = React.useState(true);
const params = useParams();
const workbench = useService(Workbench);
const location = useLiveData(workbench.location$);

const t = useAFFiNEI18N();

const pageId = page.id;
const active = params.pageId === pageId;
const active = location.pathname === '/' + pageId;
const pageRecord = useLiveData(useService(PageRecordList).record$(pageId));
const pageMode = useLiveData(pageRecord?.mode$);
const dragItemId = getDNDId('collection-list', 'doc', pageId, parentId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { useBlockSuitePageReferences } from '@affine/core/hooks/use-block-suite-page-references';
import { Workbench } from '@affine/core/modules/workbench';
import { useAFFiNEI18N } from '@affine/i18n/hooks';
import { EdgelessIcon, PageIcon } from '@blocksuite/icons';
import type { DocCollection, DocMeta } from '@blocksuite/store';
import * as Collapsible from '@radix-ui/react-collapsible';
import { PageRecordList, useLiveData, useService } from '@toeverything/infra';
import { useMemo, useState } from 'react';
import { useParams } from 'react-router-dom';

import { MenuLinkItem } from '../../../app-sidebar';
import * as styles from '../favorite/styles.css';
Expand All @@ -24,8 +24,9 @@ export const ReferencePage = ({
parentIds,
}: ReferencePageProps) => {
const t = useAFFiNEI18N();
const params = useParams();
const active = params.pageId === pageId;
const workbench = useService(Workbench);
const location = useLiveData(workbench.location$);
const active = location.pathname === '/' + pageId;

const pageRecord = useLiveData(useService(PageRecordList).record$(pageId));
const pageMode = useLiveData(pageRecord?.mode$);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ import {
parseDNDId,
} from '@affine/core/hooks/affine/use-global-dnd-helper';
import { useBlockSuitePageReferences } from '@affine/core/hooks/use-block-suite-page-references';
import { Workbench } from '@affine/core/modules/workbench';
import { useAFFiNEI18N } from '@affine/i18n/hooks';
import { EdgelessIcon, PageIcon } from '@blocksuite/icons';
import { type AnimateLayoutChanges, useSortable } from '@dnd-kit/sortable';
import { CSS } from '@dnd-kit/utilities';
import * as Collapsible from '@radix-ui/react-collapsible';
import { PageRecordList, useLiveData, useService } from '@toeverything/infra';
import { useMemo, useState } from 'react';
import { useParams } from 'react-router-dom';

import { MenuLinkItem } from '../../../app-sidebar';
import { DragMenuItemOverlay } from '../components/drag-menu-item-overlay';
Expand All @@ -33,8 +33,9 @@ export const FavouriteDocSidebarNavItem = ({
sortable?: boolean;
}) => {
const t = useAFFiNEI18N();
const params = useParams();
const linkActive = params.pageId === pageId;
const workbench = useService(Workbench);
const location = useLiveData(workbench.location$);
const linkActive = location.pathname === '/' + pageId;
const pageRecord = useLiveData(useService(PageRecordList).record$(pageId));
const pageMode = useLiveData(pageRecord?.mode$);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import {
useJournalInfoHelper,
useJournalRouteHelper,
} from '@affine/core/hooks/use-journal';
import { Workbench } from '@affine/core/modules/workbench';
import type { DocCollection } from '@affine/core/shared';
import { useAFFiNEI18N } from '@affine/i18n/hooks';
import { TodayIcon, TomorrowIcon, YesterdayIcon } from '@blocksuite/icons';
import { Doc, useServiceOptional } from '@toeverything/infra';
import { useParams } from 'react-router-dom';
import { useLiveData, useService } from '@toeverything/infra';

import { MenuItem } from '../app-sidebar';

Expand All @@ -18,17 +18,16 @@ export const AppSidebarJournalButton = ({
docCollection,
}: AppSidebarJournalButtonProps) => {
const t = useAFFiNEI18N();
const currentPage = useServiceOptional(Doc);
const workbench = useService(Workbench);
const location = useLiveData(workbench.location$);
const { openToday } = useJournalRouteHelper(docCollection);
const { journalDate, isJournal } = useJournalInfoHelper(
docCollection,
currentPage?.id
location.pathname.split('/')[1]
);
const params = useParams();
const isJournalActive = isJournal && !!params.pageId;

const Icon =
isJournalActive && journalDate
isJournal && journalDate
? journalDate.isBefore(new Date(), 'day')
? YesterdayIcon
: journalDate.isAfter(new Date(), 'day')
Expand All @@ -39,7 +38,7 @@ export const AppSidebarJournalButton = ({
return (
<MenuItem
data-testid="slider-bar-journals-button"
active={isJournalActive}
active={isJournal}
onClick={openToday}
icon={<Icon />}
>
Expand Down

0 comments on commit 62f90e5

Please sign in to comment.