diff --git a/src-tauri/capabilities/capabilities.json b/src-tauri/capabilities/capabilities.json index c35eb127..89ae917c 100644 --- a/src-tauri/capabilities/capabilities.json +++ b/src-tauri/capabilities/capabilities.json @@ -11,6 +11,7 @@ "core:event:allow-listen", "core:event:allow-unlisten", "os:allow-os-type", + "clipboard-manager:allow-clear", "clipboard-manager:allow-write-text", "clipboard-manager:allow-read-text", "dialog:allow-open", diff --git a/src-tauri/gen/schemas/capabilities.json b/src-tauri/gen/schemas/capabilities.json index 65e0d095..d45de640 100644 --- a/src-tauri/gen/schemas/capabilities.json +++ b/src-tauri/gen/schemas/capabilities.json @@ -1 +1 @@ -{"main":{"identifier":"main","description":"Main permissions","local":true,"windows":["*"],"permissions":["core:event:allow-emit","core:event:allow-listen","core:event:allow-unlisten","os:allow-os-type","clipboard-manager:allow-write-text","clipboard-manager:allow-read-text","dialog:allow-open","dialog:allow-save","fs:allow-read-file","fs:allow-read-text-file",{"identifier":"fs:scope","allow":[{"path":"$APPDATA"},{"path":"$APPDATA/**"}]},"shell:allow-open","core:webview:allow-set-webview-zoom","core:window:allow-close","core:window:allow-is-fullscreen","core:window:allow-maximize","core:window:allow-minimize","core:window:allow-toggle-maximize","core:window:allow-set-decorations","core:window:allow-set-title","core:window:allow-start-dragging","core:window:allow-unmaximize","core:window:allow-theme","clipboard-manager:allow-read-text","clipboard-manager:allow-write-text"]}} \ No newline at end of file +{"main":{"identifier":"main","description":"Main permissions","local":true,"windows":["*"],"permissions":["core:event:allow-emit","core:event:allow-listen","core:event:allow-unlisten","os:allow-os-type","clipboard-manager:allow-write-text","clipboard-manager:allow-clear","clipboard-manager:allow-read-text","dialog:allow-open","dialog:allow-save","fs:allow-read-file","fs:allow-read-text-file",{"identifier":"fs:scope","allow":[{"path":"$APPDATA"},{"path":"$APPDATA/**"}]},"shell:allow-open","core:webview:allow-set-webview-zoom","core:window:allow-close","core:window:allow-is-fullscreen","core:window:allow-maximize","core:window:allow-minimize","core:window:allow-toggle-maximize","core:window:allow-set-decorations","core:window:allow-set-title","core:window:allow-start-dragging","core:window:allow-unmaximize","core:window:allow-theme","clipboard-manager:allow-read-text","clipboard-manager:allow-write-text"]}} \ No newline at end of file diff --git a/src-web/hooks/useClipboardText.ts b/src-web/hooks/useClipboardText.ts index a00e3e28..321dfb19 100644 --- a/src-web/hooks/useClipboardText.ts +++ b/src-web/hooks/useClipboardText.ts @@ -1,8 +1,8 @@ -import { readText, writeText } from '@tauri-apps/plugin-clipboard-manager'; +import { clear, readText, writeText } from '@tauri-apps/plugin-clipboard-manager'; import { useCallback, useEffect } from 'react'; +import { createGlobalState } from 'react-use'; import { useToast } from '../components/ToastContext'; import { useWindowFocus } from './useWindowFocus'; -import { createGlobalState } from 'react-use'; const useClipboardTextState = createGlobalState(''); @@ -12,12 +12,21 @@ export function useClipboardText({ disableToast }: { disableToast?: boolean } = const toast = useToast(); useEffect(() => { - readText().then(setValue); + readText() + .then(setValue) + .catch(() => { + // Clipboard probably empty + setValue(''); + }); }, [focused, setValue]); const setText = useCallback( - (text: string) => { - writeText(text).catch(console.error); + (text: string | null) => { + if (text == null) { + clear().catch(console.error); + } else { + writeText(text).catch(console.error); + } if (text != '' && !disableToast) { toast.show({ id: 'copied', @@ -25,7 +34,7 @@ export function useClipboardText({ disableToast }: { disableToast?: boolean } = message: 'Copied to clipboard', }); } - setValue(text); + setValue(text || ''); }, [disableToast, setValue, toast], ); diff --git a/src-web/hooks/useImportCurl.ts b/src-web/hooks/useImportCurl.ts index f2ddfd53..6300d390 100644 --- a/src-web/hooks/useImportCurl.ts +++ b/src-web/hooks/useImportCurl.ts @@ -40,7 +40,7 @@ export function useImportCurl({ clearClipboard }: { clearClipboard?: boolean } = }); if (clearClipboard) { - setClipboardText(''); + setClipboardText(null); } }, });