Browse Source

feat: close #1994 add clipboard write api

Yidadaa 1 year ago
parent
commit
98afd5516b
4 changed files with 27 additions and 5 deletions
  1. 6 0
      app/global.d.ts
  2. 6 1
      app/utils.ts
  3. 1 1
      src-tauri/Cargo.toml
  4. 14 3
      src-tauri/tauri.conf.json

+ 6 - 0
app/global.d.ts

@@ -9,3 +9,9 @@ declare module "*.scss" {
 }
 
 declare module "*.svg";
+
+declare interface Window {
+  __TAURI__?: {
+    writeText(text: string): Promise<void>;
+  };
+}

+ 6 - 1
app/utils.ts

@@ -8,7 +8,12 @@ export function trimTopic(topic: string) {
 
 export async function copyToClipboard(text: string) {
   try {
-    await navigator.clipboard.writeText(text);
+    if (window.__TAURI__) {
+      window.__TAURI__.writeText(text);
+    } else {
+      await navigator.clipboard.writeText(text);
+    }
+
     showToast(Locale.Copy.Success);
   } catch (error) {
     const textArea = document.createElement("textarea");

+ 1 - 1
src-tauri/Cargo.toml

@@ -17,7 +17,7 @@ tauri-build = { version = "1.3.0", features = [] }
 [dependencies]
 serde_json = "1.0"
 serde = { version = "1.0", features = ["derive"] }
-tauri = { version = "1.3.0", features = ["clipboard-all", "shell-open", "updater", "window-close", "window-hide", "window-maximize", "window-minimize", "window-set-icon", "window-set-ignore-cursor-events", "window-set-resizable", "window-show", "window-start-dragging", "window-unmaximize", "window-unminimize"] }
+tauri = { version = "1.3.0", features = ["clipboard-all", "dialog-all", "shell-open", "updater", "window-close", "window-hide", "window-maximize", "window-minimize", "window-set-icon", "window-set-ignore-cursor-events", "window-set-resizable", "window-show", "window-start-dragging", "window-unmaximize", "window-unminimize"] }
 tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" }
 
 [features]

+ 14 - 3
src-tauri/tauri.conf.json

@@ -4,11 +4,12 @@
     "beforeBuildCommand": "yarn export",
     "beforeDevCommand": "yarn export:dev",
     "devPath": "http://localhost:3000",
-    "distDir": "../out"
+    "distDir": "../out",
+    "withGlobalTauri": true
   },
   "package": {
     "productName": "chatgpt-next-web",
-    "version": "2.8.4"
+    "version": "2.8.5"
   },
   "tauri": {
     "allowlist": {
@@ -17,8 +18,18 @@
         "all": false,
         "open": true
       },
+      "dialog": {
+        "all": true,
+        "ask": true,
+        "confirm": true,
+        "message": true,
+        "open": true,
+        "save": true
+      },
       "clipboard": {
-        "all": true
+        "all": true,
+        "writeText": true,
+        "readText": true
       },
       "window": {
         "all": false,