Files
tm_app/lib/view_models/home_view_model.dart
T
2025-08-18 08:23:05 +03:30

72 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/services/model/home/home_request/home_request_model.dart';
import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart';
import '../data/repositories/home_repository.dart';
import '../data/services/model/home/home_response/home_response_model.dart';
class HomeViewModel with ChangeNotifier {
final HomeRepository _homeRepository;
HomeViewModel({required HomeRepository homeRepository})
: _homeRepository = homeRepository {
getHome(homeRequestModel: HomeRequestModel(id: '1'));
getHomeRecommandTenders();
}
bool _isLoading = false;
String? _errorMessage;
HomeResponseModel? _homeResponse;
bool get isLoading => _isLoading;
String? get errorMessage => _errorMessage;
HomeResponseModel? get homeResponse => _homeResponse;
RecommendedTendersResponse? _recommendedTendersResponse;
RecommendedTendersResponse? get recommendedTendersResponse =>
_recommendedTendersResponse;
Future<void> getHome({HomeRequestModel? homeRequestModel}) async {
_isLoading = true;
_errorMessage = null;
notifyListeners();
final result = await _homeRepository.getHome(
homeRequestModel: homeRequestModel,
);
switch (result) {
case Ok<HomeResponseModel>():
_homeResponse = result.value;
break;
case Error<HomeResponseModel>():
_errorMessage = result.error.toString();
break;
}
_isLoading = false;
notifyListeners();
}
Future<void> getHomeRecommandTenders() async {
_isLoading = true;
_errorMessage = null;
notifyListeners();
final result = await _homeRepository.getHomeRecommendedTenders();
switch (result) {
case Ok<RecommendedTendersResponse>():
_recommendedTendersResponse = result.value;
break;
case Error<RecommendedTendersResponse>():
_errorMessage = result.error.toString();
break;
}
_isLoading = false;
notifyListeners();
}
}