Create new workspace, and more optimizations

This commit is contained in:
Gregory Schier
2023-03-18 19:36:31 -07:00
parent 5981588c95
commit d9b38efd97
20 changed files with 272 additions and 133 deletions

View File

@@ -0,0 +1,18 @@
import { useMutation } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { useNavigate } from 'react-router-dom';
import type { Workspace } from '../lib/models';
export function useCreateWorkspace({ navigateAfter }: { navigateAfter: boolean }) {
const navigate = useNavigate();
return useMutation<string, unknown, Pick<Workspace, 'name'>>({
mutationFn: (patch) => {
return invoke('create_workspace', patch);
},
onSuccess: async (workspaceId) => {
if (navigateAfter) {
navigate(`/workspaces/${workspaceId}`);
}
},
});
}

View File

@@ -1,7 +1,7 @@
import { useResponses } from './useResponses';
export function useIsResponseLoading(): boolean {
const responses = useResponses();
export function useIsResponseLoading(requestId: string | null): boolean {
const responses = useResponses(requestId);
const response = responses[responses.length - 1];
if (!response) return false;
return !(response.body || response.status || response.error);

View File

@@ -2,22 +2,20 @@ import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import type { HttpResponse } from '../lib/models';
import { convertDates } from '../lib/models';
import { useActiveRequest } from './useActiveRequest';
export function responsesQueryKey(requestId: string) {
return ['http_responses', { requestId }];
}
export function useResponses() {
const activeRequest = useActiveRequest();
export function useResponses(requestId: string | null) {
return (
useQuery<HttpResponse[]>({
enabled: activeRequest != null,
enabled: requestId !== null,
initialData: [],
queryKey: responsesQueryKey(activeRequest?.id ?? 'n/a'),
queryKey: responsesQueryKey(requestId ?? 'n/a'),
queryFn: async () => {
const responses = (await invoke('responses', {
requestId: activeRequest?.id,
requestId,
})) as HttpResponse[];
return responses.map(convertDates);
},

View File

@@ -3,9 +3,13 @@ import type { Workspace } from '../lib/models';
import { convertDates } from '../lib/models';
import { useQuery } from '@tanstack/react-query';
export function workspacesQueryKey() {
return ['workspaces'];
}
export function useWorkspaces() {
return (
useQuery(['workspaces'], async () => {
useQuery(workspacesQueryKey(), async () => {
const workspaces = (await invoke('workspaces')) as Workspace[];
return workspaces.map(convertDates);
}).data ?? []