aves/lib/model/favourite_repo.dart
2020-04-01 10:40:02 +09:00

31 lines
933 B
Dart

import 'package:aves/model/image_entry.dart';
import 'package:aves/model/image_metadata.dart';
import 'package:aves/model/metadata_db.dart';
final FavouriteRepo favourites = FavouriteRepo._private();
class FavouriteRepo {
List<FavouriteRow> _rows = [];
FavouriteRepo._private();
Future<void> init() async {
_rows = await metadataDb.loadFavourites();
}
int get count => _rows.length;
bool isFavourite(ImageEntry entry) => _rows.any((row) => row.contentId == entry.contentId);
Future<void> add(ImageEntry entry) async {
final newRows = [FavouriteRow(contentId: entry.contentId, path: entry.path)];
await metadataDb.addFavourites(newRows);
_rows.addAll(newRows);
}
Future<void> remove(ImageEntry entry) async {
final removedRows = [FavouriteRow(contentId: entry.contentId, path: entry.path)];
await metadataDb.removeFavourites(removedRows);
removedRows.forEach(_rows.remove);
}
}