Merge pull request #94 from toeverything/fixbug-issue76-mitsuha-dev

fixbug: [issue76]when click activities button, throw error;
This commit is contained in:
mitsuhatu
2022-08-04 19:07:53 +08:00
committed by GitHub
3 changed files with 34 additions and 36 deletions

View File

@@ -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 }}>

View File

@@ -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,
})} })}
/> />

View File

@@ -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;
});
}
} }