kopia lustrzana https://github.com/ryukoposting/Signal-Android
Dust off remote megaphone for upcoming donate megaphone.
rodzic
95fc9d6c3c
commit
cca35ec687
|
@ -21,6 +21,7 @@ import org.thoughtcrime.securesms.components.settings.DSLSettingsText
|
||||||
import org.thoughtcrime.securesms.components.settings.configure
|
import org.thoughtcrime.securesms.components.settings.configure
|
||||||
import org.thoughtcrime.securesms.database.LocalMetricsDatabase
|
import org.thoughtcrime.securesms.database.LocalMetricsDatabase
|
||||||
import org.thoughtcrime.securesms.database.LogDatabase
|
import org.thoughtcrime.securesms.database.LogDatabase
|
||||||
|
import org.thoughtcrime.securesms.database.MegaphoneDatabase
|
||||||
import org.thoughtcrime.securesms.database.SignalDatabase
|
import org.thoughtcrime.securesms.database.SignalDatabase
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||||
import org.thoughtcrime.securesms.jobmanager.JobTracker
|
import org.thoughtcrime.securesms.jobmanager.JobTracker
|
||||||
|
@ -35,6 +36,8 @@ import org.thoughtcrime.securesms.jobs.StorageForcePushJob
|
||||||
import org.thoughtcrime.securesms.jobs.SubscriptionKeepAliveJob
|
import org.thoughtcrime.securesms.jobs.SubscriptionKeepAliveJob
|
||||||
import org.thoughtcrime.securesms.jobs.SubscriptionReceiptRequestResponseJob
|
import org.thoughtcrime.securesms.jobs.SubscriptionReceiptRequestResponseJob
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
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.payments.DataExportUtil
|
||||||
import org.thoughtcrime.securesms.storage.StorageSyncHelper
|
import org.thoughtcrime.securesms.storage.StorageSyncHelper
|
||||||
import org.thoughtcrime.securesms.util.ConversationUtil
|
import org.thoughtcrime.securesms.util.ConversationUtil
|
||||||
|
@ -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(
|
clickPref(
|
||||||
title = DSLSettingsText.from(R.string.preferences__internal_fetch_release_channel),
|
title = DSLSettingsText.from(R.string.preferences__internal_fetch_release_channel),
|
||||||
onClick = {
|
onClick = {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import android.database.Cursor
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.core.content.contentValuesOf
|
import androidx.core.content.contentValuesOf
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
|
import org.signal.core.util.delete
|
||||||
import org.signal.core.util.readToList
|
import org.signal.core.util.readToList
|
||||||
import org.signal.core.util.requireInt
|
import org.signal.core.util.requireInt
|
||||||
import org.signal.core.util.requireLong
|
import org.signal.core.util.requireLong
|
||||||
|
@ -167,6 +168,13 @@ class RemoteMegaphoneDatabase(context: Context, databaseHelper: SignalDatabase)
|
||||||
.run()
|
.run()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Only call from internal settings */
|
||||||
|
fun debugRemoveAll() {
|
||||||
|
writableDatabase
|
||||||
|
.delete(TABLE_NAME)
|
||||||
|
.run()
|
||||||
|
}
|
||||||
|
|
||||||
private fun RemoteMegaphoneRecord.toContentValues(): ContentValues {
|
private fun RemoteMegaphoneRecord.toContentValues(): ContentValues {
|
||||||
return contentValuesOf(
|
return contentValuesOf(
|
||||||
UUID to uuid,
|
UUID to uuid,
|
||||||
|
|
|
@ -1,16 +1,14 @@
|
||||||
package org.thoughtcrime.securesms.jobs
|
package org.thoughtcrime.securesms.jobs
|
||||||
|
|
||||||
import okhttp3.Request
|
|
||||||
import okhttp3.ResponseBody
|
import okhttp3.ResponseBody
|
||||||
import org.signal.core.util.logging.Log
|
import org.signal.core.util.logging.Log
|
||||||
import org.thoughtcrime.securesms.database.SignalDatabase
|
import org.thoughtcrime.securesms.database.SignalDatabase
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
|
||||||
import org.thoughtcrime.securesms.jobmanager.Data
|
import org.thoughtcrime.securesms.jobmanager.Data
|
||||||
import org.thoughtcrime.securesms.jobmanager.Job
|
import org.thoughtcrime.securesms.jobmanager.Job
|
||||||
import org.thoughtcrime.securesms.jobmanager.impl.AutoDownloadEmojiConstraint
|
import org.thoughtcrime.securesms.jobmanager.impl.AutoDownloadEmojiConstraint
|
||||||
import org.thoughtcrime.securesms.providers.BlobProvider
|
import org.thoughtcrime.securesms.providers.BlobProvider
|
||||||
|
import org.thoughtcrime.securesms.s3.S3
|
||||||
import org.thoughtcrime.securesms.transport.RetryLaterException
|
import org.thoughtcrime.securesms.transport.RetryLaterException
|
||||||
import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
|
@ -42,29 +40,20 @@ class FetchRemoteMegaphoneImageJob(parameters: Parameters, private val uuid: Str
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onRun() {
|
override fun onRun() {
|
||||||
val request = Request.Builder()
|
|
||||||
.get()
|
|
||||||
.url(imageUrl)
|
|
||||||
.build()
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ApplicationDependencies.getOkHttpClient().newCall(request).execute().use { response ->
|
S3.getObject(imageUrl).use { response ->
|
||||||
if (response.isSuccessful) {
|
val body: ResponseBody? = response.body()
|
||||||
val body: ResponseBody? = response.body()
|
if (body != null) {
|
||||||
if (body != null) {
|
val uri = BlobProvider.getInstance()
|
||||||
val uri = BlobProvider.getInstance()
|
.forData(body.byteStream(), body.contentLength())
|
||||||
.forData(body.byteStream(), body.contentLength())
|
.createForMultipleSessionsOnDisk(context)
|
||||||
.createForMultipleSessionsOnDisk(context)
|
|
||||||
|
|
||||||
SignalDatabase.remoteMegaphones.setImageUri(uuid, uri)
|
SignalDatabase.remoteMegaphones.setImageUri(uuid, uri)
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw NonSuccessfulResponseCodeException(response.code())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e: IOException) {
|
} catch (e: IOException) {
|
||||||
Log.i(TAG, "Encountered unknown IO error while fetching image for $uuid", e)
|
Log.i(TAG, "Encountered unknown IO error while fetching image for $uuid", e)
|
||||||
throw RetryLaterException()
|
throw RetryLaterException(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ object RemoteMegaphoneRepository {
|
||||||
}
|
}
|
||||||
|
|
||||||
private val donate: Action = Action { context, controller, remote ->
|
private val donate: Action = Action { context, controller, remote ->
|
||||||
controller.onMegaphoneNavigationRequested(AppSettingsActivity.subscriptions(context))
|
controller.onMegaphoneNavigationRequested(AppSettingsActivity.manageSubscriptions(context))
|
||||||
finish.run(context, controller, remote)
|
finish.run(context, controller, remote)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -505,7 +505,9 @@
|
||||||
app:enterAnim="@anim/fragment_open_enter"
|
app:enterAnim="@anim/fragment_open_enter"
|
||||||
app:exitAnim="@anim/fragment_open_exit"
|
app:exitAnim="@anim/fragment_open_exit"
|
||||||
app:popEnterAnim="@anim/fragment_close_enter"
|
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
|
<action
|
||||||
android:id="@+id/action_direct_to_notificationProfiles"
|
android:id="@+id/action_direct_to_notificationProfiles"
|
||||||
|
|
|
@ -2820,6 +2820,7 @@
|
||||||
<string name="preferences__internal_release_channel" translatable="false">Release channel</string>
|
<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_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_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_add_sample_note" translatable="false">Add sample note</string>
|
||||||
<string name="preferences__internal_disable_stories" translatable="false">Disable stories</string>
|
<string name="preferences__internal_disable_stories" translatable="false">Disable stories</string>
|
||||||
<string name="preferences__internal_cds" translatable="false">CDS</string>
|
<string name="preferences__internal_cds" translatable="false">CDS</string>
|
||||||
|
|
Ładowanie…
Reference in New Issue