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 55c91a2ec8..c905a02d5d 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 @@ -591,6 +591,13 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter } ) + clickPref( + title = DSLSettingsText.from("Add remote donate megaphone"), + onClick = { + viewModel.addRemoteDonateMegaphone() + } + ) + 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 6ca689b385..b69fbdce15 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 @@ -1,19 +1,24 @@ package org.thoughtcrime.securesms.components.settings.app.internal import android.content.Context +import org.json.JSONObject import org.signal.core.util.concurrent.SignalExecutors import org.thoughtcrime.securesms.database.MessageTable import org.thoughtcrime.securesms.database.SignalDatabase +import org.thoughtcrime.securesms.database.model.RemoteMegaphoneRecord import org.thoughtcrime.securesms.database.model.addStyle import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.emoji.EmojiFiles import org.thoughtcrime.securesms.jobs.AttachmentDownloadJob import org.thoughtcrime.securesms.jobs.CreateReleaseChannelJob +import org.thoughtcrime.securesms.jobs.FetchRemoteMegaphoneImageJob import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.notifications.v2.ConversationId import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.releasechannel.ReleaseChannel +import java.util.UUID +import kotlin.time.Duration.Companion.days class InternalSettingsRepository(context: Context) { @@ -58,4 +63,34 @@ class InternalSettingsRepository(context: Context) { } } } + + fun addRemoteDonateMegaphone() { + SignalExecutors.UNBOUNDED.execute { + val record = RemoteMegaphoneRecord( + uuid = UUID.randomUUID().toString(), + priority = 100, + countries = "*:1000000", + minimumVersion = 1, + doNotShowBefore = System.currentTimeMillis() - 2.days.inWholeMilliseconds, + doNotShowAfter = System.currentTimeMillis() + 28.days.inWholeMilliseconds, + showForNumberOfDays = 30, + conditionalId = null, + primaryActionId = RemoteMegaphoneRecord.ActionId.DONATE, + secondaryActionId = RemoteMegaphoneRecord.ActionId.SNOOZE, + imageUrl = "/static/release-notes/donate-heart.png", + title = "Donate Test", + body = "Donate body test.", + primaryActionText = "Donate", + secondaryActionText = "Snooze", + primaryActionData = null, + secondaryActionData = JSONObject("{ \"snoozeDurationDays\": [5, 7, 100] }") + ) + + SignalDatabase.remoteMegaphones.insert(record) + + if (record.imageUrl != null) { + ApplicationDependencies.getJobManager().add(FetchRemoteMegaphoneImageJob(record.uuid, record.imageUrl)) + } + } + } } 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 cbc9cd62a7..eef30986c3 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 @@ -122,6 +122,10 @@ class InternalSettingsViewModel(private val repository: InternalSettingsReposito repository.addSampleReleaseNote() } + fun addRemoteDonateMegaphone() { + repository.addRemoteDonateMegaphone() + } + fun refresh() { store.update { getState().copy(emojiVersion = it.emojiVersion) } }