Fix synchronization between feeds notifications permissions switches and enables all feeds notifications switch

This commit is contained in:
Shinokuni 2020-03-28 18:45:37 +01:00
parent 6d0ebf063b
commit 4aa7ae7e4c
1 changed files with 12 additions and 5 deletions

View File

@ -34,6 +34,7 @@ class NotificationPermissionActivity : AppCompatActivity() {
val accountId = intent.getIntExtra(ACCOUNT_ID, 0) val accountId = intent.getIntExtra(ACCOUNT_ID, 0)
val viewModel by viewModels<NotificationPermissionViewModel>() val viewModel by viewModels<NotificationPermissionViewModel>()
var adapter: NotificationPermissionListAdapter? = null var adapter: NotificationPermissionListAdapter? = null
var feedStateChanged = false
viewModel.getAccount(accountId).observe(this, Observer { account -> viewModel.getAccount(accountId).observe(this, Observer { account ->
viewModel.account = account viewModel.account = account
@ -59,14 +60,20 @@ class NotificationPermissionActivity : AppCompatActivity() {
binding.notifPermissionFeedsSwitch.isEnabled = account.isNotificationsEnabled binding.notifPermissionFeedsSwitch.isEnabled = account.isNotificationsEnabled
binding.notifPermissionFeedsSwitch.setOnCheckedChangeListener { _, isChecked -> binding.notifPermissionFeedsSwitch.setOnCheckedChangeListener { _, isChecked ->
viewModel.setAllFeedsNotificationState(isChecked) if (!feedStateChanged) {
.subscribeOn(Schedulers.io()) viewModel.setAllFeedsNotificationState(isChecked)
.observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io())
.doOnError { Utils.showSnackbar(binding.root, it.message) } .observeOn(AndroidSchedulers.mainThread())
.subscribe() .doOnError { Utils.showSnackbar(binding.root, it.message) }
.subscribe()
}
feedStateChanged = false
} }
adapter = NotificationPermissionListAdapter(account.isNotificationsEnabled) { feed -> adapter = NotificationPermissionListAdapter(account.isNotificationsEnabled) { feed ->
feedStateChanged = true
viewModel.setFeedNotificationState(feed) viewModel.setFeedNotificationState(feed)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())