fix: Put the database somewhere more sensible on Linux

This commit is contained in:
2026-07-25 23:48:27 +02:00
parent 85df1e702a
commit 87fc1566f2
5 changed files with 23 additions and 7 deletions

View File

@@ -9,7 +9,8 @@ class OtherTitlesConverter implements JsonConverter<OtherTitles, String> {
const OtherTitlesConverter(); const OtherTitlesConverter();
@override @override
OtherTitles fromJson(String json) => OtherTitles.fromJson(jsonDecode(json) as Map<String, dynamic>); OtherTitles fromJson(String json) =>
OtherTitles.fromJson(jsonDecode(json) as Map<String, dynamic>);
@override @override
String toJson(OtherTitles object) => jsonEncode(object.toJson()); String toJson(OtherTitles object) => jsonEncode(object.toJson());

View File

@@ -26,8 +26,10 @@ abstract class AnimeSearchResult with _$AnimeSearchResult {
); );
return AnimeSearchResult( return AnimeSearchResult(
title: (json['title']! as Map<String, dynamic>)['romaji']! as String, title: (json['title']! as Map<String, dynamic>)['romaji']! as String,
titleEnglish: (json['title']! as Map<String, dynamic>)['english'] as String?, titleEnglish:
titleJapanese: (json['title']! as Map<String, dynamic>)['native'] as String?, (json['title']! as Map<String, dynamic>)['english'] as String?,
titleJapanese:
(json['title']! as Map<String, dynamic>)['native'] as String?,
id: (json['id']! as int).toString(), id: (json['id']! as int).toString(),
episodes: json['episodes'] as int?, episodes: json['episodes'] as int?,
imageUrl: imageUrl:

View File

@@ -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/0000_score.dart';
import 'package:anitrack/src/service/migrations/0001_anime_watcher.dart'; import 'package:anitrack/src/service/migrations/0001_anime_watcher.dart';
import 'package:anitrack/src/service/migrations/0002_anilist.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'; import 'package:sqflite_common_ffi/sqflite_ffi.dart';
const animeTable = 'Anime'; const animeTable = 'Anime';
@@ -83,6 +85,15 @@ class DatabaseService {
/// Cached AnimeWatchers. /// Cached AnimeWatchers.
List<AnimeWatcher>? _watcherCache; List<AnimeWatcher>? _watcherCache;
Future<String> _getDatabasePath() async {
if (Platform.isAndroid || Platform.isIOS) {
return 'anitrack.db';
}
final supportDir = await getApplicationSupportDirectory();
return p.join(supportDir.path, 'anitrack.db');
}
Future<void> initialize() async { Future<void> initialize() async {
// Allow initializing the database on Windows and Linux as well. // Allow initializing the database on Windows and Linux as well.
if (Platform.isLinux || Platform.isWindows) { if (Platform.isLinux || Platform.isWindows) {
@@ -90,8 +101,10 @@ class DatabaseService {
databaseFactory = databaseFactoryFfi; databaseFactory = databaseFactoryFfi;
} }
final databasePath = await _getDatabasePath();
print('Opening database at $databasePath');
_db = await openDatabase( _db = await openDatabase(
'anitrack.db', databasePath,
version: 5, version: 5,
onConfigure: (db) async { onConfigure: (db) async {
// In order to do schema changes during database upgrades, we disable foreign // In order to do schema changes during database upgrades, we disable foreign
@@ -119,7 +132,6 @@ class DatabaseService {
} }
}, },
); );
print(_db.path);
} }
Future<List<AnimeTrackingData>> loadAnimes() async { Future<List<AnimeTrackingData>> loadAnimes() async {

View File

@@ -758,7 +758,7 @@ packages:
source: hosted source: hosted
version: "1.9.1" version: "1.9.1"
path_provider: path_provider:
dependency: transitive dependency: "direct main"
description: description:
name: path_provider name: path_provider
sha256: a7f4874f987173da295a61c181b8ee71dab59b332a486b391babf26a1b884825 sha256: a7f4874f987173da295a61c181b8ee71dab59b332a486b391babf26a1b884825

View File

@@ -24,7 +24,8 @@ dependencies:
graphql: ^5.2.4 graphql: ^5.2.4
jikan_api: ^2.2.1 jikan_api: ^2.2.1
json_annotation: ^4.11.0 json_annotation: ^4.11.0
path: ^1.9.0 path: ^1.9.1
path_provider: ^2.1.6
permission_handler: ^12.0.1 permission_handler: ^12.0.1
slang: ^4.13.0 slang: ^4.13.0
slang_flutter: ^4.13.0 slang_flutter: ^4.13.0