feat: add hook useBlockSuiteWorkspaceName (#1281)

This commit is contained in:
Himself65
2023-03-02 20:00:42 -06:00
committed by GitHub
parent 9d46b358d4
commit 1e2f91fe21
5 changed files with 55 additions and 10 deletions
@@ -0,0 +1,33 @@
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
);
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);
set(name);
blockSuiteWorkspace.meta.setName(name);
},
[blockSuiteWorkspace]
);
return [name, setName] as const;
}