From 20f8c69b0757ec23a7bb7dc9e93a79cfe54e1d0e Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 10 Jan 2024 11:52:55 -0500 Subject: [PATCH] Add donate_friend remote megaphone action. --- .../settings/app/internal/InternalSettingsFragment.kt | 7 +++++++ .../settings/app/internal/InternalSettingsRepository.kt | 4 ++-- .../settings/app/internal/InternalSettingsViewModel.kt | 7 ++++++- .../securesms/database/model/RemoteMegaphoneRecord.kt | 3 ++- .../securesms/megaphone/RemoteMegaphoneRepository.kt | 9 ++++++++- 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt index ec027ed781..f91c4c019d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt @@ -615,6 +615,13 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter } ) + clickPref( + title = DSLSettingsText.from("Add donate_friend remote megaphone"), + onClick = { + viewModel.addRemoteDonateFriendMegaphone() + } + ) + dividerPref() sectionHeaderPref(DSLSettingsText.from("CDS")) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt index b69fbdce15..bb61b1943c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt @@ -64,7 +64,7 @@ class InternalSettingsRepository(context: Context) { } } - fun addRemoteDonateMegaphone() { + fun addRemoteMegaphone(actionId: RemoteMegaphoneRecord.ActionId) { SignalExecutors.UNBOUNDED.execute { val record = RemoteMegaphoneRecord( uuid = UUID.randomUUID().toString(), @@ -75,7 +75,7 @@ class InternalSettingsRepository(context: Context) { doNotShowAfter = System.currentTimeMillis() + 28.days.inWholeMilliseconds, showForNumberOfDays = 30, conditionalId = null, - primaryActionId = RemoteMegaphoneRecord.ActionId.DONATE, + primaryActionId = actionId, secondaryActionId = RemoteMegaphoneRecord.ActionId.SNOOZE, imageUrl = "/static/release-notes/donate-heart.png", title = "Donate Test", diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt index 32df841908..494edd977f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsViewModel.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import io.reactivex.rxjava3.core.Observable import org.signal.ringrtc.CallManager +import org.thoughtcrime.securesms.database.model.RemoteMegaphoneRecord import org.thoughtcrime.securesms.jobs.StoryOnboardingDownloadJob import org.thoughtcrime.securesms.keyvalue.InternalValues import org.thoughtcrime.securesms.keyvalue.SignalStore @@ -128,7 +129,11 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito } fun addRemoteDonateMegaphone() { - repository.addRemoteDonateMegaphone() + repository.addRemoteMegaphone(RemoteMegaphoneRecord.ActionId.DONATE) + } + + fun addRemoteDonateFriendMegaphone() { + repository.addRemoteMegaphone(RemoteMegaphoneRecord.ActionId.DONATE_FOR_FRIEND) } fun refresh() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/RemoteMegaphoneRecord.kt b/app/src/main/java/org/thoughtcrime/securesms/database/model/RemoteMegaphoneRecord.kt index 2b9c7d532b..02a0de2c91 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/RemoteMegaphoneRecord.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/RemoteMegaphoneRecord.kt @@ -50,7 +50,8 @@ data class RemoteMegaphoneRecord( enum class ActionId(val id: String, val isDonateAction: Boolean = false) { SNOOZE("snooze"), FINISH("finish"), - DONATE("donate", true); + DONATE("donate", true), + DONATE_FOR_FRIEND("donate_friend", true); companion object { fun from(id: String?): ActionId? { diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/RemoteMegaphoneRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/megaphone/RemoteMegaphoneRepository.kt index fd4d346be5..d285c2d691 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/RemoteMegaphoneRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/RemoteMegaphoneRepository.kt @@ -9,6 +9,7 @@ import org.json.JSONArray import org.json.JSONException import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.logging.Log +import org.thoughtcrime.securesms.badges.gifts.flow.GiftFlowActivity import org.thoughtcrime.securesms.badges.models.Badge import org.thoughtcrime.securesms.components.settings.app.subscription.InAppDonations import org.thoughtcrime.securesms.components.settings.app.subscription.donate.DonateToSignalActivity @@ -56,10 +57,16 @@ object RemoteMegaphoneRepository { snooze.run(context, controller, remote) } + private val donateForFriend: Action = Action { context, controller, remote -> + controller.onMegaphoneNavigationRequested(Intent(context, GiftFlowActivity::class.java)) + snooze.run(context, controller, remote) + } + private val actions = mapOf( ActionId.SNOOZE.id to snooze, ActionId.FINISH.id to finish, - ActionId.DONATE.id to donate + ActionId.DONATE.id to donate, + ActionId.DONATE_FOR_FRIEND.id to donateForFriend ) @WorkerThread