diff --git a/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt b/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt index 851f43a..80e0cce 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/DetailActivity.kt @@ -460,12 +460,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra Log.d(TAG, "Copying topic URL $url to clipboard ") runOnUiThread { - val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText("topic address", url) - clipboard.setPrimaryClip(clip) - Toast - .makeText(this, getString(R.string.detail_copied_to_clipboard_message), Toast.LENGTH_LONG) - .show() + copyToClipboard(this, "topic address", url) } } @@ -639,13 +634,9 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra } } } else { - copyToClipboard(notification) - } - } - - private fun copyToClipboard(notification: Notification) { - runOnUiThread { - copyToClipboard(this, notification) + runOnUiThread { + copyToClipboard(this, "notification", decodeMessage(notification)) + } } } @@ -702,12 +693,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra }.orEmpty() } runOnUiThread { - val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText("notifications", content) - clipboard.setPrimaryClip(clip) - Toast - .makeText(this@DetailActivity, getString(R.string.detail_copied_to_clipboard_message), Toast.LENGTH_LONG) - .show() + copyToClipboard(this@DetailActivity, "notifications", content) finishActionMode() } } diff --git a/app/src/main/java/io/heckel/ntfy/ui/DetailAdapter.kt b/app/src/main/java/io/heckel/ntfy/ui/DetailAdapter.kt index 0b56803..8bc12ef 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/DetailAdapter.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/DetailAdapter.kt @@ -281,12 +281,14 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope: openItem.setOnMenuItemClickListener { openFile(context, attachment) } saveFileItem.setOnMenuItemClickListener { saveFile(context, attachment) } deleteItem.setOnMenuItemClickListener { deleteFile(context, notification, attachment) } - copyUrlItem.setOnMenuItemClickListener { copyUrl(context, attachment) } + copyUrlItem.setOnMenuItemClickListener { copyToClipboard(context, "attachment url", attachment.url); true } downloadItem.setOnMenuItemClickListener { downloadFile(context, notification) } cancelItem.setOnMenuItemClickListener { cancelDownload(context, notification) } } if (hasClickLink) { - copyContentsItem.setOnMenuItemClickListener { copyContents(context, notification) } + copyContentsItem.setOnMenuItemClickListener { + copyToClipboard(context, "notification", decodeMessage(notification)); true + } } openItem.isVisible = hasAttachment && attachmentExists downloadItem.isVisible = hasAttachment && !attachmentExists && !expired && !inProgress @@ -480,21 +482,6 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope: return true } - private fun copyUrl(context: Context, attachment: Attachment): Boolean { - val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText("attachment url", attachment.url) - clipboard.setPrimaryClip(clip) - Toast - .makeText(context, context.getString(R.string.detail_item_menu_copy_url_copied), Toast.LENGTH_LONG) - .show() - return true - } - - private fun copyContents(context: Context, notification: Notification): Boolean { - copyToClipboard(context, notification) - return true - } - private fun runAction(context: Context, notification: Notification, action: Action): Boolean { when (action.action) { ACTION_VIEW -> runViewAction(context, action) diff --git a/app/src/main/java/io/heckel/ntfy/ui/DetailSettingsActivity.kt b/app/src/main/java/io/heckel/ntfy/ui/DetailSettingsActivity.kt index ccc0191..5cd00e1 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/DetailSettingsActivity.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/DetailSettingsActivity.kt @@ -412,12 +412,7 @@ class DetailSettingsActivity : AppCompatActivity() { topicUrlPref?.summary = topicUrl topicUrlPref?.onPreferenceClickListener = OnPreferenceClickListener { val context = context ?: return@OnPreferenceClickListener false - val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText("topic url", topicUrl) - clipboard.setPrimaryClip(clip) - Toast - .makeText(context, getString(R.string.detail_settings_about_topic_url_copied_to_clipboard_message), Toast.LENGTH_LONG) - .show() + copyToClipboard(context, "topic url", topicUrl) true } } diff --git a/app/src/main/java/io/heckel/ntfy/ui/SettingsActivity.kt b/app/src/main/java/io/heckel/ntfy/ui/SettingsActivity.kt index f4ef5d8..9856440 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/SettingsActivity.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/SettingsActivity.kt @@ -552,12 +552,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere versionPref?.summary = version versionPref?.onPreferenceClickListener = OnPreferenceClickListener { val context = context ?: return@OnPreferenceClickListener false - val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText("ntfy version", version) - clipboard.setPrimaryClip(clip) - Toast - .makeText(context, getString(R.string.settings_about_version_copied_to_clipboard_message), Toast.LENGTH_LONG) - .show() + copyToClipboard(context, "ntfy version", version) true } } diff --git a/app/src/main/java/io/heckel/ntfy/util/Util.kt b/app/src/main/java/io/heckel/ntfy/util/Util.kt index 2ffbb76..5d06347 100644 --- a/app/src/main/java/io/heckel/ntfy/util/Util.kt +++ b/app/src/main/java/io/heckel/ntfy/util/Util.kt @@ -481,14 +481,14 @@ fun ensureSafeNewFile(dir: File, name: String): File { throw Exception("Cannot find safe file") } -fun copyToClipboard(context: Context, notification: Notification) { - val message = decodeMessage(notification) +fun copyToClipboard(context: Context, label: String, message: String) { val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText("notification message", message) + val clip = ClipData.newPlainText(label, message) clipboard.setPrimaryClip(clip) - Toast - .makeText(context, context.getString(R.string.detail_copied_to_clipboard_message), Toast.LENGTH_LONG) - .show() + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) { + val copied = context.getString(R.string.detail_copied_to_clipboard_message) + Toast.makeText(context, copied, Toast.LENGTH_LONG).show() + } } fun String.sha256(): String {