This repository has been archived on 2026-08-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
melo-app/lib/services/playlist_service.dart
T
Hermes (Server) 8b6a04ead8 Fix: Review-Findings korrigiert (Tag-Leiste, Profil, Singleton u.a.)
CRIT:
- Tag-Leiste: Toggle-Kopf 'Tags & Filter' eingebaut (war unerreichbar) + TagStats
- Profil: Cloud-Count vor Dialog aufloesen (kein 'Instance of Future' mehr)
HIGH:
- CloudEinstellungen: toten Sync-Timer entfernt (echter Timer im ViewModel)
- StatistikCard + RecentWidget jetzt eingebaut (gesamtMB/gesamtMin endlich genutzt)
- CloudService als Singleton (konsistenter Token-Zustand in allen Services)
MED/LOW:
- Playlist-Erkennung nur noch via list= Parameter
- Player: fehlende Quelle wird geloggt statt still
- song_tile: null-ID-Guard vor Tag-Dialog
- Scanner-Log mit Exception-Objekt
- FavoritenService: anzahlFavoriten() fuer StatistikCard
2026-07-31 15:42:54 +02:00

46 lines
1.4 KiB
Dart

import '../database/db_helper.dart';
import '../models/song.dart';
import '../models/playlist.dart';
class PlaylistService {
final DbHelper _db = DbHelper();
Future<List<Playlist>> allePlaylists() async {
final rows = await _db.allePlaylists();
final listen = <Playlist>[];
for (final r in rows) {
final id = r['id'] as int;
final songs = await _db.songsDerPlaylist(id);
listen.add(Playlist.fromMap(r, songCount: songs.length));
}
return listen;
}
Future<int> erstellen(String name) async {
return _db.playlistErstellen(name);
}
Future<List<Song>> songs(int playlistId) async {
return _db.songsDerPlaylist(playlistId);
}
Future<void> songHinzufuegen(int playlistId, int songId) async {
final songs = await _db.songsDerPlaylist(playlistId);
await _db.songZurPlaylist(playlistId, songId, songs.length);
}
Future<void> songEntfernen(int playlistId, int songId) async {
await _db.songAusPlaylistEntfernen(playlistId, songId);
}
Future<void> reihenfolgeSpeichern(int playlistId, List<Song> songs) async {
final songIds = songs.map((s) => s.id).whereType<int>().toList();
await _db.playlistReihenfolgeAktualisieren(playlistId, songIds);
}
Future<bool> istInPlaylist(int playlistId, int songId) async {
final songs = await _db.songsDerPlaylist(playlistId);
return songs.any((s) => s.id == songId);
}
}