Commit graph

164 commits

Author SHA1 Message Date
NBA2K1
e33af9cbe6 Update library_screen.dart 2026-04-12 23:03:56 +02:00
NBA2K1
cc05ee13e8 Reduce code duplication
Also, change
`entry.chapters.toList().reversed.toList().last`
to
`entry.chapters.first`
Why reverse the list and then get the last item, when you can just get the first?
2026-04-12 23:03:50 +02:00
NBA2K1
05111da02b Extract ContinueReaderButton 2026-04-12 23:03:44 +02:00
NBA2K1
d706e82fd8 simplify query for continueReaderBtn
Refactor history lookup to use a direct mangaIdEqualTo query instead of the previous multi‑level chapter/manga filter.
The new approach improves performance, readability, and maintainability without changing how the play button behaves or how history entries are resolved.
2026-04-12 23:03:37 +02:00
NBA2K1
3f19636fcf Optimize download check
Change per‑chapter synchronous lookups inside isar.txnSync to a single batched anyOf query using collected chapter IDs.

Reduces repeated filtering, removes unnecessary loop, and improves performance.
2026-04-12 23:03:32 +02:00
NBA2K1
31409bfb3c Use mangaIds
No need to create new `mangaIdsList` variable, because mangaIds is the same
2026-04-12 23:03:23 +02:00
NBA2K1
81123dc3cb Change the MangasListStateProvider to Set<int>
MangasListState previously stored selected manga IDs as List<int>.
Every visible library card called .contains() on that list once per
rebuild to determine its highlight state, making each check O(n) in
the number of selected items. The provider's own update/selectAll/
selectSome methods also used .contains() and .remove() on a List.

Change the state type to Set<int> throughout, making all membership
checks O(1). Updated all consumers: library_gridview_widget,
library_listview_widget, library_app_bar, library_dialogs, and
MangasSetIsReadState.
2026-04-12 23:03:18 +02:00
NBA2K1
c5c97d712b debounce the search query 2026-04-12 23:03:12 +02:00
NBA2K1
d8ff9fb01d performance+
Change Clip.antiAliasWithSaveLayer to Clip.antiAlias
2026-04-12 23:03:07 +02:00
Moustapha Kodjo Amadou
d275120cac refactor 2026-04-07 14:43:39 +01:00
Moustapha Kodjo Amadou
0df04bcfad feat #682 option to split chapter whe importing local epub 2026-04-07 11:55:42 +01:00
Moustapha Kodjo Amadou
f1dfbbaefc Fix #480/#165 #479 #443 #541 #554 #452: reader and download fixes
- #480/#165: Fix double page mode chapter navigation index conversion
- #479: Fix page jump when switching single/double page mode
- #443: Clear zoom cache on page change for swipe-back
- #541: Add shift-click range selection for chapters (desktop)
- #554: Auto-clean orphaned download records, cascade delete
- #452: Add horizontal continuous RTL reader mode
2026-03-18 09:47:41 +01:00
Moustapha Kodjo Amadou
f729380223 feat: Implement app lock feature with biometric authentication
- Added AppLockScreen for biometric authentication to unlock the app.
- Introduced security settings screen to enable/disable app lock.
- Integrated local_auth package for biometric authentication support.
- Created security state providers to manage app lock state.
- Updated chapter list tile widget to support dismiss actions for bookmarking and marking chapters as read.
- Enhanced CBZ conversion process to include ComicInfo.xml metadata.
- Added conditional UI elements based on platform capabilities.
- Added Completed & Tracked filter in library
2026-03-04 11:56:49 +01:00
Moustapha Kodjo Amadou
1256e608c7 Refactor 2026-03-02 11:49:19 +01:00
Moustapha Kodjo Amadou
d5aecf66dc Fix #643 2026-01-26 17:28:25 +01:00
Moustapha Kodjo Amadou
74b194602c update dependencies & update riverpod provider declarations 2026-01-08 14:27:08 +01:00
Moustapha Kodjo Amadou
9458ae120b fix #637 2026-01-07 13:07:55 +01:00
NBA2K1
1ac605e30a Use the localized extension 2025-12-29 23:20:08 +01:00
NBA2K1
9bd8a62d31 Reduce Code Duplication
Extract the `_updateLibrary()` function from `updates_screen.dart` and `library_screen.dart` to a top-level function in `libray_updater.dart`.
2025-12-28 22:59:44 +01:00
Moustapha Kodjo Amadou
405c3d8e35 fix 2025-11-25 15:34:38 +01:00
Moustapha Kodjo Amadou
db729ba6da + 2025-11-11 15:33:23 +01:00
Moustapha Kodjo Amadou
4940c18cbf improve cover image handling message 2025-11-11 14:25:45 +01:00
Moustapha Kodjo Amadou
fd615bd44b refactor: streamline archive import process and enhance cover image handling 2025-11-11 13:13:35 +01:00
Moustapha Kodjo Amadou
494e31e396 adjust 2025-11-10 14:38:29 +01:00
Moustapha Kodjo Amadou
0d0f488ef3 Update WidgetRef types to dynamic to fix updateTrackChapterRead 2025-10-31 11:38:39 +01:00
Moustapha Kodjo Amadou
430e81e021 Refactor and update dependencies for Isar and Riverpod 2025-10-29 13:08:42 +01:00
Moustapha Kodjo Amadou
1fa7f3123b update 2025-10-02 15:52:00 +01:00
Schnitzel5
5a6552e6f6 local folders now also scans for subtitles
- added help button to show an example of a local folder
2025-09-05 21:33:22 +02:00
Schnitzel5
05d0ddf0d6 reworked local source
- allow multiple local folders
- added support for scanning .epub novels
- added metadata,json support
- scanned entries now appear in browse screen instead of the default library category (can be added to library)
2025-09-04 23:02:27 +02:00
Schnitzel5
60928374a3 + 2025-09-03 23:44:06 +02:00
Moustapha Kodjo Amadou
600a699708 feat: Add use sourceId property if not null to get source model 2025-08-28 12:12:23 +01:00
Moustapha Kodjo Amadou
3a577a4c9e Add fixed versions packages of isar_generator and hive_generator to avoid the Analyzer plugin error 2025-08-25 13:21:37 +01:00
NBA2K1
00e49e31a0 Merge remote-tracking branch 'upstream/main' 2025-08-18 18:00:46 +02:00
Schnitzel5
56fc7f905a added downloaded only mode 2025-08-15 21:33:54 +02:00
NBA2K1
69df87ff0e Merge two identical providers
Merge `isLongPressedMangaStateProvider` and `isLongPressedStateProvider`

Both providers do the same thing and it is impossible to change the value of the provider in different places in the app at the same time.

So just use one `isLongPressedStateProvider`. Reduces code duplication and there is no confusion about which one to use.
2025-07-29 14:02:48 +02:00
NBA2K1
c2bae6d17b Extract reusable Select Bar and Button widgets
Previously, the same select bar and button styles were defined in both
`library_screen.dart` and `manga_detail_view.dart`, resulting in repeated code.

This commit extracts the select bar and its buttons into reusable widgets
to reduce duplication and improve readability and maintainability.
2025-07-28 16:29:30 +02:00
NBA2K1
ae1d158264 Combine two identical classes
Combine MangasSetIsReadState and MangasSetUnReadState to reduce code duplication.
2025-07-28 16:08:13 +02:00
Schnitzel5
5932cf44f2 added sync for settings
- added option to toggle sync for history, update and settings
2025-07-21 23:37:51 +02:00
Moustapha Kodjo Amadou
25f7402f35 fix add torrent magnet url 2025-07-21 11:02:12 +01:00
Moustapha Kodjo Amadou
7bb3da36fc
Merge pull request #527 from Schnitzel5/feature/local-epub
added support for local epubs and displaying its images
2025-07-21 09:16:56 +01:00
Moustapha Kodjo Amadou
936a91403b
Merge pull request #520 from NBA2K1/better-UX
Improved UX for Migration, Anime Playback & Navigation
2025-07-21 09:14:41 +01:00
Schnitzel5
5b2f1b4f36 added support for local epubs and displaying its images 2025-07-20 21:23:26 +02:00
NBA2K1
3313e6e53a Don't focus searchbar when migrating
The searchbar already has input.
2025-07-12 20:26:31 +02:00
NBA2K1
d7dbce7a9a DRY 2025-07-12 20:24:42 +02:00
NBA2K1
7a5c25b94f dispose 2025-07-12 20:10:04 +02:00
NBA2K1
6a23409560 Fix delete "Downloaded episodes/chapters"
The delete function was only for imported mangas.
Now it checks if it was imported or downloaded and deletes accordingly.
2025-07-07 04:14:58 +02:00
NBA2K1
57143bca2b bulk write instead of one-by-one
reduces IO-operations.
2025-07-06 14:28:52 +02:00
NBA2K1
07941ea370 Fix "Read" and "Unread" button 2025-07-06 14:02:23 +02:00
Schnitzel5
bd17e1e9eb adjusted sync features 2025-07-04 02:24:01 +02:00
NBA2K1
c58d0e0c77 Combine all three _openCategory() methods
As they all do the same.
2025-06-16 20:42:39 +02:00