mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-01-17 06:26:58 +01:00
This PR finished the initial PoC command palette. It currently only supports switching between requests and workspaces, but can easily be extended for more.
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import { useMutation } from '@tanstack/react-query';
|
|
import { invoke } from '@tauri-apps/api/core';
|
|
import type { Workspace } from '../lib/models';
|
|
import { useAppRoutes } from './useAppRoutes';
|
|
import { getRecentEnvironments } from './useRecentEnvironments';
|
|
import { getRecentRequests } from './useRecentRequests';
|
|
|
|
export function useOpenWorkspace() {
|
|
const routes = useAppRoutes();
|
|
|
|
return useMutation({
|
|
mutationFn: async ({
|
|
workspace,
|
|
inNewWindow,
|
|
}: {
|
|
workspace: Workspace;
|
|
inNewWindow: boolean;
|
|
}) => {
|
|
if (workspace == null) return;
|
|
|
|
if (inNewWindow) {
|
|
const environmentId = (await getRecentEnvironments(workspace.id))[0];
|
|
const requestId = (await getRecentRequests(workspace.id))[0];
|
|
const path =
|
|
requestId != null
|
|
? routes.paths.request({
|
|
workspaceId: workspace.id,
|
|
environmentId,
|
|
requestId,
|
|
})
|
|
: routes.paths.workspace({ workspaceId: workspace.id, environmentId });
|
|
await invoke('cmd_new_window', { url: path });
|
|
} else {
|
|
const environmentId = (await getRecentEnvironments(workspace.id))[0];
|
|
const requestId = (await getRecentRequests(workspace.id))[0];
|
|
if (requestId != null) {
|
|
routes.navigate('request', {
|
|
workspaceId: workspace.id,
|
|
environmentId,
|
|
requestId,
|
|
});
|
|
} else {
|
|
routes.navigate('workspace', { workspaceId: workspace.id, environmentId });
|
|
}
|
|
}
|
|
},
|
|
});
|
|
}
|