mirror of
https://github.com/pachli/pachli-android.git
synced 2025-02-08 16:08:54 +01:00
This previous code could crash if `filterModel.kind` (marked `lateinit`) had not been set before the filters are loaded. This could happen in rare cases. Fix this by rewriting `FilterModel`. Instead of creating a half-empty object that still needs further initialisation, delay the creation until all the necessary information is available, and pass it in the `FilterModel` constructor. This also forces code that uses `FilterModel` to properly handle the case where it might be null at the point where filtering decisions have to be made. This means that `TimelineViewModel` (and subclasses) no longer need the `init()` function to complete their construction, which was another significant code smell. Pass the `TimelineKind` to the view models via their `SavedStateHandle`. This showed that changing filters wasn't causing the timelines to update without a manual refresh, so fix that too. Editing filters sends change events for the old and new contexts (in case a context is removed from a filter), and deleting a filter sends a change event too.