mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-20 16:43:53 +01:00
Open workspace pref (#44)
Ability to remember workspace window opening selection.
This commit is contained in:
50
src-web/hooks/useOpenWorkspace.ts
Normal file
50
src-web/hooks/useOpenWorkspace.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
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 });
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user