import React, { useState } from 'react'; import { Box, Popover, Stack, Paper, ScrollArea, Group, UnstyledButton, Text, Loader, Center, ActionIcon, Tooltip, useMantineTheme, } from '@mantine/core'; import { IconFolders, IconSettings, IconFolderPlus } from '@tabler/icons-react'; import { useWorkspace } from '../../contexts/WorkspaceContext'; import { useModalContext } from '../../contexts/ModalContext'; import { listWorkspaces } from '../../api/notes'; import CreateWorkspaceModal from '../modals/workspace/CreateWorkspaceModal'; const WorkspaceSwitcher = () => { const { currentWorkspace, switchWorkspace } = useWorkspace(); const { setSettingsModalVisible, setCreateWorkspaceModalVisible } = useModalContext(); const [workspaces, setWorkspaces] = useState([]); const [loading, setLoading] = useState(false); const [popoverOpened, setPopoverOpened] = useState(false); const theme = useMantineTheme(); const loadWorkspaces = async () => { setLoading(true); try { const list = await listWorkspaces(); setWorkspaces(list); } catch (error) { console.error('Failed to load workspaces:', error); } setLoading(false); }; const handleCreateWorkspace = () => { setPopoverOpened(false); setCreateWorkspaceModalVisible(true); }; const handleWorkspaceCreated = async (newWorkspace) => { await loadWorkspaces(); switchWorkspace(newWorkspace.name); }; return ( <> { setPopoverOpened((o) => !o); if (!popoverOpened) { loadWorkspaces(); } }} >
{currentWorkspace?.name || 'No workspace'}
Workspaces {loading ? (
) : ( workspaces.map((workspace) => { const isSelected = workspace.name === currentWorkspace?.name; return ( { switchWorkspace(workspace.name); setPopoverOpened(false); }} > {workspace.name} {new Date( workspace.createdAt ).toLocaleDateString()} {isSelected && ( { e.stopPropagation(); setSettingsModalVisible(true); setPopoverOpened(false); }} > )} ); }) )}
); }; export default WorkspaceSwitcher;