Copy to clipboard

This commit is contained in:
Philipp Heckel 2021-11-07 21:02:27 -05:00
parent 94d45eee3b
commit 474ab18090
3 changed files with 19 additions and 6 deletions

View file

@ -92,12 +92,12 @@ class AddFragment(private val viewModel: SubscriptionsViewModel, private val onS
subscribeButton.isEnabled = false
} else if (useAnotherServerCheckbox.isChecked) {
subscribeButton.isEnabled = topic.isNotBlank()
&& "[-_A-Za-z0-9]+".toRegex().matches(topic)
&& "[-_A-Za-z0-9]{1,64}".toRegex().matches(topic)
&& baseUrl.isNotBlank()
&& "^https?://.+".toRegex().matches(baseUrl)
} else {
subscribeButton.isEnabled = topic.isNotBlank()
&& "[-_A-Za-z0-9]+".toRegex().matches(topic)
&& "[-_A-Za-z0-9]{1,64}".toRegex().matches(topic)
}
}
}

View file

@ -1,6 +1,10 @@
package io.heckel.ntfy.ui
import android.R.attr.label
import android.app.AlertDialog
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.Html
@ -17,16 +21,12 @@ import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.RecyclerView
import com.android.volley.VolleyError
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley
import io.heckel.ntfy.R
import io.heckel.ntfy.app.Application
import io.heckel.ntfy.data.Notification
import io.heckel.ntfy.data.topicShortUrl
import io.heckel.ntfy.data.topicUrl
import io.heckel.ntfy.msg.ApiService
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import java.util.*
@ -203,9 +203,21 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback {
private fun onNotificationClick(notification: Notification) {
if (actionMode != null) {
handleActionModeClick(notification)
} else {
copyToClipboard(notification)
}
}
private fun copyToClipboard(notification: Notification) {
val message = notification.message + "\n\n" + Date(notification.timestamp * 1000).toString()
val clipboard: ClipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("notification message", message)
clipboard.setPrimaryClip(clip)
Toast
.makeText(this, getString(R.string.detail_copied_to_clipboard_message), Toast.LENGTH_LONG)
.show()
}
private fun onNotificationLongClick(notification: Notification) {
if (actionMode == null) {
beginActionMode(notification)

View file

@ -53,6 +53,7 @@
<string name="detail_refresh_message_result">%1$d notification(s) added</string>
<string name="detail_refresh_message_no_results">No new notifications found</string>
<string name="detail_refresh_message_error">Could not refresh topic: %1$s</string>
<string name="detail_copied_to_clipboard_message">Copied to clipboard</string>
<!-- Detail activity: Action bar -->
<string name="detail_menu_test">Send test notification</string>