import 'package:didvan/models/enums.dart'; import 'package:didvan/models/item_overview.dart'; import 'package:didvan/providers/core_provider.dart'; import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request_helper.dart'; class BookmarksState extends CoreProvier { final List bookmarks = []; final List filterdBookmarks = []; String search = ''; String lastSearch = ''; String? groupName; bool get searching => search != ''; Future getBookmarks() async { if (search != '') { lastSearch = search; } appState = AppState.busy; final service = RequestService(RequestHelper.bookmarks(groupName)); await service.httpGet(); String resultKey; switch (groupName) { case 'radar': resultKey = 'radars'; break; case 'news': resultKey = groupName!; break; default: resultKey = 'contents'; } if (service.isSuccess) { final marks = service.result[resultKey]; if (groupName == null) { bookmarks.clear(); for (var i = 0; i < marks.length; i++) { bookmarks.add(ItemOverview.fromJson(marks[i])); } } else { filterdBookmarks.clear(); for (var i = 0; i < marks.length; i++) { filterdBookmarks.add(ItemOverview.fromJson(marks[i])); } } appState = AppState.idle; return; } appState = AppState.failed; } void unMark(int id) { bookmarks.removeWhere((element) => element.id == id); filterdBookmarks.removeWhere((element) => element.id == id); notifyListeners(); final service = RequestService(RequestHelper.markRadar(id)); service.delete(); } void onCommentsChanged(int id, int value) { bookmarks.firstWhere((radar) => radar.id == id).comments = value; filterdBookmarks.firstWhere((radar) => radar.id == id).comments = value; notifyListeners(); } }