mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-23 01:49:13 +01:00
Optimized a few components
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useParams } from 'react-router-dom';
|
||||
import type { HttpRequest } from '../lib/models';
|
||||
import { useActiveRequestId } from './useActiveRequestId';
|
||||
import { useRequests } from './useRequests';
|
||||
|
||||
export function useActiveRequest(): HttpRequest | null {
|
||||
const requests = useRequests();
|
||||
const { requestId } = useParams<{ requestId?: string }>();
|
||||
const requestId = useActiveRequestId();
|
||||
const [activeRequest, setActiveRequest] = useState<HttpRequest | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
6
src-web/hooks/useActiveRequestId.ts
Normal file
6
src-web/hooks/useActiveRequestId.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { useParams } from 'react-router-dom';
|
||||
|
||||
export function useActiveRequestId(): string | null {
|
||||
const { requestId } = useParams<{ requestId?: string }>();
|
||||
return requestId ?? null;
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useParams } from 'react-router-dom';
|
||||
import type { Workspace } from '../lib/models';
|
||||
import { useActiveWorkspaceId } from './useActiveWorkspaceId';
|
||||
import { useWorkspaces } from './useWorkspaces';
|
||||
|
||||
export function useActiveWorkspace(): Workspace | null {
|
||||
const workspaces = useWorkspaces();
|
||||
const { workspaceId } = useParams<{ workspaceId?: string }>();
|
||||
const workspaceId = useActiveWorkspaceId();
|
||||
const [activeWorkspace, setActiveWorkspace] = useState<Workspace | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
6
src-web/hooks/useActiveWorkspaceId.ts
Normal file
6
src-web/hooks/useActiveWorkspaceId.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { useParams } from 'react-router-dom';
|
||||
|
||||
export function useActiveWorkspaceId(): string | null {
|
||||
const { workspaceId } = useParams<{ workspaceId?: string }>();
|
||||
return workspaceId ?? null;
|
||||
}
|
||||
@@ -1,18 +1,19 @@
|
||||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
import { invoke } from '@tauri-apps/api';
|
||||
import type { HttpRequest } from '../lib/models';
|
||||
import { useActiveWorkspaceId } from './useActiveWorkspaceId';
|
||||
import { requestsQueryKey } from './useRequests';
|
||||
|
||||
export function useDeleteRequest(request: HttpRequest | null) {
|
||||
export function useDeleteRequest(id: string | null) {
|
||||
const workspaceId = useActiveWorkspaceId();
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation<void, string>({
|
||||
mutationFn: async () => {
|
||||
if (!request) return;
|
||||
await invoke('delete_request', { requestId: request.id });
|
||||
if (id === null) return;
|
||||
await invoke('delete_request', { requestId: id });
|
||||
},
|
||||
onSuccess: async () => {
|
||||
if (!request) return;
|
||||
await queryClient.invalidateQueries(requestsQueryKey(request.workspaceId));
|
||||
if (workspaceId === null || id === null) return;
|
||||
await queryClient.invalidateQueries(requestsQueryKey(workspaceId));
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
7
src-web/hooks/useRequest.ts
Normal file
7
src-web/hooks/useRequest.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import type { HttpRequest } from '../lib/models';
|
||||
import { useRequests } from './useRequests';
|
||||
|
||||
export function useRequest(id: string | null): HttpRequest | null {
|
||||
const requests = useRequests();
|
||||
return requests.find((r) => r.id === id) ?? null;
|
||||
}
|
||||
@@ -1,18 +1,17 @@
|
||||
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
||||
import { invoke } from '@tauri-apps/api';
|
||||
import type { HttpRequest } from '../lib/models';
|
||||
import { responsesQueryKey } from './useResponses';
|
||||
|
||||
export function useSendRequest(request: HttpRequest | null) {
|
||||
export function useSendRequest(id: string | null) {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation<void, string>({
|
||||
mutationFn: async () => {
|
||||
if (request == null) return;
|
||||
await invoke('send_request', { requestId: request.id });
|
||||
if (id === null) return;
|
||||
await invoke('send_request', { requestId: id });
|
||||
},
|
||||
onSuccess: async () => {
|
||||
if (request == null) return;
|
||||
await queryClient.invalidateQueries(responsesQueryKey(request.id));
|
||||
if (id === null) return;
|
||||
await queryClient.invalidateQueries(responsesQueryKey(id));
|
||||
},
|
||||
}).mutate;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { app } from '@tauri-apps/api';
|
||||
import { useEffect } from 'react';
|
||||
import type { Appearance } from '../lib/theme/window';
|
||||
import {
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { useMutation } from '@tanstack/react-query';
|
||||
import { invoke } from '@tauri-apps/api';
|
||||
import type { HttpRequest } from '../lib/models';
|
||||
import { useRequest } from './useRequest';
|
||||
|
||||
export function useUpdateRequest(request: HttpRequest | null) {
|
||||
export function useUpdateRequest(id: string | null) {
|
||||
const request = useRequest(id);
|
||||
return useMutation<void, unknown, Partial<HttpRequest>>({
|
||||
mutationFn: async (patch) => {
|
||||
if (request == null) {
|
||||
|
||||
Reference in New Issue
Block a user