From 341a5320c33d3c7b041abf7eb0ab7ad8009e6c3f Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Fri, 13 Sep 2024 12:03:10 -0300 Subject: [PATCH] fix(clipboard): Android warnings and build on SDK under 28 (#1771) --- .changes/fix-clipboard-warnings-sdk.md | 6 ++ examples/api/src/views/Clipboard.svelte | 57 +++++++++---------- .../android/src/main/java/ClipboardPlugin.kt | 11 +++- plugins/clipboard-manager/guest-js/index.ts | 5 ++ 4 files changed, 48 insertions(+), 31 deletions(-) create mode 100644 .changes/fix-clipboard-warnings-sdk.md diff --git a/.changes/fix-clipboard-warnings-sdk.md b/.changes/fix-clipboard-warnings-sdk.md new file mode 100644 index 00000000..b98f222e --- /dev/null +++ b/.changes/fix-clipboard-warnings-sdk.md @@ -0,0 +1,6 @@ +--- +"clipboard-manager": patch +"clipboard-manager-js": patch +--- + +Fix warnings and clear implementation on Android below SDK 28. diff --git a/examples/api/src/views/Clipboard.svelte b/examples/api/src/views/Clipboard.svelte index c86282d9..f16a7d71 100644 --- a/examples/api/src/views/Clipboard.svelte +++ b/examples/api/src/views/Clipboard.svelte @@ -1,59 +1,59 @@ @@ -65,6 +65,5 @@ /> - diff --git a/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt b/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt index 942a8317..ebb931b4 100644 --- a/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt +++ b/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt @@ -4,12 +4,12 @@ package app.tauri.clipboard -import android.R.attr.value import android.app.Activity import android.content.ClipData import android.content.ClipDescription import android.content.ClipboardManager import android.content.Context +import android.os.Build import app.tauri.annotation.Command import app.tauri.annotation.InvokeArg import app.tauri.annotation.TauriPlugin @@ -59,6 +59,9 @@ internal class ReadClipDataSerializer @JvmOverloads constructor(t: Class { + throw Exception("unimplemented ReadClipData") + } } jgen.writeEndObject() @@ -93,7 +96,7 @@ class ClipboardPlugin(private val activity: Activity) : Plugin(activity) { is WriteOptions.PlainText -> { ClipData.newPlainText(args.label, args.text) } else -> { - invoke.reject("Invalid write options provided") + invoke.reject("unimplemented WriteOptions") return } @@ -128,7 +131,11 @@ class ClipboardPlugin(private val activity: Activity) : Plugin(activity) { @Command fun clear(invoke: Invoke) { if (manager.hasPrimaryClip()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { manager.clearPrimaryClip() + } else { + manager.setPrimaryClip(ClipData.newPlainText("", "")) + } } invoke.resolve() } diff --git a/plugins/clipboard-manager/guest-js/index.ts b/plugins/clipboard-manager/guest-js/index.ts index f09754e6..d39e2f81 100644 --- a/plugins/clipboard-manager/guest-js/index.ts +++ b/plugins/clipboard-manager/guest-js/index.ts @@ -114,6 +114,11 @@ async function writeHtml(html: string, altHtml?: string): Promise { /** * Clears the clipboard. + * + * #### Platform-specific + * + * - **Android:** Only supported on SDK 28+. For older releases we write an empty string to the clipboard instead. + * * @example * ```typescript * import { clear } from '@tauri-apps/plugin-clipboard-manager';