feat(core): add setting commands (#4568)
Co-authored-by: Peng Xiao <pengxiao@outlook.com>
This commit is contained in:
34
apps/core/src/hooks/affine/use-language-helper.ts
Normal file
34
apps/core/src/hooks/affine/use-language-helper.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { LOCALES, useI18N } from '@affine/i18n';
|
||||
import { useCallback, useMemo } from 'react';
|
||||
|
||||
export function useLanguageHelper() {
|
||||
const i18n = useI18N();
|
||||
const currentLanguage = useMemo(
|
||||
() => LOCALES.find(item => item.tag === i18n.language),
|
||||
[i18n.language]
|
||||
);
|
||||
const languagesList = useMemo(
|
||||
() =>
|
||||
LOCALES.map(item => ({
|
||||
tag: item.tag,
|
||||
originalName: item.originalName,
|
||||
name: item.name,
|
||||
})),
|
||||
[]
|
||||
);
|
||||
const onSelect = useCallback(
|
||||
(event: string) => {
|
||||
i18n.changeLanguage(event);
|
||||
},
|
||||
[i18n]
|
||||
);
|
||||
|
||||
return useMemo(
|
||||
() => ({
|
||||
currentLanguage,
|
||||
languagesList,
|
||||
onSelect,
|
||||
}),
|
||||
[currentLanguage, languagesList, onSelect]
|
||||
);
|
||||
}
|
||||
@@ -52,17 +52,20 @@ export function useNavigateHelper() {
|
||||
},
|
||||
[navigate]
|
||||
);
|
||||
|
||||
const isPublicWorkspace = useMemo(() => {
|
||||
return location.pathname.indexOf('/public-workspace') === 0;
|
||||
}, [location.pathname]);
|
||||
|
||||
const openPage = useCallback(
|
||||
(workspaceId: string, pageId: string) => {
|
||||
const isPublicWorkspace =
|
||||
location.pathname.indexOf('/public-workspace') === 0;
|
||||
if (isPublicWorkspace) {
|
||||
return jumpToPublicWorkspacePage(workspaceId, pageId);
|
||||
} else {
|
||||
return jumpToPage(workspaceId, pageId);
|
||||
}
|
||||
},
|
||||
[jumpToPage, jumpToPublicWorkspacePage, location.pathname]
|
||||
[jumpToPage, jumpToPublicWorkspacePage, isPublicWorkspace]
|
||||
);
|
||||
|
||||
const jumpToIndex = useCallback(
|
||||
|
||||
@@ -6,11 +6,14 @@ import { useEffect } from 'react';
|
||||
import { allPageModeSelectAtom } from '../atoms';
|
||||
import {
|
||||
registerAffineCreationCommands,
|
||||
registerAffineHelpCommands,
|
||||
registerAffineLayoutCommands,
|
||||
registerAffineNavigationCommands,
|
||||
registerAffineSettingsCommands,
|
||||
registerAffineUpdatesCommands,
|
||||
} from '../commands';
|
||||
import { registerAffineNavigationCommands } from '../commands/affine-navigation';
|
||||
import { usePageHelper } from '../components/blocksuite/block-suite-page-list/utils';
|
||||
import { useLanguageHelper } from './affine/use-language-helper';
|
||||
import { useCurrentWorkspace } from './current/use-current-workspace';
|
||||
import { useNavigateHelper } from './use-navigate-helper';
|
||||
|
||||
@@ -19,11 +22,18 @@ export function useRegisterWorkspaceCommands() {
|
||||
const t = useAFFiNEI18N();
|
||||
const theme = useTheme();
|
||||
const [currentWorkspace] = useCurrentWorkspace();
|
||||
const languageHelper = useLanguageHelper();
|
||||
const pageHelper = usePageHelper(currentWorkspace.blockSuiteWorkspace);
|
||||
const navigationHelper = useNavigateHelper();
|
||||
const [pageListMode, setPageListMode] = useAtom(allPageModeSelectAtom);
|
||||
useEffect(() => {
|
||||
const unsubs: Array<() => void> = [];
|
||||
unsubs.push(
|
||||
registerAffineUpdatesCommands({
|
||||
store,
|
||||
t,
|
||||
})
|
||||
);
|
||||
unsubs.push(
|
||||
registerAffineNavigationCommands({
|
||||
store,
|
||||
@@ -34,7 +44,14 @@ export function useRegisterWorkspaceCommands() {
|
||||
setPageListMode,
|
||||
})
|
||||
);
|
||||
unsubs.push(registerAffineSettingsCommands({ store, t, theme }));
|
||||
unsubs.push(
|
||||
registerAffineSettingsCommands({
|
||||
store,
|
||||
t,
|
||||
theme,
|
||||
languageHelper,
|
||||
})
|
||||
);
|
||||
unsubs.push(registerAffineLayoutCommands({ store, t }));
|
||||
unsubs.push(
|
||||
registerAffineCreationCommands({
|
||||
@@ -43,6 +60,12 @@ export function useRegisterWorkspaceCommands() {
|
||||
t,
|
||||
})
|
||||
);
|
||||
unsubs.push(
|
||||
registerAffineHelpCommands({
|
||||
store,
|
||||
t,
|
||||
})
|
||||
);
|
||||
|
||||
return () => {
|
||||
unsubs.forEach(unsub => unsub());
|
||||
@@ -56,5 +79,6 @@ export function useRegisterWorkspaceCommands() {
|
||||
navigationHelper,
|
||||
pageListMode,
|
||||
setPageListMode,
|
||||
languageHelper,
|
||||
]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user