mirror of
https://github.com/lordmathis/lemma.git
synced 2025-11-07 00:14:25 +00:00
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { useWorkspaceData } from '../contexts/WorkspaceDataContext';
|
|
import { useTheme } from '../contexts/ThemeContext';
|
|
import { useWorkspaceOperations } from './useWorkspaceOperations';
|
|
import type { Workspace, DEFAULT_WORKSPACE_SETTINGS } from '@/types/models';
|
|
import type { MantineColorScheme } from '@mantine/core';
|
|
|
|
interface UseWorkspaceResult {
|
|
currentWorkspace: Workspace | null;
|
|
workspaces: Workspace[];
|
|
settings: Workspace | typeof DEFAULT_WORKSPACE_SETTINGS;
|
|
updateSettings: (newSettings: Partial<Workspace>) => Promise<void>;
|
|
loading: boolean;
|
|
colorScheme: MantineColorScheme;
|
|
updateColorScheme: (newTheme: MantineColorScheme) => void;
|
|
switchWorkspace: (workspaceName: string) => Promise<void>;
|
|
deleteCurrentWorkspace: () => Promise<void>;
|
|
}
|
|
|
|
export const useWorkspace = (): UseWorkspaceResult => {
|
|
const { currentWorkspace, workspaces, settings, loading } =
|
|
useWorkspaceData();
|
|
const { colorScheme, updateColorScheme } = useTheme();
|
|
const { switchWorkspace, deleteCurrentWorkspace, updateSettings } =
|
|
useWorkspaceOperations();
|
|
|
|
return {
|
|
currentWorkspace,
|
|
workspaces,
|
|
settings,
|
|
updateSettings,
|
|
loading,
|
|
colorScheme,
|
|
updateColorScheme,
|
|
switchWorkspace,
|
|
deleteCurrentWorkspace,
|
|
};
|
|
};
|