Skip to content

Commit

Permalink
Dust off remote megaphone for upcoming donate megaphone.
Browse files Browse the repository at this point in the history
  • Loading branch information
cody-signal committed Aug 18, 2022
1 parent 95fc9d6 commit cca35ec
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import org.thoughtcrime.securesms.components.settings.DSLSettingsText
import org.thoughtcrime.securesms.components.settings.configure
import org.thoughtcrime.securesms.database.LocalMetricsDatabase
import org.thoughtcrime.securesms.database.LogDatabase
import org.thoughtcrime.securesms.database.MegaphoneDatabase
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.jobmanager.JobTracker
Expand All @@ -35,6 +36,8 @@ import org.thoughtcrime.securesms.jobs.StorageForcePushJob
import org.thoughtcrime.securesms.jobs.SubscriptionKeepAliveJob
import org.thoughtcrime.securesms.jobs.SubscriptionReceiptRequestResponseJob
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.megaphone.MegaphoneRepository
import org.thoughtcrime.securesms.megaphone.Megaphones
import org.thoughtcrime.securesms.payments.DataExportUtil
import org.thoughtcrime.securesms.storage.StorageSyncHelper
import org.thoughtcrime.securesms.util.ConversationUtil
Expand Down Expand Up @@ -431,6 +434,19 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter
}
)

clickPref(
title = DSLSettingsText.from(R.string.preferences__internal_reset_donation_megaphone),
onClick = {
SignalDatabase.remoteMegaphones.debugRemoveAll()
MegaphoneDatabase.getInstance(ApplicationDependencies.getApplication()).let {
it.delete(Megaphones.Event.REMOTE_MEGAPHONE)
it.markFirstVisible(Megaphones.Event.DONATE_Q2_2022, System.currentTimeMillis() - TimeUnit.DAYS.toMillis(31))
}
// Force repository database cache refresh
MegaphoneRepository(ApplicationDependencies.getApplication()).onFirstEverAppLaunch()
}
)

clickPref(
title = DSLSettingsText.from(R.string.preferences__internal_fetch_release_channel),
onClick = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import android.database.Cursor
import android.net.Uri
import androidx.core.content.contentValuesOf
import androidx.core.net.toUri
import org.signal.core.util.delete
import org.signal.core.util.readToList
import org.signal.core.util.requireInt
import org.signal.core.util.requireLong
Expand Down Expand Up @@ -167,6 +168,13 @@ class RemoteMegaphoneDatabase(context: Context, databaseHelper: SignalDatabase)
.run()
}

/** Only call from internal settings */
fun debugRemoveAll() {
writableDatabase
.delete(TABLE_NAME)
.run()
}

private fun RemoteMegaphoneRecord.toContentValues(): ContentValues {
return contentValuesOf(
UUID to uuid,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
package org.thoughtcrime.securesms.jobs

import okhttp3.Request
import okhttp3.ResponseBody
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.jobmanager.Data
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.jobmanager.impl.AutoDownloadEmojiConstraint
import org.thoughtcrime.securesms.providers.BlobProvider
import org.thoughtcrime.securesms.s3.S3
import org.thoughtcrime.securesms.transport.RetryLaterException
import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException
import java.io.IOException
import java.util.concurrent.TimeUnit

Expand Down Expand Up @@ -42,29 +40,20 @@ class FetchRemoteMegaphoneImageJob(parameters: Parameters, private val uuid: Str
}

override fun onRun() {
val request = Request.Builder()
.get()
.url(imageUrl)
.build()

try {
ApplicationDependencies.getOkHttpClient().newCall(request).execute().use { response ->
if (response.isSuccessful) {
val body: ResponseBody? = response.body()
if (body != null) {
val uri = BlobProvider.getInstance()
.forData(body.byteStream(), body.contentLength())
.createForMultipleSessionsOnDisk(context)
S3.getObject(imageUrl).use { response ->
val body: ResponseBody? = response.body()
if (body != null) {
val uri = BlobProvider.getInstance()
.forData(body.byteStream(), body.contentLength())
.createForMultipleSessionsOnDisk(context)

SignalDatabase.remoteMegaphones.setImageUri(uuid, uri)
}
} else {
throw NonSuccessfulResponseCodeException(response.code())
SignalDatabase.remoteMegaphones.setImageUri(uuid, uri)
}
}
} catch (e: IOException) {
Log.i(TAG, "Encountered unknown IO error while fetching image for $uuid", e)
throw RetryLaterException()
throw RetryLaterException(e)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ object RemoteMegaphoneRepository {
}

private val donate: Action = Action { context, controller, remote ->
controller.onMegaphoneNavigationRequested(AppSettingsActivity.subscriptions(context))
controller.onMegaphoneNavigationRequested(AppSettingsActivity.manageSubscriptions(context))
finish.run(context, controller, remote)
}

Expand Down
4 changes: 3 additions & 1 deletion app/src/main/res/navigation/app_settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -505,7 +505,9 @@
app:enterAnim="@anim/fragment_open_enter"
app:exitAnim="@anim/fragment_open_exit"
app:popEnterAnim="@anim/fragment_close_enter"
app:popExitAnim="@anim/fragment_close_exit" />
app:popExitAnim="@anim/fragment_close_exit"
app:popUpTo="@id/app_settings"
app:popUpToInclusive="true" />

<action
android:id="@+id/action_direct_to_notificationProfiles"
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2820,6 +2820,7 @@
<string name="preferences__internal_release_channel" translatable="false">Release channel</string>
<string name="preferences__internal_fetch_release_channel" translatable="false">Fetch release channel</string>
<string name="preferences__internal_release_channel_set_last_version" translatable="false">Set last version seen back 10 versions</string>
<string name="preferences__internal_reset_donation_megaphone" translatable="false">Reset donation megaphone</string>
<string name="preferences__internal_add_sample_note" translatable="false">Add sample note</string>
<string name="preferences__internal_disable_stories" translatable="false">Disable stories</string>
<string name="preferences__internal_cds" translatable="false">CDS</string>
Expand Down

0 comments on commit cca35ec

Please sign in to comment.