Allows users to search for the exact source ID in their library.
Similar to the Browse > Migrate screen, but filtered in the Library,
where users can take all the usual actions.
Could be used in the future to change the search behaviour of tapping
the source name in the title info view to search by the ID with this
prefix.
(cherry picked from commit 4e4bdffdf38043418685ab42b177c8476842c83c)
* fix: add support for `EnhancedTracker` to merged sources
* ref: readability
* fix: use only sources specific to the merged title
* fix: don't match using name
* formatting
* don't block, suspend
* Move merged source out of EnhancedTracker
* Extract Injekt
* Return first accepted merged manga
* Move getMergedSources to SourceManager and update usages accordingly
* simplify code
---------
Co-authored-by: Cuong-Tran <cuongtran.tm@gmail.com>
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
* feat(history): Allow multi-selection and batch reset for history items
* Use chapterId instead of history.id
* use remember getUiModel
* Toolbar selection mode
* cleanup History
* Replace selectedChapterIds with selection for chapter selection state
* Remove userSelected parameter from selection logic and related function signatures
* remove parentheses
* Fix range selection
* longclick on cover too
* disable clear-history button when none-selected
* Add Filters to Updates screen
Behaves basically like the filters in the library:
- Unread: Show/Don't show unread chapters
- Downloaded: Show/Don't show downloaded chapters
- Started: Show/Don't show chapters that have some progress but aren't
fully Read
- Bookmarked: Show/Don't show chapters that have been bookmarked
Started behaves differently from its Library counterpart because the
actual manga data is not available at this point in time and I thought
calling getManga for each entry without caching would be a pretty bad
idea.
I have modelled this closely on the filter control flow in the
Library, but I'm sure this can be simplified/adjusted in some way.
* Move most filtering logic to SQL
Unread, Started, and Bookmarked filters are now part of the SQL query.
Download state cannot be filtered in the database so it remains in
Kotlin.
Because the Downloaded filter has to be run in Kotlin, the combine
flow uses the preferences flow twice, once to get the SQL query params
and once for the Kotlin filters (only Downloaded at this time).
* Add "Hide excluded scanlators" to update filters
Based on the work done in mihonapp/mihon#1623 but integrated with the other filters
in this PR. Added the user as a co-author for credit.
Co-authored-by: Dani <17619547+shabnix@users.noreply.github.com>
---------
Co-authored-by: Dani <17619547+shabnix@users.noreply.github.com>
---------
* Merge Panorama toggle into Filter diaglog
* Make Panorama toggle persistent and share it with History
* Implement toggleSwitch method for preference management to avoid create new function on every composition
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
(cherry picked from commit bbe9aa8561360f030072fbc49f79748e71c6535e)
* Include romanized titles of the original language in description
* Implement handling for `finalChapterInDesc` preference.
* Handle `preferExtensionLangTitle` preference when fetching manga details.
* Address some warnings, clean up unused code and spotless apply.
(cherry picked from commit 582d0ef1219ae2a2e1dd275d969b35a2e5511a73)
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
I'm tired of people thinking the current wording is an error. Improved wordings welcome, this was just my first decent guess.
(cherry picked from commit 05d90ea4d652cd7ead385ec954e0ae2dc332a012)
* Support mass migration in 'Browse -> Migrate' (mihonapp/mihon#2338)
(cherry picked from commit 22f851173b1eca242645f328a46e6038c035d5ec)
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
There is no way to trigger mass migration at the moment. The functionality will be added in a follow up PR.
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit ee19050cc00b0a787af65b641624d07bb194e155)
* Fix background crash in mass migration screen
(cherry picked from commit 63943debc2fd4efa1a0418bbfefaea93a24b49fd)
* Fix same manga check logic in mass migration
(cherry picked from commit f1193866f4306384a2a466c6353446bfed2bd9aa)
* Fix migration progress not updating and category flag mischeck (mihonapp/mihon#2484)
- Fixed an issue where migration progress wasn't updated after a manual source search
- Fixed incorrect logic where the category migration flag was ignored due to checking the chapter flag instead
(cherry picked from commit 16b5317b90b3064d12aa38f687cc30110fd8cdb3)
* Fix mass migration advanced search query building (mihonapp/mihon#2629)
(cherry picked from commit 7c08b75555a5444ede4912dc5e32607fac2b9678)
* Fix mass migration not using the same search queries as individual migration (mihonapp/mihon#2736)
(cherry picked from commit 7161bc2e825bdfd66a1829f7dce42bd0570b1008)
Co-authored-by: Cuong-Tran <16017808+cuong-tran@users.noreply.github.com>
* Merged `MigrationItem`, `MigrationItemResult`, and `MigrationActionIcon` into `MigrationListItem` variants within `MigrationListScreenContent.kt` for better cohesion.
* Simplified `MigrationListScreen` and `MigrationListScreenModel` by removing `MigrationProcedureConfig` and `MigrationType` in favor of direct parameters (`mangaIds`, `extraSearchQuery`).
* Renamed `newSelectedItem` to `matchOverride` in migration screens.
* Updated `SmartSourceSearchEngine` and `BaseSmartSearchEngine` method names for clarity: `smartSearch` -> `regularSearch` and `normalSearch` -> `deepSearch`.
* Refactored search result states: `SearchResult.Result` is now `SearchResult.Success`.
* Improved `MigrationMangaDialog` and `MigrationExitDialog` by standardizing parameter names and structure.
* Inlined `BrowseSourceFloatingActionButton` logic into `SourceFeedScreen` and `MigrateSourceSearchScreen` using standard `SmallExtendedFloatingActionButton`.
* Cleaned up various internal field names and logic related to "unmatched" vs "not found" entries.
- Relocates migration process screens, models, and components from `eu.kanade` and `exh` packages to a unified `mihon.feature.migration.list` package.
- Renames `MigrationListScreen` (presentation) to `MigrationListScreenContent` to avoid naming conflicts with the UI screen.
- Moves `SmartSourceSearchEngine` and `BaseSmartSearchEngine` to `mihon.feature.migration.list.search`.
- Updates all affected imports across the project.
- Replaces the legacy `MigrationBottomSheetDialog` (which used View binding) with the newer Compose-based `MigrationConfigScreenSheet`.
- Deletes `MigrationBottomSheetDialog.kt` and its associated layout XML `migration_bottom_sheet.xml`.
- Adds a `fullSettings` flag to `MigrationConfigScreenSheet` to support a simplified UI mode by hiding advanced search and priority options.
- Updates the primary button text in the sheet based on the `fullSettings` state.
- Exposes `preferences` in `MigrationListScreenModel` to facilitate the sheet migration.