feat(core): add setting commands (#4568)

Co-authored-by: Peng Xiao <pengxiao@outlook.com>
This commit is contained in:
JimmFly
2023-10-11 11:31:04 +08:00
committed by GitHub
parent b1eb926b7b
commit 1f6a105e5c
17 changed files with 524 additions and 60 deletions

View 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]
);
}

View File

@@ -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(

View File

@@ -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,
]);
}