mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-14 21:27:20 +00:00
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { DEFAULT_WORKSPACE_NAME } from '@affine/env';
|
|
import { assertExists } from '@blocksuite/store';
|
|
import { useCallback, useEffect, useState } from 'react';
|
|
|
|
import { BlockSuiteWorkspace } from '../shared';
|
|
|
|
export function useBlockSuiteWorkspaceName(
|
|
blockSuiteWorkspace: BlockSuiteWorkspace | null
|
|
) {
|
|
const [name, set] = useState(
|
|
() => blockSuiteWorkspace?.meta.name ?? DEFAULT_WORKSPACE_NAME
|
|
);
|
|
if (blockSuiteWorkspace) {
|
|
if (blockSuiteWorkspace.meta.name !== name) {
|
|
set(blockSuiteWorkspace.meta.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;
|
|
}
|