61 lines
1.5 KiB
Dart
61 lines
1.5 KiB
Dart
import 'package:didvan/models/enums.dart';
|
|
import 'package:didvan/models/news_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 NewsState extends CoreProvier {
|
|
bool isFiltering = false;
|
|
String? search;
|
|
String? lastSearch;
|
|
String? startDate;
|
|
String? endDate;
|
|
|
|
final List<NewsOverview> news = [];
|
|
|
|
void resetFilters() {
|
|
startDate = null;
|
|
endDate = null;
|
|
getNews(page: 1);
|
|
}
|
|
|
|
Future<void> getNews({
|
|
required int page,
|
|
}) async {
|
|
if (search != '' && search != null || filterApplied) {
|
|
lastSearch = search;
|
|
isFiltering = true;
|
|
news.clear();
|
|
} else {
|
|
isFiltering = false;
|
|
}
|
|
lastSearch = search;
|
|
appState = AppState.busy;
|
|
final service = RequestService(
|
|
RequestHelper.newsOverviews(
|
|
page: 1,
|
|
startDate: startDate?.split(' ').first,
|
|
endDate: endDate?.split(' ').first,
|
|
search: search,
|
|
),
|
|
);
|
|
await service.httpGet();
|
|
if (service.isSuccess) {
|
|
final newsList = service.result['news'];
|
|
for (var i = 0; i < newsList.length; i++) {
|
|
news.add(NewsOverview.fromJson(newsList[i]));
|
|
}
|
|
appState = AppState.idle;
|
|
return;
|
|
}
|
|
appState = AppState.failed;
|
|
}
|
|
|
|
Future<void> markNews(int id) async {
|
|
final service = RequestService(RequestHelper.markNews(id));
|
|
await service.post();
|
|
}
|
|
|
|
bool get filterApplied => startDate != null || endDate != null;
|
|
}
|