Merge pull request 'merge conflicts' (#172) from conflict_merge into main

Reviewed-on: https://repo.ravanertebat.com/TM/tm_app/pulls/172
This commit is contained in:
a.ghabeli
2025-09-27 13:40:08 +03:30
6 changed files with 128 additions and 91 deletions
+1
View File
@@ -181,4 +181,5 @@ class AppColors {
static const Color yellow4 = Color(0xFFC07A25); static const Color yellow4 = Color(0xFFC07A25);
static const Color secondaryborder = Color(0xFFCDCDCD); static const Color secondaryborder = Color(0xFFCDCDCD);
static const Color secondaryborder2 = Color(0xFFDADADA); static const Color secondaryborder2 = Color(0xFFDADADA);
static const Color orange20 = Color(0xFFF6D7AB);
} }
+9 -4
View File
@@ -52,8 +52,13 @@ class DesktopHomePage extends StatelessWidget {
_progressBarsRow(homeViewModel), _progressBarsRow(homeViewModel),
SizedBox(height: 32.0.h()), SizedBox(height: 32.0.h()),
Padding( Padding(
padding: EdgeInsets.symmetric(horizontal: 15.0.w()), padding: EdgeInsets.symmetric(
child: _firstTenderCardsRow(context, homeViewModel), horizontal: 15.0.w(),
),
child: _firstTenderCardsRow(
context,
homeViewModel,
),
), ),
SizedBox(height: 32.0.h()), SizedBox(height: 32.0.h()),
_yourTenderText(homeViewModel), _yourTenderText(homeViewModel),
@@ -166,8 +171,8 @@ class DesktopHomePage extends StatelessWidget {
iconPath: AssetsManager.thumbLike, iconPath: AssetsManager.thumbLike,
title: HomeStrings.likedTenders, title: HomeStrings.likedTenders,
amount: homeViewModel.feedbackStats?.totalLikes.toString() ?? '0', amount: homeViewModel.feedbackStats?.totalLikes.toString() ?? '0',
textColor: AppColors.grey80, textColor: AppColors.grey50,
enableTap: true, enableTap: (homeViewModel.feedbackStats?.totalLikes ?? 0) != 0,
width: 178, width: 178,
height: 148, height: 148,
onTap: () { onTap: () {
+2 -2
View File
@@ -151,8 +151,8 @@ class MobileHomePage extends StatelessWidget {
iconPath: AssetsManager.thumbLike, iconPath: AssetsManager.thumbLike,
title: HomeStrings.likedTenders, title: HomeStrings.likedTenders,
amount: homeViewModel.feedbackStats?.totalLikes.toString() ?? '0', amount: homeViewModel.feedbackStats?.totalLikes.toString() ?? '0',
textColor: AppColors.grey80, textColor: AppColors.grey50,
enableTap: true, enableTap: (homeViewModel.feedbackStats?.totalLikes ?? 0) != 0,
onTap: () { onTap: () {
const LikedTendersRouteData().push(context).then((value) { const LikedTendersRouteData().push(context).then((value) {
homeViewModel.init(); homeViewModel.init();
+2 -4
View File
@@ -141,7 +141,6 @@ class TabletHomePage extends StatelessWidget {
iconPath: AssetsManager.approve, iconPath: AssetsManager.approve,
title: HomeStrings.approvedTenders, title: HomeStrings.approvedTenders,
amount: '0', amount: '0',
textColor: AppColors.jellyBean, textColor: AppColors.jellyBean,
enableTap: true, enableTap: true,
width: double.infinity, width: double.infinity,
@@ -155,7 +154,6 @@ class TabletHomePage extends StatelessWidget {
); );
} }
// ignore: unused_element
Widget _secondTenderCardsRow( Widget _secondTenderCardsRow(
HomeViewModel homeViewModel, HomeViewModel homeViewModel,
BuildContext context, BuildContext context,
@@ -183,8 +181,8 @@ class TabletHomePage extends StatelessWidget {
iconPath: AssetsManager.thumbLike, iconPath: AssetsManager.thumbLike,
title: HomeStrings.likedTenders, title: HomeStrings.likedTenders,
amount: homeViewModel.feedbackStats?.totalLikes.toString() ?? '0', amount: homeViewModel.feedbackStats?.totalLikes.toString() ?? '0',
textColor: AppColors.grey80, textColor: AppColors.grey50,
enableTap: true, enableTap: (homeViewModel.feedbackStats?.totalLikes ?? 0) != 0,
width: double.infinity, width: double.infinity,
height: 148, height: 148,
onTap: () { onTap: () {
@@ -23,4 +23,5 @@ class NotificationStrings {
static const String info = 'info'; static const String info = 'info';
static const String noUnreadNotifications = 'No unread notifications'; static const String noUnreadNotifications = 'No unread notifications';
static const String noImportantNotifications = 'No important notifications'; static const String noImportantNotifications = 'No important notifications';
static const String moreTextButton = 'More';
} }
@@ -19,97 +19,129 @@ class NotificationCard extends StatelessWidget {
return Container( return Container(
width: double.infinity, width: double.infinity,
margin: EdgeInsets.symmetric(horizontal: 24.0.w()), margin: EdgeInsets.symmetric(horizontal: 24.0.w()),
padding: const EdgeInsets.all(16.0), padding: EdgeInsets.symmetric(horizontal: 16.0.w(), vertical: 16.0.h()),
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColors.primary10Light, color:
notification.priority == NotificationStrings.important.toLowerCase()
? AppColors.orange10
: AppColors.primary10Light,
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
border: Border.all(color: AppColors.primary20), border:
notification.priority == NotificationStrings.important.toLowerCase()
? Border.all(color: AppColors.orange20)
: Border.all(color: AppColors.primary20),
), ),
child: Row( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Padding( Row(
padding: EdgeInsets.only(top: 3.0.h()), crossAxisAlignment: CrossAxisAlignment.start,
child: SvgPicture.asset(AssetsManager.notification), children: [
), SvgPicture.asset(AssetsManager.notification),
SizedBox(width: 5.0.w()), SizedBox(width: 8.0.w()),
Expanded( Text(
child: Column( notification.title!,
crossAxisAlignment: CrossAxisAlignment.start, style: TextStyle(
children: [ fontSize: 16.0.sp(),
Row( fontWeight: FontWeight.w600,
mainAxisAlignment: MainAxisAlignment.spaceBetween, color: AppColors.grey80,
children: [
Text(
notification.title!,
style: TextStyle(
fontSize: 16.0.sp(),
fontWeight: FontWeight.w600,
color: AppColors.grey80,
),
),
const Spacer(),
Visibility(
visible:
notification.priority ==
NotificationStrings.important.toLowerCase(),
child: Container(
width: 86.0.w(),
height: 24.0.h(),
decoration: BoxDecoration(
color: AppColors.blue0,
borderRadius: BorderRadius.circular(8),
),
alignment: Alignment.center,
child: Text(
NotificationStrings.important,
style: TextStyle(
fontSize: 12.0.sp(),
fontWeight: FontWeight.w500,
color: AppColors.cyanTeal,
),
),
),
),
SizedBox(width: !notification.seen! ? 8.0.w() : 0),
!notification.seen!
? Container(
width: 12.0.w(),
height: 12.0.w(),
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: AppColors.mainBlue,
),
)
: const SizedBox(),
],
), ),
SizedBox(height: 8.0.h()), ),
Text( const Spacer(),
notification.message!, Visibility(
maxLines: 1, visible:
overflow: TextOverflow.ellipsis, notification.priority ==
style: TextStyle( NotificationStrings.important.toLowerCase(),
fontSize: 14.0.sp(), child: Container(
fontWeight: FontWeight.w400, width: 86.0.w(),
color: AppColors.grey70, height: 24.0.h(),
decoration: BoxDecoration(
color: AppColors.orange20,
borderRadius: BorderRadius.circular(8),
),
alignment: Alignment.center,
child: Text(
NotificationStrings.important,
style: TextStyle(
fontSize: 12.0.sp(),
fontWeight: FontWeight.w500,
color: AppColors.yellow4,
),
), ),
), ),
SizedBox(height: 8.0.h()), ),
Row( SizedBox(width: !notification.seen! ? 8.0.w() : 0),
children: [ !notification.seen!
SvgPicture.asset(AssetsManager.calendar), ? Container(
SizedBox(width: 4.0.w()), width: 12.0.w(),
Text( height: 12.0.w(),
viewModel.timeAgo(notification.createdAt!.toString()), decoration: BoxDecoration(
style: TextStyle( shape: BoxShape.circle,
fontSize: 12.0.sp(), color:
fontWeight: FontWeight.w400, notification.priority ==
color: AppColors.grey60, NotificationStrings.important.toLowerCase()
), ? AppColors.orange
: AppColors.mainBlue,
), ),
], )
: const SizedBox(),
SizedBox(width: 5.0.w()),
],
),
SizedBox(height: 8.0.h()),
Padding(
padding: EdgeInsets.only(left: 28.0.w()),
child: Text(
notification.message!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 14.0.sp(),
fontWeight: FontWeight.w400,
color: AppColors.grey70,
),
),
),
SizedBox(height: 12.0.h()),
Padding(
padding: EdgeInsets.only(left: 28.0.w()),
child: Row(
children: [
SvgPicture.asset(AssetsManager.calendar),
SizedBox(width: 4.0.w()),
Text(
viewModel.timeAgo(notification.createdAt!),
style: TextStyle(
fontSize: 12.0.sp(),
fontWeight: FontWeight.w400,
color: AppColors.grey60,
),
),
const Spacer(),
TextButton(
onPressed: () {},
child: Row(
children: [
Text(
NotificationStrings.moreTextButton,
style: TextStyle(
fontSize: 14.0.sp(),
fontWeight: FontWeight.w500,
color: AppColors.mainBlue,
),
),
SizedBox(width: 4.0.w()),
SvgPicture.asset(
AssetsManager.arrowRight,
colorFilter: const ColorFilter.mode(
AppColors.mainBlue,
BlendMode.srcIn,
),
),
],
),
), ),
], ],
), ),