Merge `fetchMangaSourcesListProvider`, `fetchAnimeSourcesListProvider` and `fetchNovelSourcesListProvider` into a single Provider, `FetchItemSourcesListProvider`, reducing code duplication.
```
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.
Resolved an issue where items could not be added to the tracker due to the use of an incorrect ID. This caused `parseTrackResponse()` to fail in locating the 'included' key within `jsonResponse`, leading to a null return. As a result, an exception was thrown in `tracker_widget.dart` at line 134 when accessing `widget.trackRes.title!,` triggering a _TypeError (Null check operator used on a null value)_.
- Resolved the same timestamp conversion issue that affected MyAnimeList.
- Previously, seconds-to-milliseconds conversion and `DateTime.now()` were applied twice — once on `login()` and once in `_getAccessToken()` — resulting in incorrect expiry dates (e.g., year 57349).
- Updated Kitsu’s URL from `.io` to `.app`.
getMangaChapterDirectory() now accepts an optional mangaMainDirectory
to avoid calling getMangaMainDirectory() and thus getDirectory() twice in places where both methods are called successively.
- getCookiesPref() and deleteAllCookies():
Avoid repeated parsing of `Uri.parse(url).host` by creating a variable.
- httpClient():
cache RhttpCompatibleClients and add default IOClient fallback.
- shouldAttemptRetryOnResponse():
Added a delay to avoid busy looping.
https://docs.flutter.dev/release/breaking-changes/flutter-generate-i10n-source
The flutter tool will no longer generate a synthetic package:flutter_gen or modify the package_config.json of the app.
Applications or tools that referenced package:flutter_gen should instead reference source files generated into the app's source directory directly.