mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-02-22 07:38:00 +01:00
51 lines
1.6 KiB
TypeScript
51 lines
1.6 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';
|
|
import { useSettings } from './useSettings';
|
|
|
|
export function useOpenWorkspace() {
|
|
const settings = useSettings();
|
|
const routes = useAppRoutes();
|
|
|
|
return useMutation({
|
|
mutationFn: async ({
|
|
workspace,
|
|
inNewWindow,
|
|
}: {
|
|
workspace: Workspace;
|
|
inNewWindow: boolean;
|
|
}) => {
|
|
if (settings == null || 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 });
|
|
}
|
|
}
|
|
},
|
|
});
|
|
}
|