mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 20:38:52 +00:00
33 lines
972 B
TypeScript
33 lines
972 B
TypeScript
import { UNTITLED_WORKSPACE_NAME } from '@affine/env';
|
|
import type { Workspace } from '@blocksuite/store';
|
|
import { assertExists } from '@blocksuite/store';
|
|
import { useCallback, useEffect, useState } from 'react';
|
|
|
|
export function useBlockSuiteWorkspaceName(
|
|
blockSuiteWorkspace: Workspace | null
|
|
) {
|
|
const [name, set] = useState(
|
|
() => blockSuiteWorkspace?.meta.name ?? UNTITLED_WORKSPACE_NAME
|
|
);
|
|
useEffect(() => {
|
|
if (blockSuiteWorkspace) {
|
|
set(blockSuiteWorkspace.meta.name ?? '');
|
|
const dispose = blockSuiteWorkspace.meta.commonFieldsUpdated.on(() => {
|
|
set(blockSuiteWorkspace.meta.name ?? '');
|
|
});
|
|
return () => {
|
|
dispose.dispose();
|
|
};
|
|
}
|
|
}, [blockSuiteWorkspace]);
|
|
const setName = useCallback(
|
|
(name: string) => {
|
|
assertExists(blockSuiteWorkspace);
|
|
blockSuiteWorkspace.meta.setName(name);
|
|
set(name);
|
|
},
|
|
[blockSuiteWorkspace]
|
|
);
|
|
return [name, setName] as const;
|
|
}
|