/
bookmark_controller.dart
42 lines (32 loc) · 1.05 KB
/
bookmark_controller.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import 'package:flutter_modular/flutter_modular.dart';
import 'package:mobx/mobx.dart';
import '../../shared/models/feed_item.dart';
import '../../shared/repositories/bookmark_repository.dart';
part 'bookmark_controller.g.dart';
@Injectable()
class BookmarkController = _BookmarksControllerBase with _$BookmarkController;
abstract class _BookmarksControllerBase with Store {
final BookmarkRepository _bookmarksRepository = Modular.get();
@observable
ObservableList<FeedItem> bookmarks = ObservableList<FeedItem>();
List<FeedItem> marked = [];
@action
Future<void> loadBookmarks() async {
bookmarks.addAll(await _bookmarksRepository.getAll());
}
@action
Future<void> deleteBookmark(FeedItem feedItem) async {
marked.add(feedItem);
bookmarks.remove(feedItem);
}
@action
Future<void> undoDelete(int index, FeedItem feedItem) async {
marked.remove(feedItem);
bookmarks.insert(index, feedItem);
}
Future<void> deleteMarked() async {
for (var item in marked) {
await _bookmarksRepository.delete(item.key);
}
}
}