mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-14 13:25:12 +00:00
- document folder - full-text search - blob storage - basic edgeless support Co-authored-by: tzhangchi <terry.zhangchi@outlook.com> Co-authored-by: QiShaoXuan <qishaoxuan777@gmail.com> Co-authored-by: DiamondThree <diamond.shx@gmail.com> Co-authored-by: MingLiang Wang <mingliangwang0o0@gmail.com> Co-authored-by: JimmFly <yangjinfei001@gmail.com> Co-authored-by: Yifeng Wang <doodlewind@toeverything.info> Co-authored-by: Himself65 <himself65@outlook.com> Co-authored-by: lawvs <18554747+lawvs@users.noreply.github.com> Co-authored-by: Qi <474021214@qq.com>
39 lines
1.0 KiB
TypeScript
39 lines
1.0 KiB
TypeScript
import { useRouter } from 'next/router';
|
|
import { useAppState } from '@/providers/app-state-provider/context';
|
|
import { useEffect, useRef, useState } from 'react';
|
|
|
|
export const useInitWorkspace = (disabled?: boolean) => {
|
|
const [loading, setLoading] = useState(true);
|
|
// Do not set as a constant, or it will trigger a hell of re-rendering
|
|
const defaultOutLineWorkspaceId = useRef(new Date().getTime().toString());
|
|
|
|
const router = useRouter();
|
|
const {
|
|
workspacesMeta,
|
|
loadWorkspace,
|
|
currentWorkspace,
|
|
currentWorkspaceId,
|
|
} = useAppState();
|
|
const workspaceId =
|
|
(router.query.workspaceId as string) ||
|
|
workspacesMeta?.[0]?.id ||
|
|
defaultOutLineWorkspaceId.current;
|
|
|
|
useEffect(() => {
|
|
if (disabled) {
|
|
setLoading(false);
|
|
return;
|
|
}
|
|
setLoading(true);
|
|
loadWorkspace(workspaceId).finally(() => {
|
|
setLoading(false);
|
|
});
|
|
}, [workspaceId, disabled, loadWorkspace]);
|
|
|
|
return {
|
|
workspaceId,
|
|
workspace: workspaceId === currentWorkspaceId ? currentWorkspace : null,
|
|
loading,
|
|
};
|
|
};
|