72 lines
2.0 KiB
Dart
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();
|
|
}
|
|
}
|