import 'package:didvan/models/enums.dart'; import 'package:didvan/models/overview_data.dart'; import 'package:didvan/models/requests/studio.dart'; import 'package:didvan/providers/core_provider.dart'; import 'package:didvan/providers/user_provider.dart'; import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request_helper.dart'; class StudioState extends CoreProvier { final List studios = []; String? search; String? lastSearch; int page = 1; int lastPage = 1; int selectedSortTypeIndex = 0; bool _videosSelected = true; bool get videosSelected => _videosSelected; set videosSelected(bool value) { if (_videosSelected == value) return; _videosSelected = value; studios.clear(); getStudioOverviews(page: page); } void init() { search = ''; lastSearch = ''; _videosSelected = true; selectedSortTypeIndex = 0; Future.delayed(Duration.zero, () { getStudioOverviews(page: 1); }); } String get order { if (selectedSortTypeIndex == 0) return 'date'; if (selectedSortTypeIndex == 1) return 'view'; return 'comment'; } String get type { if (videosSelected) return 'video'; return 'podcast'; } Future getStudioOverviews({required int page}) async { this.page = page; if (page == 1) { appState = AppState.busy; } final service = RequestService( RequestHelper.studioOverviews( args: StudioRequestArgs( page: page, type: type, search: search, order: order, ), ), ); await service.httpGet(); if (service.isSuccess) { if (page == 1) { studios.clear(); } lastPage = service.result['lastPage']; final studioItems = service.result['studios']; for (var i = 0; i < studioItems.length; i++) { studios.add(OverviewData.fromJson(studioItems[i])); } appState = AppState.idle; return; } appState = AppState.failed; } Future changeMark(int id, bool value) async { studios.firstWhere((element) => element.id == id).marked = value; notifyListeners(); UserProvider.changeStudioMark(id, value); } void onCommentsChanged(int id, int count) { studios.firstWhere((radar) => radar.id == id).comments = count; notifyListeners(); } }