Refactor loading and error handling in DesktopHomePage; improve notification click handling in service worker

This commit is contained in:
amirrezaghabeli
2025-10-05 10:23:29 +03:30
parent f74f20a4f8
commit d050aab728
3 changed files with 117 additions and 58 deletions
+50 -45
View File
@@ -21,62 +21,67 @@ class DesktopHomePage extends StatelessWidget {
const DesktopNavigationWidget(
currentIndex: 0, // Home index
),
Expanded(
child: Consumer<HomeViewModel>(
builder: (context, homeViewModel, child) {
if (homeViewModel.isLoading) {
return const Center(
Consumer<HomeViewModel>(
builder: (context, homeViewModel, child) {
if (homeViewModel.isLoading) {
return const Expanded(
child: Center(
child: CircularProgressIndicator(
color: AppColors.secondary50,
),
);
}
),
);
}
if (homeViewModel.errorMessage != null) {
return Center(child: Text(homeViewModel.errorMessage!));
}
if (homeViewModel.errorMessage != null) {
return Expanded(
child: Center(child: Text(homeViewModel.errorMessage!)),
);
}
if (homeViewModel.tenderApprovalsStateResponse != null &&
homeViewModel.data != null &&
homeViewModel.feedbackStats != null) {
return SafeArea(
child: SingleChildScrollView(
child: SizedBox(
width: 780,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(height: 55),
// SizedBox(width: 780, child: NotificationCard()),
const SizedBox(height: 40.0),
_progressBarsRow(homeViewModel),
SizedBox(height: 32.0.h()),
Padding(
padding: EdgeInsets.symmetric(
horizontal: 15.0.w(),
if (homeViewModel.tenderApprovalsStateResponse != null &&
homeViewModel.data != null &&
homeViewModel.feedbackStats != null) {
return Expanded(
child: SingleChildScrollView(
child: SizedBox(
width: double.infinity,
child: Center(
child: SizedBox(
width: 780,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(height: 55),
// SizedBox(width: 780, child: NotificationCard()),
const SizedBox(height: 40.0),
_progressBarsRow(homeViewModel),
SizedBox(height: 32.0.h()),
Padding(
padding: EdgeInsets.symmetric(
horizontal: 15.0.w(),
),
child: _firstTenderCardsRow(
context,
homeViewModel,
),
),
child: _firstTenderCardsRow(
context,
homeViewModel,
),
),
SizedBox(height: 32.0.h()),
_yourTenderText(homeViewModel),
SizedBox(height: 8.0.h()),
_bottomListView(homeViewModel),
],
SizedBox(height: 32.0.h()),
_yourTenderText(homeViewModel),
SizedBox(height: 8.0.h()),
_bottomListView(homeViewModel),
],
),
),
),
),
);
}
return const Center(
child: CircularProgressIndicator(
color: AppColors.secondary50,
),
);
},
),
}
return const Center(
child: CircularProgressIndicator(color: AppColors.secondary50),
);
},
),
],
),
@@ -97,6 +97,36 @@ class _MobileNotificationPageState extends State<MobileNotificationPage>
],
),
SizedBox(height: 12.0.h()),
Padding(
padding: EdgeInsetsDirectional.only(end: 24.0.w()),
child: Align(
alignment: Alignment.centerRight,
child: InkWell(
onTap: () {
viewModel.markAllAsRead(context);
},
borderRadius: BorderRadius.circular(99),
child: Container(
width: 132.0.w(),
height: 32.0.h(),
decoration: BoxDecoration(
color: AppColors.primary20,
borderRadius: BorderRadius.circular(99),
),
child: Center(
child: Text(
NotificationStrings.markAllAsReadButton,
style: TextStyle(
fontSize: 14.0.sp(),
fontWeight: FontWeight.w500,
color: AppColors.mainBlue,
),
),
),
),
),
),
),
Expanded(
child: TabBarView(
controller: controller,