import 'package:didvan/models/enums.dart'; import 'package:didvan/models/home_page_content/home_page_content.dart'; import 'package:didvan/providers/core.dart'; import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request_helper.dart'; import 'package:didvan/services/storage/storage.dart'; class GeneralSettingsState extends CoreProvier { GeneralSettingsState() { getSettingsFromStorage(); } List _notificationTimeRange = [0, 24]; String _fontFamily = 'Dana-FA'; double _fontSizeScale = 1; String _brightness = 'light'; String time = ""; bool showSettings = false; bool showThemes = false; bool showContactUs = false; int unread = 0; late MainPageContent content; void markChangeHandler(String type, int id, bool value) { content.lists .firstWhere((element) => element.type == type) .contents .firstWhere((element) => element.id == id) .marked = value; notifyListeners(); } Future _getMainPageContent() async { final service = RequestService(RequestHelper.mainPageContent); await service.httpGet(); if (service.isSuccess) { content = MainPageContent.fromJson(service.result); unread = service.result['unread']; appState = AppState.idle; return; } appState = AppState.failed; } void init() { Future.delayed(Duration.zero, () { _getMainPageContent(); }); } Future getTime() async { appState = AppState.busy; final service = RequestService( RequestHelper.notificationTime(), ); await service.httpGet(); if (service.isSuccess) { time = service.data('time'); appState = AppState.idle; } else { appState = AppState.failed; } update(); } set notificationTimeRange(List value) { _notificationTimeRange = value; StorageService.setValue( key: 'notificationTimeRangeStart', value: value[0], ); StorageService.setValue( key: 'notificationTimeRangeEnd', value: value[1], ); notifyListeners(); _setSilenceInterval(); } List get notificationTimeRange => _notificationTimeRange; set fontFamily(String value) { _fontFamily = value; StorageService.setValue( key: 'fontFamily', value: value, ); notifyListeners(); } String get fontFamily => _fontFamily; set fontSizeScale(double value) { _fontSizeScale = value; StorageService.setValue( key: 'fontSizeScale', value: value, ); notifyListeners(); } double get fontSizeScale => _fontSizeScale; set brightness(String value) { _brightness = value; StorageService.setValue( key: 'brightness', value: value, ); notifyListeners(); } String get brightness => _brightness; Future _setSilenceInterval() async { final service = RequestService(RequestHelper.silenceInterval, body: { 'start': notificationTimeRange[0], 'end': notificationTimeRange[1] }); await service.put(); } Future getSettingsFromStorage() async { appState = AppState.busy; try { _notificationTimeRange[0] = int.parse( await StorageService.getValue(key: 'notificationTimeRangeStart'), ); _notificationTimeRange[1] = int.parse( await StorageService.getValue(key: 'notificationTimeRangeEnd'), ); } catch (e) { notificationTimeRange = [0, 0]; } _fontFamily = await StorageService.getValue(key: 'fontFamily'); _brightness = await StorageService.getValue(key: 'brightness'); final scale = await StorageService.getValue(key: 'fontSizeScale'); _fontSizeScale = double.parse(scale); appState = AppState.idle; } }