show message when there is error in submit or remove approvals
This commit is contained in:
@@ -21,7 +21,7 @@ class FetchDataException extends AppException {
|
|||||||
FetchDataException([String? message, int? statusCode, originalError])
|
FetchDataException([String? message, int? statusCode, originalError])
|
||||||
: super(
|
: super(
|
||||||
message ?? 'Error During Communication: ',
|
message ?? 'Error During Communication: ',
|
||||||
'Network Error',
|
'Network Error : ',
|
||||||
statusCode,
|
statusCode,
|
||||||
originalError,
|
originalError,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -55,6 +55,11 @@ class LikedTendersViewModel with ChangeNotifier {
|
|||||||
_homeViewModel.init();
|
_homeViewModel.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void clearApprovalErrorMessage() {
|
||||||
|
_errorMessage = null;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> getLikedTenders({bool reset = false}) async {
|
Future<void> getLikedTenders({bool reset = false}) async {
|
||||||
if (!reset && (isLoadingMore || !hasMore)) {
|
if (!reset && (isLoadingMore || !hasMore)) {
|
||||||
return;
|
return;
|
||||||
@@ -303,7 +308,7 @@ class LikedTendersViewModel with ChangeNotifier {
|
|||||||
approvalStatus = false;
|
approvalStatus = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
approvalStatus = false;
|
||||||
_isSubmitApprovalLoading = false;
|
_isSubmitApprovalLoading = false;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
@@ -370,6 +375,7 @@ class LikedTendersViewModel with ChangeNotifier {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
approvalStatus = false;
|
||||||
_isRejectApprovalLoading = false;
|
_isRejectApprovalLoading = false;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,9 +24,26 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
viewModel = context.read<LikedTendersViewModel>();
|
viewModel = context.read<LikedTendersViewModel>();
|
||||||
|
viewModel.addListener(_viewModelListener);
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _viewModelListener() {
|
||||||
|
if (viewModel.approvalErrorMessage?.isNotEmpty == true &&
|
||||||
|
viewModel.approvalStatus == false) {
|
||||||
|
ScaffoldMessenger.of(
|
||||||
|
context,
|
||||||
|
).showSnackBar(SnackBar(content: Text(viewModel.approvalErrorMessage!)));
|
||||||
|
viewModel.clearApprovalErrorMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
viewModel.removeListener(_viewModelListener);
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return PopScope(
|
return PopScope(
|
||||||
|
|||||||
@@ -27,6 +27,18 @@ class _LikedTendersMobilePageState extends State<LikedTendersMobilePage> {
|
|||||||
viewModel = context.read<LikedTendersViewModel>();
|
viewModel = context.read<LikedTendersViewModel>();
|
||||||
super.initState();
|
super.initState();
|
||||||
_scrollController = ScrollController()..addListener(_onScroll);
|
_scrollController = ScrollController()..addListener(_onScroll);
|
||||||
|
viewModel.addListener(_viewModelListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _viewModelListener() {
|
||||||
|
if (mounted &&
|
||||||
|
viewModel.approvalErrorMessage?.isNotEmpty == true &&
|
||||||
|
viewModel.approvalStatus == false) {
|
||||||
|
ScaffoldMessenger.of(
|
||||||
|
context,
|
||||||
|
).showSnackBar(SnackBar(content: Text(viewModel.approvalErrorMessage!)));
|
||||||
|
viewModel.clearApprovalErrorMessage();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onScroll() {
|
void _onScroll() {
|
||||||
@@ -46,6 +58,7 @@ class _LikedTendersMobilePageState extends State<LikedTendersMobilePage> {
|
|||||||
void dispose() {
|
void dispose() {
|
||||||
_scrollController.removeListener(_onScroll);
|
_scrollController.removeListener(_onScroll);
|
||||||
_scrollController.dispose();
|
_scrollController.dispose();
|
||||||
|
viewModel.removeListener(_viewModelListener);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,11 +107,7 @@ class _LikedTendersMobilePageState extends State<LikedTendersMobilePage> {
|
|||||||
final itemCount =
|
final itemCount =
|
||||||
feedback.length + (viewModel.isLoadingMore ? 1 : 0);
|
feedback.length + (viewModel.isLoadingMore ? 1 : 0);
|
||||||
|
|
||||||
return RefreshIndicator(
|
return ListView.builder(
|
||||||
onRefresh: () async {
|
|
||||||
await viewModel.getLikedTenders(reset: true);
|
|
||||||
},
|
|
||||||
child: ListView.builder(
|
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
padding: EdgeInsets.symmetric(
|
padding: EdgeInsets.symmetric(
|
||||||
horizontal: 24.0.w(),
|
horizontal: 24.0.w(),
|
||||||
@@ -109,8 +118,9 @@ class _LikedTendersMobilePageState extends State<LikedTendersMobilePage> {
|
|||||||
if (index < feedback.length) {
|
if (index < feedback.length) {
|
||||||
final item = feedback[index];
|
final item = feedback[index];
|
||||||
TenderApprovalsData? approval;
|
TenderApprovalsData? approval;
|
||||||
bool hasApproval = viewModel
|
bool hasApproval = viewModel.hasTenderApprovalForTender(
|
||||||
.hasTenderApprovalForTender(item.tenderId!);
|
item.tenderId!,
|
||||||
|
);
|
||||||
if (hasApproval) {
|
if (hasApproval) {
|
||||||
approval = viewModel.getApprovalStatusForTender(
|
approval = viewModel.getApprovalStatusForTender(
|
||||||
item.tenderId!,
|
item.tenderId!,
|
||||||
@@ -162,7 +172,6 @@ class _LikedTendersMobilePageState extends State<LikedTendersMobilePage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -26,6 +26,23 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
viewModel = context.read<LikedTendersViewModel>();
|
viewModel = context.read<LikedTendersViewModel>();
|
||||||
super.initState();
|
super.initState();
|
||||||
|
viewModel.addListener(_viewModelListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _viewModelListener() {
|
||||||
|
if (viewModel.approvalErrorMessage?.isNotEmpty == true &&
|
||||||
|
viewModel.approvalStatus == false) {
|
||||||
|
ScaffoldMessenger.of(
|
||||||
|
context,
|
||||||
|
).showSnackBar(SnackBar(content: Text(viewModel.approvalErrorMessage!)));
|
||||||
|
viewModel.clearApprovalErrorMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
viewModel.removeListener(_viewModelListener);
|
||||||
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
Reference in New Issue
Block a user