feat: init @toeverything/hooks package (#1788)

This commit is contained in:
Himself65
2023-04-03 04:32:52 -05:00
committed by GitHub
parent 89c1e4c205
commit fcf5d5602d
17 changed files with 100 additions and 33 deletions

View File

@@ -0,0 +1,32 @@
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;
}