diff --git a/.changes/clear-clipboard.md b/.changes/clear-clipboard.md new file mode 100644 index 00000000..f1ae025c --- /dev/null +++ b/.changes/clear-clipboard.md @@ -0,0 +1,5 @@ +--- +"clipboard-manager": "minor" +--- + +Add support for clearing clipboard text on iOS and Android. \ No newline at end of file diff --git a/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt b/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt index b3947ece..942a8317 100644 --- a/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt +++ b/plugins/clipboard-manager/android/src/main/java/ClipboardPlugin.kt @@ -92,7 +92,11 @@ class ClipboardPlugin(private val activity: Activity) : Plugin(activity) { val clipData = when (args) { is WriteOptions.PlainText -> { ClipData.newPlainText(args.label, args.text) + } else -> { + invoke.reject("Invalid write options provided") + return } + } manager.setPrimaryClip(clipData) @@ -120,4 +124,12 @@ class ClipboardPlugin(private val activity: Activity) : Plugin(activity) { invoke.resolveObject(data) } + + @Command + fun clear(invoke: Invoke) { + if (manager.hasPrimaryClip()) { + manager.clearPrimaryClip() + } + invoke.resolve() + } } diff --git a/plugins/clipboard-manager/ios/Sources/ClipboardPlugin.swift b/plugins/clipboard-manager/ios/Sources/ClipboardPlugin.swift index c85abf7c..cb4fc9b2 100644 --- a/plugins/clipboard-manager/ios/Sources/ClipboardPlugin.swift +++ b/plugins/clipboard-manager/ios/Sources/ClipboardPlugin.swift @@ -38,6 +38,12 @@ class ClipboardPlugin: Plugin { invoke.reject("Clipboard is empty") } } + + @objc public func clear(_ invoke: Invoke) throws { + let clipboard = UIPasteboard.general + clipboard.items = [] + invoke.resolve() + } } @_cdecl("init_plugin_clipboard") diff --git a/plugins/clipboard-manager/src/mobile.rs b/plugins/clipboard-manager/src/mobile.rs index 7a35196c..72d5f6e0 100644 --- a/plugins/clipboard-manager/src/mobile.rs +++ b/plugins/clipboard-manager/src/mobile.rs @@ -92,9 +92,7 @@ impl Clipboard { } pub fn clear(&self) -> crate::Result<()> { - Err(crate::Error::Clipboard( - "Unsupported on this platform".to_string(), - )) + self.0.run_mobile_plugin("clear", ()).map_err(Into::into) } }