Upgrade to Tauri 2.0 (#23)

This commit is contained in:
Gregory Schier
2024-05-04 14:14:19 -07:00
committed by GitHub
parent 7f02060b9c
commit 896e3d5831
128 changed files with 20477 additions and 4114 deletions

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
export function useAppInfo() {
return useQuery(['appInfo'], async () => {

View File

@@ -1,5 +1,5 @@
import { useMutation } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { minPromiseMillis } from '../lib/minPromiseMillis';
import { useAlert } from './useAlert';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { CookieJar } from '../lib/models';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import type { CookieJar } from '../lib/models';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import type { Environment } from '../lib/models';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import type { Folder } from '../lib/models';
import { useActiveRequest } from './useActiveRequest';

View File

@@ -1,5 +1,5 @@
import { useMutation } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import type { GrpcRequest } from '../lib/models';
import { useActiveEnvironmentId } from './useActiveEnvironmentId';

View File

@@ -1,5 +1,5 @@
import { useMutation } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import type { HttpRequest } from '../lib/models';
import { useActiveEnvironmentId } from './useActiveEnvironmentId';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import { fallbackRequestName } from '../lib/fallbackRequestName';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import { fallbackRequestName } from '../lib/fallbackRequestName';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import type { CookieJar } from '../lib/models';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import type { Environment, Workspace } from '../lib/models';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import type { Folder } from '../lib/models';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import type { GrpcConnection } from '../lib/models';
import { grpcConnectionsQueryKey } from './useGrpcConnections';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import { grpcConnectionsQueryKey } from './useGrpcConnections';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import type { HttpResponse } from '../lib/models';
import { httpResponsesQueryKey } from './useHttpResponses';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import { httpResponsesQueryKey } from './useHttpResponses';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { InlineCode } from '../components/core/InlineCode';
import { trackEvent } from '../lib/analytics';
import type { Workspace } from '../lib/models';

View File

@@ -1,5 +1,5 @@
import { useMutation } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import { setKeyValue } from '../lib/keyValueStore';
import type { GrpcRequest } from '../lib/models';

View File

@@ -1,5 +1,5 @@
import { useMutation } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { trackEvent } from '../lib/analytics';
import type { HttpRequest } from '../lib/models';
import { useActiveEnvironmentId } from './useActiveEnvironmentId';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { Environment } from '../lib/models';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
export function useFilterResponse({
responseId,

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { Folder } from '../lib/models';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,4 +1,4 @@
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { useAppRoutes } from './useAppRoutes';
import { useRegisterCommand } from './useCommands';
import { usePrompt } from './usePrompt';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import { emit } from '@tauri-apps/api/event';
import { trackEvent } from '../lib/analytics';
import { minPromiseMillis } from '../lib/minPromiseMillis';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { GrpcConnection } from '../lib/models';
export function grpcConnectionsQueryKey({ requestId }: { requestId: string }) {

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { GrpcEvent } from '../lib/models';
export function grpcEventsQueryKey({ connectionId }: { connectionId: string }) {

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { GrpcRequest } from '../lib/models';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,4 +1,4 @@
import type { OsType } from '@tauri-apps/api/os';
import type { OsType } from '@tauri-apps/plugin-os';
import { useEffect, useRef } from 'react';
import { capitalize } from '../lib/capitalize';
import { debounce } from '../lib/debounce';
@@ -160,7 +160,7 @@ export function useFormattedHotkey(action: HotkeyAction | null): string[] | null
const labelParts: string[] = [];
for (const p of parts) {
if (os === 'Darwin') {
if (os === 'macos') {
if (p === 'CmdCtrl') {
labelParts.push('⌘');
} else if (p === 'Shift') {
@@ -183,7 +183,7 @@ export function useFormattedHotkey(action: HotkeyAction | null): string[] | null
}
}
if (os === 'Darwin') {
if (os === 'macos') {
return labelParts;
} else {
return [labelParts.join('+')];
@@ -191,7 +191,7 @@ export function useFormattedHotkey(action: HotkeyAction | null): string[] | null
}
const normalizeKey = (key: string, os: OsType | null) => {
if (key === 'Meta' && os === 'Darwin') return 'CmdCtrl';
else if (key === 'Control' && os !== 'Darwin') return 'CmdCtrl';
if (key === 'Meta' && os === 'macos') return 'CmdCtrl';
else if (key === 'Control' && os !== 'macos') return 'CmdCtrl';
else return key;
};

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { HttpRequest } from '../lib/models';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { HttpResponse } from '../lib/models';
export function httpResponsesQueryKey({ requestId }: { requestId: string }) {
@@ -13,7 +13,10 @@ export function useHttpResponses(requestId: string | null) {
initialData: [],
queryKey: httpResponsesQueryKey({ requestId: requestId ?? 'n/a' }),
queryFn: async () => {
return (await invoke('cmd_list_http_responses', { requestId, limit: 200 })) as HttpResponse[];
return (await invoke('cmd_list_http_responses', {
requestId,
limit: 200,
})) as HttpResponse[];
},
}).data ?? []
);

View File

@@ -1,7 +1,6 @@
import { useMutation } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import type { OpenDialogOptions } from '@tauri-apps/api/dialog';
import { open } from '@tauri-apps/api/dialog';
import { invoke } from '@tauri-apps/api/core';
import { open } from '@tauri-apps/plugin-dialog';
import { Button } from '../components/core/Button';
import { VStack } from '../components/core/Stacks';
import { useDialog } from '../components/DialogContext';
@@ -11,11 +10,6 @@ import { useActiveWorkspaceId } from './useActiveWorkspaceId';
import { useAlert } from './useAlert';
import { useAppRoutes } from './useAppRoutes';
const openArgs: OpenDialogOptions = {
filters: [{ name: 'Export File', extensions: ['json', 'yaml'] }],
multiple: false,
};
export function useImportData() {
const routes = useAppRoutes();
const dialog = useDialog();
@@ -23,8 +17,11 @@ export function useImportData() {
const activeWorkspaceId = useActiveWorkspaceId();
const importData = async () => {
const selected = await open(openArgs);
if (selected == null || selected.length === 0) {
const selected = await open({
filters: [{ name: 'Export File', extensions: ['json', 'yaml'] }],
multiple: false,
});
if (selected == null) {
return;
}
@@ -35,7 +32,7 @@ export function useImportData() {
httpRequests: HttpRequest[];
grpcRequests: GrpcRequest[];
} = await invoke('cmd_import_data', {
filePath: Array.isArray(selected) ? selected[0] : selected,
filePath: selected.path,
workspaceId: activeWorkspaceId,
});
const importedWorkspace = imported.workspaces[0];

View File

@@ -43,19 +43,19 @@ export function useIntrospectGraphQL(baseRequest: HttpRequest) {
return Promise.reject(new Error(response.error));
}
const bodyText = await getResponseBodyText(response);
if (response.status < 200 || response.status >= 300) {
const text = await getResponseBodyText(response);
return Promise.reject(
new Error(`Request failed with status ${response.status}.\n\n${text}`),
new Error(`Request failed with status ${response.status}.\n\n${bodyText}`),
);
}
const body = await getResponseBodyText(response);
if (body === null) {
if (bodyText === null) {
return Promise.reject(new Error('Empty body returned in response'));
}
const { data } = JSON.parse(body);
const { data } = JSON.parse(bodyText);
console.log('Introspection response', data);
setIntrospection(data);
};

View File

@@ -1,4 +1,4 @@
import { appWindow } from '@tauri-apps/api/window';
import { getCurrent } from '@tauri-apps/api/webviewWindow';
import { useEffect, useState } from 'react';
import { useWindowSize } from 'react-use';
@@ -13,7 +13,7 @@ export function useIsFullscreen() {
// for this.
for (let i = 0; i < 100; i++) {
await new Promise((resolve) => setTimeout(resolve, 100));
const newIsFullscreen = await appWindow.isFullscreen();
const newIsFullscreen = await getCurrent().isFullscreen();
if (newIsFullscreen !== isFullscreen) {
setIsFullscreen(newIsFullscreen);
break;

View File

@@ -1,17 +1,22 @@
import type { EventCallback } from '@tauri-apps/api/event';
import { listen as tauriListen } from '@tauri-apps/api/event';
import type { EventCallback, EventName, Options } from '@tauri-apps/api/event';
import { listen } from '@tauri-apps/api/event';
import type { DependencyList } from 'react';
import { useEffect } from 'react';
/**
* React hook to listen to a Tauri event.
*/
export function useListenToTauriEvent<T>(event: string, fn: EventCallback<T>, deps: DependencyList = []) {
* React hook to listen to a Tauri event.
*/
export function useListenToTauriEvent<T>(
event: EventName,
fn: EventCallback<T>,
options: Options | undefined = undefined,
deps: DependencyList = [],
) {
useEffect(() => {
let unMounted = false;
let unsubFn: (() => void) | undefined = undefined;
tauriListen(event, fn).then((unsub) => {
listen(event, fn, options).then((unsub) => {
if (unMounted) unsub();
else unsubFn = unsub;
});

View File

@@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query';
import type { OsType } from '@tauri-apps/api/os';
import { type } from '@tauri-apps/api/os';
import type { OsType } from '@tauri-apps/plugin-os';
import { type } from '@tauri-apps/plugin-os';
export function useOsInfo() {
return useQuery<{ osType: OsType }>({

View File

@@ -1,6 +1,6 @@
import { useMutation } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { save } from '@tauri-apps/api/dialog';
import { invoke } from '@tauri-apps/api/core';
import { save } from '@tauri-apps/plugin-dialog';
import slugify from 'slugify';
import { trackEvent } from '../lib/analytics';
import type { HttpResponse } from '../lib/models';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { Settings } from '../lib/models';
export function settingsQueryKey() {

View File

@@ -18,6 +18,6 @@ export function useSyncWindowTitle() {
// }
//
// // TODO: This resets the stoplight position so we can't use it yet
// // appWindow.setTitle(newTitle).catch(console.error);
// // getCurrent().setTitle(newTitle).catch(console.error);
// }, [activeEnvironment, activeRequest, activeWorkspace]);
}

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { Folder } from '../lib/models';
import { getFolder } from '../lib/store';
import { foldersQueryKey } from './useFolders';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { GrpcRequest } from '../lib/models';
import { getGrpcRequest } from '../lib/store';
import { grpcRequestsQueryKey } from './useGrpcRequests';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { HttpRequest } from '../lib/models';
import { getHttpRequest } from '../lib/store';
import { httpRequestsQueryKey } from './useHttpRequests';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { CookieJar } from '../lib/models';
import { getCookieJar } from '../lib/store';
import { cookieJarsQueryKey } from './useCookieJars';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { Environment } from '../lib/models';
import { getEnvironment } from '../lib/store';
import { environmentsQueryKey } from './useEnvironments';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { Settings } from '../lib/models';
import { settingsQueryKey } from './useSettings';

View File

@@ -1,5 +1,5 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { Workspace } from '../lib/models';
import { getWorkspace } from '../lib/store';
import { workspacesQueryKey } from './useWorkspaces';

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { EnvironmentVariable } from '../lib/models';
export function variablesQueryKey({ environmentId }: { environmentId: string }) {

View File

@@ -1,4 +1,4 @@
import { appWindow } from '@tauri-apps/api/window';
import { getCurrent } from '@tauri-apps/api/webviewWindow';
import { useEffect, useState } from 'react';
export function useWindowFocus() {
@@ -6,7 +6,7 @@ export function useWindowFocus() {
useEffect(() => {
let unsub: undefined | (() => void) = undefined;
appWindow
getCurrent()
.onFocusChanged((e) => {
setVisible(e.payload);
})

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/react-query';
import { invoke } from '@tauri-apps/api';
import { invoke } from '@tauri-apps/api/core';
import type { Workspace } from '../lib/models';
// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/ban-types