From 438a9bdccb417ce3de7a0dec47e860612189ae62 Mon Sep 17 00:00:00 2001 From: amirrezaghabeli Date: Sat, 23 Aug 2025 11:20:41 +0330 Subject: [PATCH] some changes in tenders --- lib/view_models/tender_detail_view_model.dart | 2 + lib/view_models/tenders_view_model.dart | 16 ++++--- .../detail/pages/detail_mobile_page.dart | 8 ++++ lib/views/tenders/pages/m_tenders_page.dart | 47 ++++++++++++++++++- 4 files changed, 66 insertions(+), 7 deletions(-) diff --git a/lib/view_models/tender_detail_view_model.dart b/lib/view_models/tender_detail_view_model.dart index 3f73acb..8b1907e 100644 --- a/lib/view_models/tender_detail_view_model.dart +++ b/lib/view_models/tender_detail_view_model.dart @@ -61,6 +61,7 @@ class TenderDetailViewModel with ChangeNotifier { required String submissionMode, }) async { _isSubmitApprovalLoading = true; + _errorMessage = null; notifyListeners(); final result = await _tendersRepository.toggleApprovals( tenderId: tenderId, @@ -89,6 +90,7 @@ class TenderDetailViewModel with ChangeNotifier { required String submissionMode, }) async { _isRejectApprovalLoading = true; + _errorMessage = null; notifyListeners(); final result = await _tendersRepository.toggleApprovals( tenderId: tenderId, diff --git a/lib/view_models/tenders_view_model.dart b/lib/view_models/tenders_view_model.dart index cb974f4..c954e8f 100644 --- a/lib/view_models/tenders_view_model.dart +++ b/lib/view_models/tenders_view_model.dart @@ -25,6 +25,8 @@ class TendersViewModel with ChangeNotifier { bool _isLoading = false; bool _isLoadingMore = false; String? _errorMessage; + String? _feedbackErrorMessage; + String? _tenderApprovalErrorMessage; TendersResponse? _tendersResponse; FeedbackData? _feedbackData; TenderApprovalsData? _tenderApprovalData; @@ -33,6 +35,8 @@ class TendersViewModel with ChangeNotifier { bool get isLoading => _isLoading; bool get isLoadingMore => _isLoadingMore; String? get errorMessage => _errorMessage; + String? get feedbackErrorMessage => _feedbackErrorMessage; + String? get tenderApprovalErrorMessage => _tenderApprovalErrorMessage; TendersResponse? get tendersResponse => _tendersResponse; FeedbackData? get feedbackData => _feedbackData; TenderApprovalsData? get tenderApprovalData => _tenderApprovalData; @@ -246,7 +250,7 @@ class TendersViewModel with ChangeNotifier { required String tenderId, required String feedbackType, }) async { - _errorMessage = null; + _feedbackErrorMessage = null; notifyListeners(); final result = await _tendersRepository.feedback( @@ -268,11 +272,11 @@ class TendersViewModel with ChangeNotifier { } break; case Error(): - _errorMessage = result.error.toString(); + _feedbackErrorMessage = result.error.toString(); break; } notifyListeners(); - _errorMessage = null; + _feedbackErrorMessage = null; notifyListeners(); } @@ -281,7 +285,7 @@ class TendersViewModel with ChangeNotifier { required String submissionMode, required String status, }) async { - _errorMessage = null; + _tenderApprovalErrorMessage = null; notifyListeners(); final result = await _tendersRepository.toggleApprovals( tenderId: tenderId, @@ -314,11 +318,11 @@ class TendersViewModel with ChangeNotifier { } break; case Error(): - _errorMessage = result.error.toString(); + _tenderApprovalErrorMessage = result.error.toString(); break; } notifyListeners(); - _errorMessage = null; + _tenderApprovalErrorMessage = null; notifyListeners(); } } diff --git a/lib/views/detail/pages/detail_mobile_page.dart b/lib/views/detail/pages/detail_mobile_page.dart index 252a1ab..938bbf3 100644 --- a/lib/views/detail/pages/detail_mobile_page.dart +++ b/lib/views/detail/pages/detail_mobile_page.dart @@ -55,6 +55,14 @@ class _TenderDetailMobilePageState extends State { SnackBar(content: Text('tender reject removed sucessfully!')), ); } + // if (viewModel.errorMessage != null) { + // ScaffoldMessenger.of(context).showSnackBar( + // SnackBar( + // backgroundColor: AppColors.errorColor, + // content: Text(viewModel.errorMessage!), + // ), + // ); + // } } @override diff --git a/lib/views/tenders/pages/m_tenders_page.dart b/lib/views/tenders/pages/m_tenders_page.dart index 081a06f..d35c8e0 100644 --- a/lib/views/tenders/pages/m_tenders_page.dart +++ b/lib/views/tenders/pages/m_tenders_page.dart @@ -8,9 +8,54 @@ import '../../../core/theme/colors.dart'; import '../../shared/tender_app_bar.dart'; import '../widgets/main_tenders_slider.dart'; -class MobileTendersPage extends StatelessWidget { +class MobileTendersPage extends StatefulWidget { const MobileTendersPage({super.key}); + @override + State createState() => _MobileTendersPageState(); +} + +class _MobileTendersPageState extends State { + late final TendersViewModel viewModel; + @override + void initState() { + super.initState(); + viewModel = context.read(); + viewModel.addListener(_viewModelListener); + } + + void _viewModelListener() { + if (viewModel.feedbackErrorMessage != null) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + backgroundColor: AppColors.error, + content: Text(viewModel.feedbackErrorMessage!), + ), + ); + } + // if (viewModel.errorMessage != null) { + // ScaffoldMessenger.of(context).showSnackBar( + // SnackBar( + // content: Text(viewModel.errorMessage!), + // ), + // ); + // } + if (viewModel.tenderApprovalErrorMessage != null) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + backgroundColor: AppColors.error, + content: Text(viewModel.tenderApprovalErrorMessage!), + ), + ); + } + } + + @override + void dispose() { + viewModel.removeListener(_viewModelListener); + super.dispose(); + } + @override Widget build(BuildContext context) { return Scaffold(