diff --git a/lib/src/data/other_titles.dart b/lib/src/data/other_titles.dart index 1f30d43..397cc60 100644 --- a/lib/src/data/other_titles.dart +++ b/lib/src/data/other_titles.dart @@ -9,7 +9,8 @@ class OtherTitlesConverter implements JsonConverter { const OtherTitlesConverter(); @override - OtherTitles fromJson(String json) => OtherTitles.fromJson(jsonDecode(json) as Map); + OtherTitles fromJson(String json) => + OtherTitles.fromJson(jsonDecode(json) as Map); @override String toJson(OtherTitles object) => jsonEncode(object.toJson()); diff --git a/lib/src/service/anilist/model.dart b/lib/src/service/anilist/model.dart index 0d884c4..1d8cb33 100644 --- a/lib/src/service/anilist/model.dart +++ b/lib/src/service/anilist/model.dart @@ -26,8 +26,10 @@ abstract class AnimeSearchResult with _$AnimeSearchResult { ); return AnimeSearchResult( title: (json['title']! as Map)['romaji']! as String, - titleEnglish: (json['title']! as Map)['english'] as String?, - titleJapanese: (json['title']! as Map)['native'] as String?, + titleEnglish: + (json['title']! as Map)['english'] as String?, + titleJapanese: + (json['title']! as Map)['native'] as String?, id: (json['id']! as int).toString(), episodes: json['episodes'] as int?, imageUrl: diff --git a/lib/src/service/database.dart b/lib/src/service/database.dart index 39ee6d5..982686f 100644 --- a/lib/src/service/database.dart +++ b/lib/src/service/database.dart @@ -7,6 +7,8 @@ import 'package:anitrack/src/service/migrations/0000_airing.dart'; import 'package:anitrack/src/service/migrations/0000_score.dart'; import 'package:anitrack/src/service/migrations/0001_anime_watcher.dart'; import 'package:anitrack/src/service/migrations/0002_anilist.dart'; +import 'package:path/path.dart' as p; +import 'package:path_provider/path_provider.dart'; import 'package:sqflite_common_ffi/sqflite_ffi.dart'; const animeTable = 'Anime'; @@ -83,6 +85,15 @@ class DatabaseService { /// Cached AnimeWatchers. List? _watcherCache; + Future _getDatabasePath() async { + if (Platform.isAndroid || Platform.isIOS) { + return 'anitrack.db'; + } + + final supportDir = await getApplicationSupportDirectory(); + return p.join(supportDir.path, 'anitrack.db'); + } + Future initialize() async { // Allow initializing the database on Windows and Linux as well. if (Platform.isLinux || Platform.isWindows) { @@ -90,8 +101,10 @@ class DatabaseService { databaseFactory = databaseFactoryFfi; } + final databasePath = await _getDatabasePath(); + print('Opening database at $databasePath'); _db = await openDatabase( - 'anitrack.db', + databasePath, version: 5, onConfigure: (db) async { // In order to do schema changes during database upgrades, we disable foreign @@ -119,7 +132,6 @@ class DatabaseService { } }, ); - print(_db.path); } Future> loadAnimes() async { diff --git a/pubspec.lock b/pubspec.lock index fe59e08..34e3141 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -758,7 +758,7 @@ packages: source: hosted version: "1.9.1" path_provider: - dependency: transitive + dependency: "direct main" description: name: path_provider sha256: a7f4874f987173da295a61c181b8ee71dab59b332a486b391babf26a1b884825 diff --git a/pubspec.yaml b/pubspec.yaml index 293d717..a71462c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -24,7 +24,8 @@ dependencies: graphql: ^5.2.4 jikan_api: ^2.2.1 json_annotation: ^4.11.0 - path: ^1.9.0 + path: ^1.9.1 + path_provider: ^2.1.6 permission_handler: ^12.0.1 slang: ^4.13.0 slang_flutter: ^4.13.0