Add liked tenders functionality to HomeRepository and ViewModel
- Integrated LikedTendersService into HomeRepository to fetch the count of user-liked tenders. - Updated HomeViewModel to load and manage the userLikedTendersCount. - Adjusted UI components across home pages to display the liked tenders count. - Refactored date handling in date_utils.dart to improve timestamp parsing and validation. - Enhanced unit tests for date utilities to cover new edge cases.
This commit is contained in:
@@ -1,21 +1,25 @@
|
||||
import 'package:tm_app/core/utils/result.dart';
|
||||
import 'package:tm_app/data/services/home_service.dart';
|
||||
import 'package:tm_app/data/services/liked_tenders_service.dart';
|
||||
import 'package:tm_app/data/services/model/recommended_tenders_response/recommended_tenders_response.dart';
|
||||
import 'package:tm_app/data/services/model/tender_approvals_response/tender_approvals_response.dart';
|
||||
import 'package:tm_app/data/services/model/tender_approvals_stats_response/tender_approvals_stats_response.dart';
|
||||
|
||||
import '../services/model/feedback_stats_response/feedback_stat_response.dart';
|
||||
import '../services/model/request_models/get_tenders_request_model/get_tenders_request_model.dart';
|
||||
import '../services/model/request_models/tender_feedback_request_model/tender_feedback_request_model.dart';
|
||||
import '../services/your_tenders_service.dart';
|
||||
|
||||
class HomeRepository {
|
||||
HomeRepository({
|
||||
required HomeService homeService,
|
||||
required YourTendersService yourTendersService,
|
||||
required LikedTendersService likedTendersService,
|
||||
}) : _homeService = homeService,
|
||||
_yourTendersService = yourTendersService;
|
||||
_yourTendersService = yourTendersService,
|
||||
_likedTendersService = likedTendersService;
|
||||
final HomeService _homeService;
|
||||
final YourTendersService _yourTendersService;
|
||||
final LikedTendersService _likedTendersService;
|
||||
|
||||
Future<Result<RecommendedTendersResponse>> getHomeRecommendedTenders({
|
||||
required int limit,
|
||||
@@ -34,11 +38,25 @@ class HomeRepository {
|
||||
return _homeService.getTendersApprovalsStats();
|
||||
}
|
||||
|
||||
Future<Result<FeedbackStatResponse>> getFeedbackStats() {
|
||||
return _homeService.getFeedbackStats();
|
||||
}
|
||||
Future<Result<Map<String, dynamic>>> checkUnreadNotifications() async {
|
||||
return _homeService.checkUnreadNotifications();
|
||||
}
|
||||
/// Returns how many tenders the current user has liked (not company-wide).
|
||||
Future<Result<int>> getUserLikedTendersCount() async {
|
||||
final result = await _likedTendersService.getLikedTenders(
|
||||
requestModel: TenderFeedbackRequestModel(
|
||||
feedbackType: 'like',
|
||||
limit: 1,
|
||||
offset: 0,
|
||||
),
|
||||
);
|
||||
|
||||
switch (result) {
|
||||
case Ok(value: final response):
|
||||
return Result.ok(response.data?.meta?.total ?? 0);
|
||||
case Error(error: final error):
|
||||
return Result.error(error);
|
||||
}
|
||||
}
|
||||
|
||||
Future<Result<Map<String, dynamic>>> checkUnreadNotifications() async {
|
||||
return _homeService.checkUnreadNotifications();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user