* Use 1.x preference abstraction
- Uses SharedPreferences compared to 1.x impl which uses DataStore but it breaks all settings screens currently
- Move PreferencesHelper to new PreferenceStore
- PreferencesHelper should be split into smaller preference stores and be in core or domain
- Remove flow preferences as new PreferenceStore handles changes for us
Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>
* Fix PreferenceMutableState not updating
* Fix changes not emitting on first subscription
Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>
* Enable sub-languages on app first run.
* Fix wrong language code string parsing.
* Fix some build issues due to rebase.
* Use PreferenceHelper and remove an extra preference.
* Remove a constant.
* Revert "Use SharedFlow for available extensions to always emit the value (#7609)"
This reverts commit 73901f50c0.
* ExtensionPresenter: Explicitly set refreshing status
* Scope coroutines job to presenter
* cleanup
* fix toast
- Replace ExtensionManager relay and observable with Flow
- Inverse SourceManager dependency
- SourceManager observers ExtensionManager flow
- Separate SourceData from SourceRepository as it created a circular dependency
* Use Compose in Source tab
* Replace hashCode with key function
* Add ability to turn off pins moving on top of source list
* Changes from review comments
* More coil
* ExtensionController: Drop first text change event
* Browse-Source: Remove unnecessary load
* ExtensionPresenter: Increase debounce timeout
To avoid heavy list reload during first enter animation
* Implement new extension install methods
* Fixes
* Resolve feedback
* Keep pending status when waiting to install
* Cancellable installation
* Remove auto error now that we have cancellable job
Since multisource extensions are no longer a thing, we now simply rely on the flag at the extension level, i.e. the per-Source/SourceFactory `@Nsfw` annotation is no longer checked.
We'll have to remove all of the annotation usages from the existing sources, which will also effectively break the setting for older versions of the app.