D1APP-39 news completed
This commit is contained in:
parent
01fcaec288
commit
e642d58e46
|
|
@ -1,3 +1,4 @@
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
import 'package:didvan/models/enums.dart';
|
import 'package:didvan/models/enums.dart';
|
||||||
import 'package:didvan/models/news_overview.dart';
|
import 'package:didvan/models/news_overview.dart';
|
||||||
import 'package:didvan/providers/core_provider.dart';
|
import 'package:didvan/providers/core_provider.dart';
|
||||||
|
|
@ -6,11 +7,12 @@ import 'package:didvan/services/network/request_helper.dart';
|
||||||
|
|
||||||
class NewsState extends CoreProvier {
|
class NewsState extends CoreProvier {
|
||||||
bool isFiltering = false;
|
bool isFiltering = false;
|
||||||
String? search;
|
String search = '';
|
||||||
String? lastSearch;
|
String lastSearch = '';
|
||||||
String? startDate;
|
String? startDate;
|
||||||
String? endDate;
|
String? endDate;
|
||||||
|
|
||||||
|
final List<MapEntry> _markQueue = [];
|
||||||
final List<NewsOverview> news = [];
|
final List<NewsOverview> news = [];
|
||||||
|
|
||||||
void resetFilters() {
|
void resetFilters() {
|
||||||
|
|
@ -22,21 +24,21 @@ class NewsState extends CoreProvier {
|
||||||
Future<void> getNews({
|
Future<void> getNews({
|
||||||
required int page,
|
required int page,
|
||||||
}) async {
|
}) async {
|
||||||
if (search != '' && search != null || filterApplied) {
|
if (search != '' || filterApplied) {
|
||||||
lastSearch = search;
|
lastSearch = search;
|
||||||
isFiltering = true;
|
isFiltering = true;
|
||||||
news.clear();
|
|
||||||
} else {
|
} else {
|
||||||
isFiltering = false;
|
isFiltering = false;
|
||||||
}
|
}
|
||||||
lastSearch = search;
|
lastSearch = search;
|
||||||
appState = AppState.busy;
|
appState = AppState.busy;
|
||||||
|
news.clear();
|
||||||
final service = RequestService(
|
final service = RequestService(
|
||||||
RequestHelper.newsOverviews(
|
RequestHelper.newsOverviews(
|
||||||
page: 1,
|
page: 1,
|
||||||
startDate: startDate?.split(' ').first,
|
startDate: startDate?.split(' ').first,
|
||||||
endDate: endDate?.split(' ').first,
|
endDate: endDate?.split(' ').first,
|
||||||
search: search,
|
search: search == '' ? null : search,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
await service.httpGet();
|
await service.httpGet();
|
||||||
|
|
@ -52,8 +54,35 @@ class NewsState extends CoreProvier {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> markNews(int id) async {
|
Future<void> markNews(int id) async {
|
||||||
|
news.firstWhere((element) => element.id == id).marked = true;
|
||||||
|
notifyListeners();
|
||||||
|
_markQueue.add(MapEntry(id, true));
|
||||||
|
Future.delayed(const Duration(milliseconds: 500), () async {
|
||||||
|
final MapEntry? lastChange =
|
||||||
|
_markQueue.lastWhereOrNull((item) => item.key == id);
|
||||||
|
if (lastChange == null) return;
|
||||||
|
if (lastChange.value) {
|
||||||
final service = RequestService(RequestHelper.markNews(id));
|
final service = RequestService(RequestHelper.markNews(id));
|
||||||
await service.post();
|
await service.post();
|
||||||
|
_markQueue.removeWhere((element) => element.key == id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> unMarkNews(int id) async {
|
||||||
|
news.firstWhere((element) => element.id == id).marked = false;
|
||||||
|
notifyListeners();
|
||||||
|
_markQueue.add(MapEntry(id, false));
|
||||||
|
Future.delayed(const Duration(milliseconds: 500), () async {
|
||||||
|
final MapEntry? lastChange =
|
||||||
|
_markQueue.lastWhereOrNull((item) => item.key == id);
|
||||||
|
if (lastChange == null) return;
|
||||||
|
if (!lastChange.value) {
|
||||||
|
final service = RequestService(RequestHelper.markNews(id));
|
||||||
|
await service.delete();
|
||||||
|
_markQueue.removeWhere((element) => element.key == id);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool get filterApplied => startDate != null || endDate != null;
|
bool get filterApplied => startDate != null || endDate != null;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue