Commit graph

868 commits

Author SHA1 Message Date
Moustapha Kodjo Amadou
e635e495b8
Merge pull request #491 from NBA2K1/main
Refactor: Consolidate _openCategory() Methods into Unified Dialog
2025-06-19 18:05:30 +01:00
Moustapha Kodjo Amadou
2e1cb0f8bc
Merge pull request #490 from Schnitzel5/feature/two-way-tracker
added two-way-tracking
2025-06-19 18:04:13 +01:00
NBA2K1
c58d0e0c77 Combine all three _openCategory() methods
As they all do the same.
2025-06-16 20:42:39 +02:00
NBA2K1
aa18b1ad3a Remove redundant operation
Not needed for this dialog, as the items here are already in the library (favorite = true) and dateAdded don't have to be updated.
2025-06-16 01:50:26 +02:00
Schnitzel5
ef13473137 - 2025-06-15 21:11:41 +02:00
Schnitzel5
06ca441644 added Kitsu and Anilist 2025-06-15 21:08:34 +02:00
NBA2K1
06ac796032 Fix potential bug + Remove redundant code
Before fixing the Category Removal Bug (commit 58537281), the "Default" Category would be empty when removing a populated category.

So when there is only one Category left, and the user hides that one Category, `tabCount` would be <= 0, leading to an Exception:

```
_AssertionError ('package:flutter/src/material/tab_controller.dart': Failed assertion: line 116 pos 15: 'initialIndex >= 0 && (length == 0 || initialIndex < length)': is not true.)
```

Now there is a check (`tabCount <= 0`), that IF tabCount is ever <= 0, it would show `_bodyWithoutCategories`.
2025-06-15 18:40:41 +02:00
NBA2K1
585372816d Fix Category Removal Bug
When removing a category, the items inside the category were not being updated, removing the link to the removed category.
That lead to the items disappearance from the library.

Now the reference from the item to the deleted category is deleted. Those items show up in the "Default" category.
2025-06-15 17:20:51 +02:00
NBA2K1
eaed214354 Fix "Set categories" in manga_detail_view 2025-06-15 16:21:27 +02:00
NBA2K1
a5de9a7102 Fix bug introduced in commit 8bc8a99a 2025-06-15 14:07:58 +02:00
Schnitzel5
7c8faf8bed added info card 2025-06-15 01:30:51 +02:00
Schnitzel5
24eb09b701 adding Kitsu 2025-06-12 00:18:14 +02:00
Schnitzel5
5dff4a1aa3 added two-way tracking 2025-06-09 02:26:31 +02:00
Schnitzel5
f7a124d72c added two-way-tracking 2025-06-09 02:22:33 +02:00
Schnitzel5
e994d3230a + 2025-06-08 19:11:31 +02:00
Schnitzel5
4c3b6bc430 + 2025-06-08 03:02:18 +02:00
Moustapha Kodjo Amadou
183e88ebd0
Merge pull request #484 from NBA2K1/main
Fixes, Refactors, and Async Improvements
2025-06-07 13:37:57 +01:00
NBA2K1
fecda49373 Merge Provider => Remove Code Duplication
Merge `fetchMangaSourcesListProvider`, `fetchAnimeSourcesListProvider` and `fetchNovelSourcesListProvider` into a single Provider, `FetchItemSourcesListProvider`, reducing code duplication.
2025-06-07 03:24:39 +02:00
NBA2K1
138e2887e0 Fix Extension Installation
There was a bug when uninstalling an extension and trying to reinstall it, it didn't install.
You had to restart the app to reinstall the same extension again.
Now the provider is invalidated when reinstalling an uninstalled extension,
so the fetch logic is triggered correctly. Prevents stale cache issues from
Riverpod's keepAlive behavior.
2025-06-07 02:37:51 +02:00
Schnitzel5
a0ebe46fa0 added option to change hwdec 2025-06-07 01:46:30 +02:00
NBA2K1
8bc8a99af8 Make the write transaction fully async
Mixing `writeTxnSync` with `await` was incorrect.
writeTxnSync does not support awaiting async functions.
2025-06-06 23:27:05 +02:00
NBA2K1
3eb0dc2534 Fix Exception
```
Exception has occurred.
ArgumentError (Invalid argument(s): No host specified in URI )
```

at line 79:
`final req = await http.get(Uri.parse(source.sourceCodeUrl!));`
when source.sourceCodeUrl is empty.
2025-06-06 21:43:50 +02:00
Schnitzel5
51352efd24 + 2025-06-06 00:22:31 +02:00
Schnitzel5
1b4177b59b + 2025-06-05 00:19:47 +02:00
Moustapha Kodjo Amadou
d4a0354143 fix file path handling 2025-06-04 17:41:29 +01:00
Moustapha Kodjo Amadou
0f430f80d9 Fix indexing and path for downloaded chapter images and update padding logic 2025-06-04 17:28:31 +01:00
NBA2K1
7e1eb44667 Fix #478 2025-06-04 16:21:14 +02:00
Schnitzel5
eeed17c264 adding Trakt 2025-06-04 15:39:14 +02:00
Schnitzel5
f152339162 + 2025-06-03 23:49:14 +02:00
Schnitzel5
db209fea68 + 2025-06-02 23:36:04 +02:00
NBA2K1
f6945cf189 Fix Exception _AssertionError
When customizing navigation, toggling one item off.

```

Exception has occurred.
_AssertionError ('package:flutter/src/material/navigation_rail.dart': Failed assertion: line 112 pos 15: 'selectedIndex == null || (0 <= selectedIndex && selectedIndex < destinations.length)': is not true.)

```
2025-06-02 17:49:44 +02:00
NBA2K1
7eec89b1b9 Add Switch to automatically check for updates
Instead of checking for updates by default, the user now has the choice to disable automatic app update checks.
2025-06-02 17:49:16 +02:00
NBA2K1
88899f6e00
Merge branch 'kodjodevf:main' into main 2025-06-02 17:48:16 +02:00
NBA2K1
2482f6ec2e Change Button Behavior of "Edit Categories"
The Button "Edit Categories" (now called "set Categories"), now opens the category select menu instead of the category edit menu.

This makes more sense in the library item detail view. For example you have the categories "Watching" and "Finished". You just finished an anime and you want to change its category directly in the detail view. Now you can.

Before you had to exit the detail view, go in to the library view, long press the item, tap the category button and then edit it there.
2025-06-02 13:44:04 +02:00
Moustapha Kodjo Amadou
538f87630c + 2025-06-02 12:41:06 +01:00
Moustapha Kodjo Amadou
664a1f6dcf + 2025-06-02 12:30:47 +01:00
Moustapha Kodjo Amadou
fdb47334db fix #464 2025-06-02 12:17:54 +01:00
Moustapha Kodjo Amadou
4d27a2c0e3 fix #468 2025-06-02 11:41:12 +01:00
Moustapha Kodjo Amadou
1c256f884d fix 2025-06-02 10:37:01 +01:00
Moustapha Kodjo Amadou
d5247a8183 fix 2025-06-02 10:14:39 +01:00
Moustapha Kodjo Amadou
446ba5503d fix #474 2025-06-02 10:11:21 +01:00
Moustapha Kodjo Amadou
87fd4ef340 fix Undefined variable for client 2025-06-02 10:10:14 +01:00
NBA2K1
2822f9f17f Use the passed parameter Manga in _openCategory
- Use the passed parameter instead of widget.manga
- refactored the method a little to make it more readable.
2025-06-02 01:53:06 +02:00
NBA2K1
b3ffc3ea67 Apply System Theme After Backup Restore 2025-06-02 00:08:41 +02:00
NBA2K1
00c666fe3f Fix Exception when leaving Code Editor
When leaving the Code Editor of certain Extensions, this Exception would throw:
```
[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: Runtime Error: Undefined variable: source (Original error: Undefined property 'source' on Madara.)
#0      InterpreterVisitor.visitSimpleIdentifier (package:d4rt/src/interpreter_visitor.dart:393:7)
interpreter_visitor.dart:393
#1      SimpleIdentifierImpl.accept (package:analyzer/src/dart/ast/ast.dart:16123:50)
ast.dart:16123
#2      InterpreterVisitor.visitPostfixExpression (package:d4rt/src/interpreter_visitor.dart:3930:41)
interpreter_visitor.dart:3930
#3      PostfixExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:14311:50)
ast.dart:14311
#4      InterpreterVisitor._evaluateArguments (package:d4rt/src/interpreter_visitor.dart:5569:23)
interpreter_visitor.dart:5569
#5      InterpreterVisitor.visitMethodInvocation (package:d4rt/src/interpreter_visitor.dart:2178:13)
interpreter_visitor.dart:2178
#6      MethodInvocationImpl.accept (package:analyzer/src/dart/ast/ast.dart:12246:50)
ast.dart:12246
#7      InterpretedClass.createAndInitializeInstance (package:d4rt/src/runtime_types.dart:232:53)
runtime_types.dart:232
#8      InterpretedClass.call (package:d4rt/src/runtime_types.dart:299:22)
runtime_types.dart:299
#9      InterpreterVisitor.visitMethodInvocation (package:d4rt/src/interpreter_visitor.dart:2161:28)
interpreter_visitor.dart:2161
#10     MethodInvocationImpl.accept (package:analyzer/src/dart/ast/ast.dart:12246:50)
ast.dart:12246
#11     InterpreterVisitor.visitVariableDeclarationList (package:d4rt/src/interpreter_visitor.dart:3026:42)
interpreter_visitor.dart:3026
#12     VariableDeclarationListImpl.accept (package:analyzer/src/dart/ast/ast.dart:18695:15)
ast.dart:18695
#13     InterpreterVisitor.visitVariableDeclarationStatement (package:d4rt/src/interpreter_visitor.dart:135:27)
interpreter_visitor.dart:135
#14     VariableDeclarationStatementImpl.accept (package:analyzer/src/dart/ast/ast.dart:18753:15)
ast.dart:18753
#15     InterpreterVisitor.executeBlock (package:d4rt/src/interpreter_visitor.dart:66:33)
interpreter_visitor.dart:66
#16     InterpretedFunction.call (package:d4rt/src/callable.dart:589:36)
callable.dart:589
#17     D4rt.execute (package:d4rt/src/d4rt_base.dart:220:43)
d4rt_base.dart:220
#18     DartExtensionService._executeLib (package:mangayomi/eval/dart/service.dart:24:17)
service.dart:24
#19     DartExtensionService.getSourcePreferences (package:mangayomi/eval/dart/service.dart:179:25)
service.dart:179
#20     getSourcePreference (package:mangayomi/services/get_source_preference.dart:6:38)
get_source_preference.dart:6
#21     _ExtensionDetailState.build.<anonymous closure>.<anonymous closure> (package:mangayomi/modules/browse/extension/extension_detail.dart:173:44)
extension_detail.dart:173
#22     State.setState (package:flutter/src/widgets/framework.dart:1199:30)
framework.dart:1199
#23     _ExtensionDetailState.build.<anonymous closure> (package:mangayomi/modules/browse/extension/extension_detail.dart:171:23)
extension_detail.dart:171
<asynchronous suspension>
```
2025-06-01 19:52:21 +02:00
NBA2K1
7c5a7cb2e5 Implement QOL-feature
If the last episode of an Anime has ended, exit fullscreen mode.
2025-06-01 18:29:31 +02:00
NBA2K1
3a1d568a42 Center the Discord Icon in the button
And adjust the GitHub button size to match the now larger Discord button.
2025-06-01 01:05:34 +02:00
NBA2K1
34f0be6d9a Update router.dart
Fix exception when using "Select Widget Mode" of the Flutter Inspector:

```
Exception has occurred.
FlutterError (Tried to modify a provider while the widget tree was building.
If you are encountering this error, chances are you tried to modify a provider
in a widget life-cycle, such as but not limited to:
- build
- initState
- dispose
- didUpdateWidget
- didChangeDependencies

Modifying a provider inside those life-cycles is not allowed, as it could
lead to an inconsistent UI state. For example, two widgets could listen to the
same provider, but incorrectly receive different states.

To fix this problem, you have one of two solutions:
- (preferred) Move the logic for modifying your provider outside of a widget
  life-cycle. For example, maybe you could update your provider inside a button's
  onPressed instead.

- Delay your modification, such as by encapsulating the modification
  in a `Future(() {...})`.
  This will perform your update after the widget tree is done building.)
```
2025-05-31 17:43:59 +02:00
NBA2K1
2ba453a394 Update edit_code.dart 2025-05-31 16:35:35 +02:00
NBA2K1
62c7099a0f Update edit_code.dart
Change keyboard type to alphanumeric
2025-05-31 15:29:19 +02:00