mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 04:28:35 +00:00
Add ability to long press 'Chats' to get backups subscriber id.
This commit is contained in:
committed by
Nicholas Tinsley
parent
b1a4e889bc
commit
b42e48a08a
@@ -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
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user