mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-05 08:57:00 +02:00
Generalized frontend model store (#193)
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
import {open} from "@tauri-apps/plugin-dialog";
|
||||
import { open } from '@tauri-apps/plugin-dialog';
|
||||
import { revealItemInDir } from '@tauri-apps/plugin-opener';
|
||||
import { getModel, settingsAtom, workspacesAtom } from '@yaakapp-internal/models';
|
||||
import classNames from 'classnames';
|
||||
import { useAtomValue } from 'jotai';
|
||||
import { memo, useCallback, useMemo } from 'react';
|
||||
import { openWorkspaceFromSyncDir } from '../commands/openWorkspaceFromSyncDir';
|
||||
import { openWorkspaceSettings } from '../commands/openWorkspaceSettings';
|
||||
import { switchWorkspace } from '../commands/switchWorkspace';
|
||||
import { useActiveWorkspace } from '../hooks/useActiveWorkspace';
|
||||
import { activeWorkspaceAtom, activeWorkspaceMetaAtom } from '../hooks/useActiveWorkspace';
|
||||
import { useCreateWorkspace } from '../hooks/useCreateWorkspace';
|
||||
import { useDeleteSendHistory } from '../hooks/useDeleteSendHistory';
|
||||
import { settingsAtom } from '../hooks/useSettings';
|
||||
import { useWorkspaceMeta } from '../hooks/useWorkspaceMeta';
|
||||
import { getWorkspace, useWorkspaces } from '../hooks/useWorkspaces';
|
||||
import { showDialog } from '../lib/dialog';
|
||||
import { jotaiStore } from '../lib/jotai';
|
||||
import { revealInFinderText } from '../lib/reveal';
|
||||
@@ -28,10 +27,10 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({
|
||||
className,
|
||||
...buttonProps
|
||||
}: Props) {
|
||||
const workspaces = useWorkspaces();
|
||||
const workspace = useActiveWorkspace();
|
||||
const workspaces = useAtomValue(workspacesAtom);
|
||||
const workspace = useAtomValue(activeWorkspaceAtom);
|
||||
const createWorkspace = useCreateWorkspace();
|
||||
const workspaceMeta = useWorkspaceMeta();
|
||||
const workspaceMeta = useAtomValue(activeWorkspaceMetaAtom);
|
||||
const { mutate: deleteSendHistory } = useDeleteSendHistory();
|
||||
|
||||
const { workspaceItems, extraItems } = useMemo<{
|
||||
@@ -92,7 +91,7 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({
|
||||
return { workspaceItems, extraItems };
|
||||
}, [workspaces, workspaceMeta, deleteSendHistory, createWorkspace, workspace?.id]);
|
||||
|
||||
const handleChangeWorkspace = useCallback(async (workspaceId: string | null) => {
|
||||
const handleSwitchWorkspace = useCallback(async (workspaceId: string | null) => {
|
||||
if (workspaceId == null) return;
|
||||
|
||||
const settings = jotaiStore.get(settingsAtom);
|
||||
@@ -101,7 +100,7 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({
|
||||
return;
|
||||
}
|
||||
|
||||
const workspace = getWorkspace(workspaceId);
|
||||
const workspace = getModel('workspace', workspaceId);
|
||||
if (workspace == null) return;
|
||||
|
||||
showDialog({
|
||||
@@ -116,7 +115,7 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({
|
||||
<RadioDropdown
|
||||
items={workspaceItems}
|
||||
extraItems={extraItems}
|
||||
onChange={handleChangeWorkspace}
|
||||
onChange={handleSwitchWorkspace}
|
||||
value={workspace?.id ?? null}
|
||||
>
|
||||
<Button
|
||||
|
||||
Reference in New Issue
Block a user