Add ability to long press 'Chats' to get backups subscriber id.

This commit is contained in:
Alex Hart
2024-07-26 11:19:50 -03:00
committed by Nicholas Tinsley
parent b1a4e889bc
commit b42e48a08a
2 changed files with 45 additions and 11 deletions

View File

@@ -5,8 +5,13 @@ import android.view.View
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.annotation.IdRes import androidx.annotation.IdRes
import androidx.annotation.StringRes
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
@@ -171,7 +176,7 @@ class AppSettingsFragment : DSLSettingsFragment(
onClick = { onClick = {
findNavController().safeNavigate(AppSettingsFragmentDirections.actionAppSettingsFragmentToManageDonationsFragment()) findNavController().safeNavigate(AppSettingsFragmentDirections.actionAppSettingsFragmentToManageDonationsFragment())
}, },
onLongClick = this@AppSettingsFragment::copySubscriberIdToClipboard onLongClick = this@AppSettingsFragment::copyDonorBadgeSubscriberIdToClipboard
) )
} else { } else {
externalLinkPref( externalLinkPref(
@@ -197,6 +202,7 @@ class AppSettingsFragment : DSLSettingsFragment(
onClick = { onClick = {
findNavController().safeNavigate(R.id.action_appSettingsFragment_to_chatsSettingsFragment) findNavController().safeNavigate(R.id.action_appSettingsFragment_to_chatsSettingsFragment)
}, },
onLongClick = this@AppSettingsFragment::copyRemoteBackupsSubscriberIdToClipboard,
isEnabled = state.isRegisteredAndUpToDate() isEnabled = state.isRegisteredAndUpToDate()
) )
@@ -288,15 +294,38 @@ class AppSettingsFragment : DSLSettingsFragment(
} }
} }
private fun copySubscriberIdToClipboard(): Boolean { private fun copyDonorBadgeSubscriberIdToClipboard(): Boolean {
// TODO [alex] -- db access on main thread! copySubscriberIdToClipboard(
val subscriber = InAppPaymentsRepository.getSubscriber(InAppPaymentSubscriberRecord.Type.DONATION) subscriberType = InAppPaymentSubscriberRecord.Type.DONATION,
return if (subscriber == null) { toastSuccessStringRes = R.string.AppSettingsFragment__copied_donor_subscriber_id_to_clipboard
false )
} else {
Toast.makeText(requireContext(), R.string.AppSettingsFragment__copied_subscriber_id_to_clipboard, Toast.LENGTH_LONG).show() return true
}
private fun copyRemoteBackupsSubscriberIdToClipboard(): Boolean {
copySubscriberIdToClipboard(
subscriberType = InAppPaymentSubscriberRecord.Type.BACKUP,
toastSuccessStringRes = R.string.AppSettingsFragment__copied_backups_subscriber_id_to_clipboard
)
return true
}
private fun copySubscriberIdToClipboard(
subscriberType: InAppPaymentSubscriberRecord.Type,
@StringRes toastSuccessStringRes: Int
) {
lifecycleScope.launch {
val subscriber = withContext(Dispatchers.IO) {
InAppPaymentsRepository.getSubscriber(subscriberType)
}
withContext(Dispatchers.Main) {
if (subscriber != null) {
Toast.makeText(requireContext(), toastSuccessStringRes, Toast.LENGTH_LONG).show()
Util.copyToClipboard(requireContext(), subscriber.subscriberId.serialize()) Util.copyToClipboard(requireContext(), subscriber.subscriberId.serialize())
true }
}
} }
} }

View File

@@ -4793,7 +4793,12 @@
<!-- AppSettingsFragment --> <!-- AppSettingsFragment -->
<string name="AppSettingsFragment__invite_your_friends">Invite your friends</string> <string name="AppSettingsFragment__invite_your_friends">Invite your friends</string>
<string name="AppSettingsFragment__copied_subscriber_id_to_clipboard">Copied subscriber id to clipboard</string> <!-- String displayed in a toast when we successfully copy the donations subscriber id to the clipboard -->
<string name="AppSettingsFragment__copied_donor_subscriber_id_to_clipboard">Copied donor subscriber id to clipboard</string>
<!-- String displayed in a toast when we successfully copy the backups subscriber id to the clipboard -->
<string name="AppSettingsFragment__copied_backups_subscriber_id_to_clipboard">Copied backups subscriber id to clipboard</string>
<!-- String displayed in a toast when a subscriber id is not present for a given type -->
<string name="AppSettingsFragment__no_subscriber_id_set">No subscriber id set</string>
<!-- AccountSettingsFragment --> <!-- AccountSettingsFragment -->
<string name="AccountSettingsFragment__account">Account</string> <string name="AccountSettingsFragment__account">Account</string>