didvan-app/lib/pages/home/settings/bookmarks/bookmark_state.dart

69 lines
1.9 KiB
Dart

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<ItemOverview> bookmarks = [];
final List<dynamic> filterdBookmarks = [];
String search = '';
String lastSearch = '';
String? groupName;
bool get searching => search != '';
Future<void> 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();
}
}