Przeglądaj źródła

revert plugin runtime using tarui/api/http, not using fetch_stream

lloydzhou 1 rok temu
rodzic
commit
5141145e4d
1 zmienionych plików z 26 dodań i 10 usunięć
  1. 26 10
      app/utils.ts

+ 26 - 10
app/utils.ts

@@ -2,8 +2,8 @@ import { useEffect, useState } from "react";
 import { showToast } from "./components/ui-lib";
 import Locale from "./locales";
 import { RequestMessage } from "./client/api";
-import { ServiceProvider } from "./constant";
-import { fetch } from "./utils/stream";
+import { ServiceProvider, REQUEST_TIMEOUT_MS } from "./constant";
+import { fetch as tauriFetch, ResponseType } from "@tauri-apps/api/http";
 
 export function trimTopic(topic: string) {
   // Fix an issue where double quotes still show in the Indonesian language
@@ -287,19 +287,35 @@ export function showPlugins(provider: ServiceProvider, model: string) {
   return false;
 }
 
+export function fetch(
+  url: string,
+  options?: Record<string, unknown>,
+): Promise<any> {
+  if (window.__TAURI__) {
+    const payload = options?.body || options?.data;
+    return tauriFetch(url, {
+      ...options,
+      body:
+        payload &&
+        ({
+          type: "Text",
+          payload,
+        } as any),
+      timeout: ((options?.timeout as number) || REQUEST_TIMEOUT_MS) / 1000,
+      responseType:
+        options?.responseType == "text" ? ResponseType.Text : ResponseType.JSON,
+    } as any);
+  }
+  return window.fetch(url, options);
+}
+
 export function adapter(config: Record<string, unknown>) {
-  const { baseURL, url, params, method, data, ...rest } = config;
+  const { baseURL, url, params, ...rest } = config;
   const path = baseURL ? `${baseURL}${url}` : url;
   const fetchUrl = params
     ? `${path}?${new URLSearchParams(params as any).toString()}`
     : path;
-  return fetch(fetchUrl as string, {
-    ...rest,
-    method,
-    body: method.toUpperCase() == "GET" ? undefined : data,
-  })
-    .then((res) => res.text())
-    .then((data) => ({ data }));
+  return fetch(fetchUrl as string, { ...rest, responseType: "text" });
 }
 
 export function safeLocalStorage(): {