Refresh timelines when filters are added/edited/removed (#3552)
Fixes #3546
This commit is contained in:
parent
14d4934172
commit
1badf68531
|
@ -19,3 +19,4 @@ data class MainTabsChangedEvent(val newTabs: List<TabData>) : Event
|
|||
data class PollVoteEvent(val statusId: String, val poll: Poll) : Event
|
||||
data class DomainMuteEvent(val instance: String) : Event
|
||||
data class AnnouncementReadEvent(val announcementId: String) : Event
|
||||
data class FilterUpdatedEvent(val filterContext: List<String>) : Event
|
||||
|
|
|
@ -19,6 +19,7 @@ import com.google.android.material.switchmaterial.SwitchMaterial
|
|||
import com.keylesspalace.tusky.BaseActivity
|
||||
import com.keylesspalace.tusky.R
|
||||
import com.keylesspalace.tusky.appstore.EventHub
|
||||
import com.keylesspalace.tusky.appstore.FilterUpdatedEvent
|
||||
import com.keylesspalace.tusky.databinding.ActivityEditFilterBinding
|
||||
import com.keylesspalace.tusky.databinding.DialogFilterBinding
|
||||
import com.keylesspalace.tusky.di.ViewModelFactory
|
||||
|
@ -264,6 +265,9 @@ class EditFilterActivity : BaseActivity() {
|
|||
lifecycleScope.launch {
|
||||
if (viewModel.saveChanges(this@EditFilterActivity)) {
|
||||
finish()
|
||||
// Possibly affected contexts: any context affected by the original filter OR any context affected by the updated filter
|
||||
val affectedContexts = viewModel.contexts.value.map { it.kind }.union(originalFilter?.context ?: listOf()).distinct()
|
||||
eventHub.dispatch(FilterUpdatedEvent(affectedContexts))
|
||||
} else {
|
||||
Snackbar.make(binding.root, "Error saving filter '${viewModel.title.value}'", Snackbar.LENGTH_SHORT).show()
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import com.keylesspalace.tusky.appstore.BlockEvent
|
|||
import com.keylesspalace.tusky.appstore.DomainMuteEvent
|
||||
import com.keylesspalace.tusky.appstore.Event
|
||||
import com.keylesspalace.tusky.appstore.EventHub
|
||||
import com.keylesspalace.tusky.appstore.FilterUpdatedEvent
|
||||
import com.keylesspalace.tusky.appstore.MuteConversationEvent
|
||||
import com.keylesspalace.tusky.appstore.MuteEvent
|
||||
import com.keylesspalace.tusky.appstore.PreferenceChangedEvent
|
||||
|
@ -263,6 +264,11 @@ abstract class TimelineViewModel(
|
|||
is PreferenceChangedEvent -> {
|
||||
onPreferenceChanged(event.preferenceKey)
|
||||
}
|
||||
is FilterUpdatedEvent -> {
|
||||
if (filterContextMatchesKind(kind, event.filterContext)) {
|
||||
fullReload()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue