import 'package:flutter/cupertino.dart'; import 'package:hmg_patient_app_new/core/location_util.dart'; import 'package:hmg_patient_app_new/features/weather/models/waether_cities_model.dart'; import 'package:hmg_patient_app_new/features/weather/weather_repo.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; class WeatherMonitorViewModel extends ChangeNotifier { WeatherRepo weatherRepo; ErrorHandlerService errorHandlerService; LocationUtils locationUtils; WeatherMonitorViewModel({required this.weatherRepo, required this.errorHandlerService, required this.locationUtils}); final List _cityInfoList = []; bool isLoading = false; List get cityInfoList => _cityInfoList; Future fetchCityInfoList({Function(dynamic)? onSuccess, Function(String)? onError}) async { isLoading = true; _cityInfoList.clear(); locationUtils.getLocation( isShowConfirmDialog: true, onSuccess: (position) async { final result = await weatherRepo.getCityInfo(); result.fold( (failure) async { isLoading = false; notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { onError(failure.toString()); } }, (apiResponse) { isLoading = false; if (apiResponse.messageStatus == 2) { notifyListeners(); if (onError != null) { onError(apiResponse.errorMessage ?? "Unknown error"); } } else if (apiResponse.messageStatus == 1) { final cities = apiResponse.data ?? []; _cityInfoList.addAll(cities); notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); } } }, ); }); } }