mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-11 20:08:37 +00:00
Merge pull request #94 from toeverything/fixbug-issue76-mitsuha-dev
fixbug: [issue76]when click activities button, throw error;
This commit is contained in:
@@ -33,30 +33,8 @@ export function Page(props: PageProps) {
|
|||||||
const { page_id } = useParams();
|
const { page_id } = useParams();
|
||||||
const { showSpaceSidebar, fixedDisplay, setSpaceSidebarVisible } =
|
const { showSpaceSidebar, fixedDisplay, setSpaceSidebarVisible } =
|
||||||
useShowSpaceSidebar();
|
useShowSpaceSidebar();
|
||||||
const { user } = useUserAndSpaces();
|
|
||||||
const dailyNotesFlag = useFlag('BooleanDailyNotes', false);
|
const dailyNotesFlag = useFlag('BooleanDailyNotes', false);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (!user?.id || !page_id) return;
|
|
||||||
const updateRecentPages = async () => {
|
|
||||||
// TODO: deal with it temporarily
|
|
||||||
await services.api.editorBlock.getWorkspaceDbBlock(
|
|
||||||
props.workspace,
|
|
||||||
{
|
|
||||||
userId: user.id,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
await services.api.userConfig.addRecentPage(
|
|
||||||
props.workspace,
|
|
||||||
user.id,
|
|
||||||
page_id
|
|
||||||
);
|
|
||||||
await services.api.editorBlock.clearUndoRedo(props.workspace);
|
|
||||||
};
|
|
||||||
updateRecentPages();
|
|
||||||
}, [user, props.workspace, page_id]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<LigoApp>
|
<LigoApp>
|
||||||
<LigoLeftContainer style={{ width: fixedDisplay ? '300px' : 0 }}>
|
<LigoLeftContainer style={{ width: fixedDisplay ? '300px' : 0 }}>
|
||||||
|
|||||||
@@ -64,30 +64,32 @@ export const Activities = () => {
|
|||||||
const [recentPages, setRecentPages] = useState([]);
|
const [recentPages, setRecentPages] = useState([]);
|
||||||
const userId = user?.id;
|
const userId = user?.id;
|
||||||
|
|
||||||
/* temporarily remove:show recently viewed documents */
|
/* show recently edit documents */
|
||||||
const fetchRecentPages = useCallback(async () => {
|
const getRecentEditPages = useCallback(async () => {
|
||||||
if (!userId || !currentSpaceId) {
|
if (!userId || !currentSpaceId) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const recent_pages = await services.api.userConfig.getRecentPages(
|
|
||||||
currentSpaceId,
|
const recentEditPages =
|
||||||
userId
|
(await services.api.userConfig.getRecentEditedPages(
|
||||||
);
|
currentSpaceId
|
||||||
setRecentPages(recent_pages);
|
)) || [];
|
||||||
}, [userId, currentSpaceId]);
|
|
||||||
|
setRecentPages(recentEditPages);
|
||||||
|
}, [currentSpaceId, userId]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
await fetchRecentPages();
|
await getRecentEditPages();
|
||||||
})();
|
})();
|
||||||
}, [fetchRecentPages]);
|
}, [getRecentEditPages]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let unobserve: () => void;
|
let unobserve: () => void;
|
||||||
const observe = async () => {
|
const observe = async () => {
|
||||||
unobserve = await services.api.userConfig.observe(
|
unobserve = await services.api.userConfig.observe(
|
||||||
{ workspace: currentSpaceId },
|
{ workspace: currentSpaceId },
|
||||||
fetchRecentPages
|
getRecentEditPages
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
observe();
|
observe();
|
||||||
@@ -95,12 +97,13 @@ export const Activities = () => {
|
|||||||
return () => {
|
return () => {
|
||||||
unobserve?.();
|
unobserve?.();
|
||||||
};
|
};
|
||||||
}, [currentSpaceId, fetchRecentPages]);
|
}, [currentSpaceId, getRecentEditPages]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledWrapper>
|
<StyledWrapper>
|
||||||
<List style={{ padding: '0px' }}>
|
<List style={{ padding: '0px' }}>
|
||||||
{recentPages.map(({ id, title, lastOpenTime }) => {
|
{recentPages.map(item => {
|
||||||
|
const { id, title, updated } = item;
|
||||||
return (
|
return (
|
||||||
<ListItem className="item" key={id}>
|
<ListItem className="item" key={id}>
|
||||||
<StyledItemContent
|
<StyledItemContent
|
||||||
@@ -114,7 +117,7 @@ export const Activities = () => {
|
|||||||
/>
|
/>
|
||||||
<ListItemText
|
<ListItemText
|
||||||
className="itemRight"
|
className="itemRight"
|
||||||
primary={formatDistanceToNow(lastOpenTime, {
|
primary={formatDistanceToNow(updated, {
|
||||||
includeSeconds: true,
|
includeSeconds: true,
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { ServiceBaseClass } from '../base';
|
|||||||
import { ObserveCallback, ReturnUnobserve } from '../database';
|
import { ObserveCallback, ReturnUnobserve } from '../database';
|
||||||
import { PageTree } from './page-tree';
|
import { PageTree } from './page-tree';
|
||||||
import { PageConfigItem } from './types';
|
import { PageConfigItem } from './types';
|
||||||
|
import type { QueryIndexMetadata } from '@toeverything/datasource/jwt';
|
||||||
|
|
||||||
/** Operate the user configuration at the workspace level */
|
/** Operate the user configuration at the workspace level */
|
||||||
export class UserConfig extends ServiceBaseClass {
|
export class UserConfig extends ServiceBaseClass {
|
||||||
@@ -122,4 +123,20 @@ export class UserConfig extends ServiceBaseClass {
|
|||||||
const workspaceDbBlock = await this.getWorkspaceDbBlock(workspace);
|
const workspaceDbBlock = await this.getWorkspaceDbBlock(workspace);
|
||||||
workspaceDbBlock.setDecoration(WORKSPACE_CONFIG, workspaceName);
|
workspaceDbBlock.setDecoration(WORKSPACE_CONFIG, workspaceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getRecentEditedPages(workspace: string) {
|
||||||
|
const db = await this.database.getDatabase(workspace);
|
||||||
|
const recentEditedPages =
|
||||||
|
(await db.queryBlocks({
|
||||||
|
$sort: 'lastUpdated',
|
||||||
|
$desc: false /* sort rule: true(default)(ASC), or false(DESC) */,
|
||||||
|
$limit: 4,
|
||||||
|
flavor: 'page',
|
||||||
|
} as QueryIndexMetadata)) || [];
|
||||||
|
|
||||||
|
return recentEditedPages.map(item => {
|
||||||
|
item['title'] = item.content || 'Untitled';
|
||||||
|
return item;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user