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 PollVoteEvent(val statusId: String, val poll: Poll) : Event
|
||||||
data class DomainMuteEvent(val instance: String) : Event
|
data class DomainMuteEvent(val instance: String) : Event
|
||||||
data class AnnouncementReadEvent(val announcementId: 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.BaseActivity
|
||||||
import com.keylesspalace.tusky.R
|
import com.keylesspalace.tusky.R
|
||||||
import com.keylesspalace.tusky.appstore.EventHub
|
import com.keylesspalace.tusky.appstore.EventHub
|
||||||
|
import com.keylesspalace.tusky.appstore.FilterUpdatedEvent
|
||||||
import com.keylesspalace.tusky.databinding.ActivityEditFilterBinding
|
import com.keylesspalace.tusky.databinding.ActivityEditFilterBinding
|
||||||
import com.keylesspalace.tusky.databinding.DialogFilterBinding
|
import com.keylesspalace.tusky.databinding.DialogFilterBinding
|
||||||
import com.keylesspalace.tusky.di.ViewModelFactory
|
import com.keylesspalace.tusky.di.ViewModelFactory
|
||||||
|
@ -264,6 +265,9 @@ class EditFilterActivity : BaseActivity() {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
if (viewModel.saveChanges(this@EditFilterActivity)) {
|
if (viewModel.saveChanges(this@EditFilterActivity)) {
|
||||||
finish()
|
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 {
|
} else {
|
||||||
Snackbar.make(binding.root, "Error saving filter '${viewModel.title.value}'", Snackbar.LENGTH_SHORT).show()
|
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.DomainMuteEvent
|
||||||
import com.keylesspalace.tusky.appstore.Event
|
import com.keylesspalace.tusky.appstore.Event
|
||||||
import com.keylesspalace.tusky.appstore.EventHub
|
import com.keylesspalace.tusky.appstore.EventHub
|
||||||
|
import com.keylesspalace.tusky.appstore.FilterUpdatedEvent
|
||||||
import com.keylesspalace.tusky.appstore.MuteConversationEvent
|
import com.keylesspalace.tusky.appstore.MuteConversationEvent
|
||||||
import com.keylesspalace.tusky.appstore.MuteEvent
|
import com.keylesspalace.tusky.appstore.MuteEvent
|
||||||
import com.keylesspalace.tusky.appstore.PreferenceChangedEvent
|
import com.keylesspalace.tusky.appstore.PreferenceChangedEvent
|
||||||
|
@ -263,6 +264,11 @@ abstract class TimelineViewModel(
|
||||||
is PreferenceChangedEvent -> {
|
is PreferenceChangedEvent -> {
|
||||||
onPreferenceChanged(event.preferenceKey)
|
onPreferenceChanged(event.preferenceKey)
|
||||||
}
|
}
|
||||||
|
is FilterUpdatedEvent -> {
|
||||||
|
if (filterContextMatchesKind(kind, event.filterContext)) {
|
||||||
|
fullReload()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue