mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-03-17 19:58:57 +03:00
Fix UISIS preference listener
This commit is contained in:
parent
be119ea161
commit
cf026b22b8
4 changed files with 33 additions and 11 deletions
|
@ -17,9 +17,11 @@
|
|||
package im.vector.app
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import im.vector.app.core.di.ActiveSessionHolder
|
||||
import im.vector.app.features.rageshake.BugReporter
|
||||
import im.vector.app.features.rageshake.ReportType
|
||||
import im.vector.app.features.settings.VectorPreferences
|
||||
import io.reactivex.disposables.Disposable
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
@ -39,8 +41,9 @@ class AutoRageShaker @Inject constructor(
|
|||
private val sessionDataSource: ActiveSessionDataSource,
|
||||
private val activeSessionHolder: ActiveSessionHolder,
|
||||
private val bugReporter: BugReporter,
|
||||
private val context: Context
|
||||
) : Session.Listener {
|
||||
private val context: Context,
|
||||
private val vectorPreferences: VectorPreferences
|
||||
) : Session.Listener, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
private lateinit var activeSessionDisposable: Disposable
|
||||
private val activeSessionIds = mutableSetOf<String>()
|
||||
|
@ -50,10 +53,18 @@ class AutoRageShaker @Inject constructor(
|
|||
|
||||
fun initialize() {
|
||||
observeActiveSession()
|
||||
// It's a singleton...
|
||||
vectorPreferences.subscribeToChanges(this)
|
||||
}
|
||||
|
||||
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
|
||||
enable(vectorPreferences.labsAutoReportUISI())
|
||||
}
|
||||
|
||||
var _enabled = false
|
||||
fun enable(enabled: Boolean) {
|
||||
if (enabled == _enabled) return
|
||||
_enabled = enabled
|
||||
uisiDetectors.forEach { it.value.enabled = enabled }
|
||||
}
|
||||
|
||||
|
|
|
@ -75,6 +75,7 @@ class UISIDetector : LiveEventListener {
|
|||
var enabled = false
|
||||
|
||||
override fun onLiveEvent(roomId: String, event: Event) {
|
||||
if (!enabled) return
|
||||
if (!event.isEncrypted()) return
|
||||
executor.execute {
|
||||
handleEventReceived(E2EMessageDetected.fromEvent(event, roomId, UISIEventSource.INCREMENTAL_SYNC))
|
||||
|
@ -82,6 +83,7 @@ class UISIDetector : LiveEventListener {
|
|||
}
|
||||
|
||||
override fun onPaginatedEvent(roomId: String, event: Event) {
|
||||
if (!enabled) return
|
||||
if (!event.isEncrypted()) return
|
||||
executor.execute {
|
||||
handleEventReceived(E2EMessageDetected.fromEvent(event, roomId, UISIEventSource.PAGINATION))
|
||||
|
@ -89,18 +91,21 @@ class UISIDetector : LiveEventListener {
|
|||
}
|
||||
|
||||
override fun onEventDecrypted(eventId: String, roomId: String, clearEvent: JsonDict) {
|
||||
if (!enabled) return
|
||||
executor.execute {
|
||||
unTrack(eventId, roomId)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLiveToDeviceEvent(event: Event) {
|
||||
if (!enabled) return
|
||||
if (event.type == callback?.reciprocateToDeviceEventType) {
|
||||
callback?.uisiReciprocateRequest(event)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onEventDecryptionError(eventId: String, roomId: String, throwable: Throwable) {
|
||||
if (!enabled) return
|
||||
executor.execute {
|
||||
unTrack(eventId, roomId)?.let {
|
||||
triggerUISI(it)
|
||||
|
@ -116,6 +121,7 @@ class UISIDetector : LiveEventListener {
|
|||
}
|
||||
|
||||
private fun handleEventReceived(detectorEvent: E2EMessageDetected) {
|
||||
if (!enabled) return
|
||||
if (trackedEvents.any { it.first == detectorEvent }) {
|
||||
Timber.w("## UISIDetector: Event ${detectorEvent.eventId} is already tracked")
|
||||
} else {
|
||||
|
@ -135,6 +141,7 @@ class UISIDetector : LiveEventListener {
|
|||
}
|
||||
|
||||
private fun triggerUISI(source: E2EMessageDetected) {
|
||||
if (!enabled) return
|
||||
Timber.i("## UISIDetector: Unable To Decrypt $source")
|
||||
callback?.uisiDetected(source)
|
||||
}
|
||||
|
|
|
@ -62,11 +62,11 @@ class BugReportActivity : VectorBaseActivity<ActivityBugReportBinding>() {
|
|||
|
||||
// Default screen is for bug report, so modify it for suggestion
|
||||
when (reportType) {
|
||||
ReportType.BUG_REPORT -> {
|
||||
ReportType.BUG_REPORT -> {
|
||||
supportActionBar?.setTitle(R.string.title_activity_bug_report)
|
||||
views.bugReportButtonContactMe.isVisible = true
|
||||
}
|
||||
ReportType.SUGGESTION -> {
|
||||
ReportType.SUGGESTION -> {
|
||||
supportActionBar?.setTitle(R.string.send_suggestion)
|
||||
|
||||
views.bugReportFirstText.setText(R.string.send_suggestion_content)
|
||||
|
@ -84,6 +84,9 @@ class BugReportActivity : VectorBaseActivity<ActivityBugReportBinding>() {
|
|||
|
||||
hideBugReportOptions()
|
||||
}
|
||||
else -> {
|
||||
// other types not supported here
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -174,6 +177,9 @@ class BugReportActivity : VectorBaseActivity<ActivityBugReportBinding>() {
|
|||
Toast.makeText(this@BugReportActivity,
|
||||
getString(R.string.feedback_failed, reason), Toast.LENGTH_LONG).show()
|
||||
}
|
||||
else -> {
|
||||
// nop
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
|
@ -211,6 +217,9 @@ class BugReportActivity : VectorBaseActivity<ActivityBugReportBinding>() {
|
|||
ReportType.SPACE_BETA_FEEDBACK -> {
|
||||
Toast.makeText(this@BugReportActivity, R.string.feedback_sent, Toast.LENGTH_LONG).show()
|
||||
}
|
||||
else -> {
|
||||
// nop
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "## onUploadSucceed() : failed to dismiss the toast")
|
||||
|
|
|
@ -16,14 +16,12 @@
|
|||
|
||||
package im.vector.app.features.settings
|
||||
|
||||
// import im.vector.app.AutoRageShaker
|
||||
import im.vector.app.R
|
||||
import im.vector.app.core.preference.VectorSwitchPreference
|
||||
import javax.inject.Inject
|
||||
|
||||
class VectorSettingsLabsFragment @Inject constructor(
|
||||
private val vectorPreferences: VectorPreferences,
|
||||
// private val autoRageShaker: AutoRageShaker
|
||||
private val vectorPreferences: VectorPreferences
|
||||
) : VectorSettingsBaseFragment() {
|
||||
|
||||
override var titleRes = R.string.room_settings_labs_pref_title
|
||||
|
@ -31,11 +29,8 @@ class VectorSettingsLabsFragment @Inject constructor(
|
|||
|
||||
override fun bindPref() {
|
||||
findPreference<VectorSwitchPreference>(VectorPreferences.SETTINGS_LABS_AUTO_REPORT_UISI)?.let { pref ->
|
||||
// ensure correct default
|
||||
pref.isChecked = vectorPreferences.labsAutoReportUISI()
|
||||
pref.setOnPreferenceChangeListener { _, isChecked ->
|
||||
// autoRageShaker.enable(isChecked as Boolean)
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue