feat(mobile): show page back by url search (#9100)

close AF-1911
This commit is contained in:
CatsJuice
2024-12-12 07:14:05 +00:00
parent 84df2a1d16
commit 5dd2dddd74
8 changed files with 75 additions and 15 deletions

View File

@@ -1,4 +1,5 @@
import { usePageHelper } from '@affine/core/components/blocksuite/block-suite-page-list/utils';
import { WorkbenchService } from '@affine/core/modules/workbench';
import track from '@affine/track';
import { EditIcon } from '@blocksuite/icons/rc';
import { useService, WorkspaceService } from '@toeverything/infra';
@@ -8,6 +9,7 @@ import type { AppTabCustomFCProps } from './data';
import { TabItem } from './tab-item';
export const AppTabCreate = ({ tab }: AppTabCustomFCProps) => {
const workbench = useService(WorkbenchService).workbench;
const workspaceService = useService(WorkspaceService);
const currentWorkspace = workspaceService.workspace;
const pageHelper = usePageHelper(currentWorkspace.docCollection);
@@ -15,10 +17,11 @@ export const AppTabCreate = ({ tab }: AppTabCustomFCProps) => {
const createPage = useCallback(
(isActive: boolean) => {
if (isActive) return;
pageHelper.createPage(undefined, true);
const doc = pageHelper.createPage(undefined, false);
workbench.openDoc({ docId: doc.id, fromTab: 'true' });
track.$.navigationPanel.$.createDoc();
},
[pageHelper]
[pageHelper, workbench]
);
return (

View File

@@ -1,4 +1,3 @@
import { useJournalRouteHelper } from '@affine/core/components/hooks/use-journal';
import { DocDisplayMetaService } from '@affine/core/modules/doc-display-meta';
import { JournalService } from '@affine/core/modules/journal';
import { WorkbenchService } from '@affine/core/modules/workbench';
@@ -21,8 +20,10 @@ export const AppTabJournal = ({ tab }: AppTabCustomFCProps) => {
docDisplayMetaService.icon$(maybeDocId, { compareDate: new Date() })
);
const { openToday } = useJournalRouteHelper();
const handleOpenToday = useCallback(() => openToday(false), [openToday]);
const handleOpenToday = useCallback(() => {
const docId = journalService.ensureJournalByDate(new Date()).id;
workbench.openDoc({ docId, fromTab: 'true' }, { at: 'active' });
}, [journalService, workbench]);
const Icon = journalDate ? JournalIcon : TodayIcon;

View File

@@ -70,6 +70,7 @@ export const DocCard = forwardRef<HTMLAnchorElement, DocCardProps>(
ref={ref}
className={clsx(styles.card, className)}
data-testid="doc-card"
data-doc-id={meta.id}
{...attrs}
>
<header className={styles.head} data-testid="doc-card-header">

View File

@@ -5,7 +5,6 @@ import { useRegisterBlocksuiteEditorCommands } from '@affine/core/components/hoo
import { useActiveBlocksuiteEditor } from '@affine/core/components/hooks/use-block-suite-editor';
import { useDocMetaHelper } from '@affine/core/components/hooks/use-block-suite-page-meta';
import { usePageDocumentTitle } from '@affine/core/components/hooks/use-global-state';
import { useJournalRouteHelper } from '@affine/core/components/hooks/use-journal';
import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper';
import { PageDetailEditor } from '@affine/core/components/page-detail-editor';
import { DetailPageWrapper } from '@affine/core/desktop/pages/workspace/detail-page/detail-page-wrapper';
@@ -244,20 +243,26 @@ const MobileDetailPage = ({
const t = useI18n();
const docDisplayMetaService = useService(DocDisplayMetaService);
const journalService = useService(JournalService);
const workbench = useService(WorkbenchService).workbench;
const [showTitle, setShowTitle] = useState(checkShowTitle);
const { openJournal } = useJournalRouteHelper();
const titleInfo = useLiveData(docDisplayMetaService.title$(pageId));
const title =
typeof titleInfo === 'string' ? titleInfo : t[titleInfo.i18nKey]();
const allJournalDates = useLiveData(journalService.allJournalDates$);
const location = useLiveData(workbench.location$);
const fromTab = location.search.includes('fromTab');
const handleDateChange = useCallback(
(date: string) => {
openJournal(date);
const docId = journalService.ensureJournalByDate(date).id;
workbench.openDoc(
{ docId, fromTab: fromTab ? 'true' : undefined },
{ replaceHistory: true }
);
},
[openJournal]
[fromTab, journalService, workbench]
);
useGlobalEvent(
@@ -273,7 +278,7 @@ const MobileDetailPage = ({
pageId={pageId}
>
<PageHeader
back={!date}
back={!fromTab}
className={styles.header}
contentClassName={styles.headerContent}
suffix={