mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-17 06:16:59 +08:00
feat(core): add track events for page option (#7664)
This commit is contained in:
@@ -77,9 +77,10 @@ export const PageOperationCell = ({
|
|||||||
const blocksuiteDoc = currentWorkspace.docCollection.getDoc(page.id);
|
const blocksuiteDoc = currentWorkspace.docCollection.getDoc(page.id);
|
||||||
|
|
||||||
const [openInfoModal, setOpenInfoModal] = useState(false);
|
const [openInfoModal, setOpenInfoModal] = useState(false);
|
||||||
const onOpenInfoModal = () => {
|
const onOpenInfoModal = useCallback(() => {
|
||||||
|
track.$.docInfoPanel.$.open();
|
||||||
setOpenInfoModal(true);
|
setOpenInfoModal(true);
|
||||||
};
|
}, []);
|
||||||
|
|
||||||
const onDisablePublicSharing = useCallback(() => {
|
const onDisablePublicSharing = useCallback(() => {
|
||||||
toast('Successfully disabled', {
|
toast('Successfully disabled', {
|
||||||
@@ -88,6 +89,8 @@ export const PageOperationCell = ({
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const onRemoveToTrash = useCallback(() => {
|
const onRemoveToTrash = useCallback(() => {
|
||||||
|
track.allDocs.list.docMenu.deleteDoc();
|
||||||
|
|
||||||
setTrashModal({
|
setTrashModal({
|
||||||
open: true,
|
open: true,
|
||||||
pageIds: [page.id],
|
pageIds: [page.id],
|
||||||
@@ -96,6 +99,8 @@ export const PageOperationCell = ({
|
|||||||
}, [page.id, page.title, setTrashModal]);
|
}, [page.id, page.title, setTrashModal]);
|
||||||
|
|
||||||
const onOpenInSplitView = useCallback(() => {
|
const onOpenInSplitView = useCallback(() => {
|
||||||
|
track.allDocs.list.docMenu.openInSplitView();
|
||||||
|
|
||||||
workbench.openDoc(page.id, { at: 'tail' });
|
workbench.openDoc(page.id, { at: 'tail' });
|
||||||
}, [page.id, workbench]);
|
}, [page.id, workbench]);
|
||||||
|
|
||||||
@@ -113,6 +118,12 @@ export const PageOperationCell = ({
|
|||||||
);
|
);
|
||||||
}, [page.id, favAdapter, t]);
|
}, [page.id, favAdapter, t]);
|
||||||
|
|
||||||
|
const onToggleFavoritePageOption = useCallback(() => {
|
||||||
|
track.allDocs.list.docMenu.toggleFavorite();
|
||||||
|
|
||||||
|
onToggleFavoritePage();
|
||||||
|
}, [onToggleFavoritePage]);
|
||||||
|
|
||||||
const onDuplicate = useCallback(() => {
|
const onDuplicate = useCallback(() => {
|
||||||
duplicate(page.id, false);
|
duplicate(page.id, false);
|
||||||
track.allDocs.list.docMenu.createDoc({
|
track.allDocs.list.docMenu.createDoc({
|
||||||
@@ -120,6 +131,13 @@ export const PageOperationCell = ({
|
|||||||
});
|
});
|
||||||
}, [duplicate, page.id]);
|
}, [duplicate, page.id]);
|
||||||
|
|
||||||
|
const handleRemoveFromAllowList = useCallback(() => {
|
||||||
|
if (onRemoveFromAllowList) {
|
||||||
|
onRemoveFromAllowList();
|
||||||
|
track.collection.docList.docMenu.removeOrganizeItem({ type: 'doc' });
|
||||||
|
}
|
||||||
|
}, [onRemoveFromAllowList]);
|
||||||
|
|
||||||
const OperationMenu = (
|
const OperationMenu = (
|
||||||
<>
|
<>
|
||||||
{page.isPublic && (
|
{page.isPublic && (
|
||||||
@@ -132,7 +150,7 @@ export const PageOperationCell = ({
|
|||||||
)}
|
)}
|
||||||
{isInAllowList && (
|
{isInAllowList && (
|
||||||
<MenuItem
|
<MenuItem
|
||||||
onClick={onRemoveFromAllowList}
|
onClick={handleRemoveFromAllowList}
|
||||||
preFix={
|
preFix={
|
||||||
<MenuIcon>
|
<MenuIcon>
|
||||||
<FilterMinusIcon />
|
<FilterMinusIcon />
|
||||||
@@ -143,7 +161,7 @@ export const PageOperationCell = ({
|
|||||||
</MenuItem>
|
</MenuItem>
|
||||||
)}
|
)}
|
||||||
<MenuItem
|
<MenuItem
|
||||||
onClick={onToggleFavoritePage}
|
onClick={onToggleFavoritePageOption}
|
||||||
preFix={
|
preFix={
|
||||||
<MenuIcon>
|
<MenuIcon>
|
||||||
{favourite ? (
|
{favourite ? (
|
||||||
|
|||||||
@@ -37,11 +37,7 @@ type DocEvents =
|
|||||||
| 'deleteDoc'
|
| 'deleteDoc'
|
||||||
| 'switchPageMode'
|
| 'switchPageMode'
|
||||||
| 'openDocOptionsMenu'
|
| 'openDocOptionsMenu'
|
||||||
| 'openDocInfo'
|
| 'openDocInfo';
|
||||||
| 'renameDoc'
|
|
||||||
| 'deleteDoc'
|
|
||||||
| 'viewHistoryVersions'
|
|
||||||
| 'viewInfo';
|
|
||||||
type EditorEvents = 'bold' | 'italic' | 'underline' | 'strikeThrough';
|
type EditorEvents = 'bold' | 'italic' | 'underline' | 'strikeThrough';
|
||||||
// END SECTION
|
// END SECTION
|
||||||
|
|
||||||
@@ -65,13 +61,15 @@ type FolderEvents =
|
|||||||
| 'deleteFolder';
|
| 'deleteFolder';
|
||||||
type TagEvents = 'createTag' | 'deleteTag' | 'renameTag' | 'tagDoc';
|
type TagEvents = 'createTag' | 'deleteTag' | 'renameTag' | 'tagDoc';
|
||||||
type FavoriteEvents = 'toggleFavorite';
|
type FavoriteEvents = 'toggleFavorite';
|
||||||
|
type DocInfoEvents = 'toggle' | 'open';
|
||||||
type OrganizeItemEvents = // doc, link, folder, collection, tag
|
type OrganizeItemEvents = // doc, link, folder, collection, tag
|
||||||
|
|
||||||
| 'createOrganizeItem'
|
| 'createOrganizeItem'
|
||||||
| 'renameOrganizeItem'
|
| 'renameOrganizeItem'
|
||||||
| 'moveOrganizeItem'
|
| 'moveOrganizeItem'
|
||||||
| 'deleteOrganizeItem'
|
| 'deleteOrganizeItem'
|
||||||
| 'orderOrganizeItem';
|
| 'orderOrganizeItem'
|
||||||
|
| 'removeOrganizeItem';
|
||||||
type OrganizeEvents =
|
type OrganizeEvents =
|
||||||
| OrganizeItemEvents
|
| OrganizeItemEvents
|
||||||
| CollectionEvents
|
| CollectionEvents
|
||||||
@@ -113,7 +111,8 @@ type UserEvents =
|
|||||||
| ShareEvents
|
| ShareEvents
|
||||||
| AuthEvents
|
| AuthEvents
|
||||||
| AccountEvents
|
| AccountEvents
|
||||||
| PaymentEvents;
|
| PaymentEvents
|
||||||
|
| DocInfoEvents;
|
||||||
|
|
||||||
interface PageDivision {
|
interface PageDivision {
|
||||||
[page: string]: {
|
[page: string]: {
|
||||||
@@ -178,7 +177,7 @@ const PageEvents = {
|
|||||||
'toggleFavorite',
|
'toggleFavorite',
|
||||||
],
|
],
|
||||||
docs: ['createDoc', 'deleteDoc', 'linkDoc'],
|
docs: ['createDoc', 'deleteDoc', 'linkDoc'],
|
||||||
collections: ['createDoc', 'addDocToCollection'],
|
collections: ['createDoc', 'addDocToCollection', 'removeOrganizeItem'],
|
||||||
folders: ['createDoc'],
|
folders: ['createDoc'],
|
||||||
tags: ['createDoc', 'tagDoc'],
|
tags: ['createDoc', 'tagDoc'],
|
||||||
favorites: ['createDoc'],
|
favorites: ['createDoc'],
|
||||||
@@ -238,6 +237,9 @@ const PageEvents = {
|
|||||||
atMenu: ['linkDoc'],
|
atMenu: ['linkDoc'],
|
||||||
formatToolbar: ['bold'],
|
formatToolbar: ['bold'],
|
||||||
},
|
},
|
||||||
|
inlineDocInfo: {
|
||||||
|
$: ['toggle'],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
// remove when type added
|
// remove when type added
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||||
@@ -252,12 +254,22 @@ const PageEvents = {
|
|||||||
actions: ['createDoc', 'createWorkspace'],
|
actions: ['createDoc', 'createWorkspace'],
|
||||||
},
|
},
|
||||||
list: {
|
list: {
|
||||||
docMenu: ['createDoc'],
|
docMenu: [
|
||||||
|
'createDoc',
|
||||||
|
'deleteDoc',
|
||||||
|
'openInSplitView',
|
||||||
|
'toggleFavorite',
|
||||||
|
'openInNewTab',
|
||||||
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// remove when type added
|
// remove when type added
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||||
collection: {},
|
collection: {
|
||||||
|
docList: {
|
||||||
|
docMenu: ['removeOrganizeItem'],
|
||||||
|
},
|
||||||
|
},
|
||||||
// remove when type added
|
// remove when type added
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||||
tag: {},
|
tag: {},
|
||||||
@@ -304,6 +316,7 @@ export type EventArgs = {
|
|||||||
createOrganizeItem: OrganizeItemArgs;
|
createOrganizeItem: OrganizeItemArgs;
|
||||||
renameOrganizeItem: OrganizeItemArgs;
|
renameOrganizeItem: OrganizeItemArgs;
|
||||||
moveOrganizeItem: OrganizeItemArgs;
|
moveOrganizeItem: OrganizeItemArgs;
|
||||||
|
removeOrganizeItem: OrganizeItemArgs;
|
||||||
deleteOrganizeItem: OrganizeItemArgs;
|
deleteOrganizeItem: OrganizeItemArgs;
|
||||||
orderOrganizeItem: OrganizeItemArgs;
|
orderOrganizeItem: OrganizeItemArgs;
|
||||||
openInNewTab: { type: OrganizeItemType };
|
openInNewTab: { type: OrganizeItemType };
|
||||||
|
|||||||
@@ -274,6 +274,7 @@ const ExplorerCollectionNodeChildren = ({
|
|||||||
|
|
||||||
const handleRemoveFromAllowList = useCallback(
|
const handleRemoveFromAllowList = useCallback(
|
||||||
(id: string) => {
|
(id: string) => {
|
||||||
|
track.$.navigationPanel.collections.removeOrganizeItem({ type: 'doc' });
|
||||||
collectionService.deletePageFromCollection(collection.id, id);
|
collectionService.deletePageFromCollection(collection.id, id);
|
||||||
toast(t['com.affine.collection.removePage.success']());
|
toast(t['com.affine.collection.removePage.success']());
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -52,6 +52,11 @@ export const useExplorerDocNodeOperations = (
|
|||||||
}, [docId, compatibleFavoriteItemsAdapter])
|
}, [docId, compatibleFavoriteItemsAdapter])
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const handleOpenInfoModal = useCallback(() => {
|
||||||
|
track.$.docInfoPanel.$.open();
|
||||||
|
options.openInfoModal();
|
||||||
|
}, [options]);
|
||||||
|
|
||||||
const handleMoveToTrash = useCallback(() => {
|
const handleMoveToTrash = useCallback(() => {
|
||||||
if (!docRecord) {
|
if (!docRecord) {
|
||||||
return;
|
return;
|
||||||
@@ -92,7 +97,7 @@ export const useExplorerDocNodeOperations = (
|
|||||||
track.$.navigationPanel.organize.openInSplitView({
|
track.$.navigationPanel.organize.openInSplitView({
|
||||||
type: 'doc',
|
type: 'doc',
|
||||||
});
|
});
|
||||||
}, [docId, workbenchService]);
|
}, [docId, workbenchService.workbench]);
|
||||||
|
|
||||||
const handleAddLinkedPage = useAsyncCallback(async () => {
|
const handleAddLinkedPage = useAsyncCallback(async () => {
|
||||||
const newDoc = docsService.createDoc();
|
const newDoc = docsService.createDoc();
|
||||||
@@ -102,7 +107,7 @@ export const useExplorerDocNodeOperations = (
|
|||||||
track.$.navigationPanel.docs.linkDoc({ control: 'createDoc' });
|
track.$.navigationPanel.docs.linkDoc({ control: 'createDoc' });
|
||||||
workbenchService.workbench.openDoc(newDoc.id);
|
workbenchService.workbench.openDoc(newDoc.id);
|
||||||
options.openNodeCollapsed();
|
options.openNodeCollapsed();
|
||||||
}, [docId, options, docsService, workbenchService.workbench]);
|
}, [docsService, docId, workbenchService.workbench, options]);
|
||||||
|
|
||||||
const handleToggleFavoriteDoc = useCallback(() => {
|
const handleToggleFavoriteDoc = useCallback(() => {
|
||||||
compatibleFavoriteItemsAdapter.toggle(docId, 'doc');
|
compatibleFavoriteItemsAdapter.toggle(docId, 'doc');
|
||||||
@@ -136,7 +141,7 @@ export const useExplorerDocNodeOperations = (
|
|||||||
<InformationIcon />
|
<InformationIcon />
|
||||||
</MenuIcon>
|
</MenuIcon>
|
||||||
}
|
}
|
||||||
onClick={options.openInfoModal}
|
onClick={handleOpenInfoModal}
|
||||||
>
|
>
|
||||||
{t['com.affine.page-properties.page-info.view']()}
|
{t['com.affine.page-properties.page-info.view']()}
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
@@ -244,8 +249,8 @@ export const useExplorerDocNodeOperations = (
|
|||||||
handleMoveToTrash,
|
handleMoveToTrash,
|
||||||
handleOpenInNewTab,
|
handleOpenInNewTab,
|
||||||
handleOpenInSplitView,
|
handleOpenInSplitView,
|
||||||
|
handleOpenInfoModal,
|
||||||
handleToggleFavoriteDoc,
|
handleToggleFavoriteDoc,
|
||||||
options.openInfoModal,
|
|
||||||
t,
|
t,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user