display albums from db

This commit is contained in:
austinried
2025-11-08 18:27:37 +09:00
parent 0c80dbdba5
commit ee2a276f2f
18 changed files with 316 additions and 127 deletions

View File

@@ -0,0 +1,7 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import '../../database/database.dart';
final databaseProvider = Provider<SubtracksDatabase>((ref) {
return SubtracksDatabase();
});

View File

@@ -0,0 +1,14 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import '../../services/sync_services.dart';
import 'database.dart';
import 'settings.dart';
import 'source.dart';
final syncServiceProvider = Provider<SyncService>((ref) {
final db = ref.watch(databaseProvider);
final source = ref.watch(sourceProvider);
final sourceId = ref.watch(sourceIdProvider);
return SyncService(source: source, db: db, sourceId: sourceId);
});

View File

@@ -0,0 +1,5 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
final sourceIdProvider = Provider<int>((ref) {
return 1;
});

39
lib/app/state/source.dart Normal file
View File

@@ -0,0 +1,39 @@
import 'package:drift/drift.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import '../../sources/music_source.dart';
import '../../sources/subsonic/client.dart';
import '../../sources/subsonic/source.dart';
import '../../util/http.dart';
import 'database.dart';
import 'settings.dart';
final _sourceProvider = FutureProvider<MusicSource>((ref) async {
final db = ref.watch(databaseProvider);
final sourceId = ref.watch(sourceIdProvider);
final query = db.sources.select().join([
leftOuterJoin(
db.subsonicSettings,
db.subsonicSettings.sourceId.equalsExp(db.sources.id),
),
])..where(db.sources.id.equals(sourceId));
final result = await query.getSingle();
final subsonicSettings = result.readTable(db.subsonicSettings);
return SubsonicSource(
SubsonicClient(
http: SubtracksHttpClient(),
address: subsonicSettings.address,
username: subsonicSettings.username,
password: subsonicSettings.password,
useTokenAuth: subsonicSettings.useTokenAuth,
),
);
});
final sourceProvider = Provider<MusicSource>((ref) {
final source = ref.watch(_sourceProvider);
return source.requireValue;
});