diff --git a/lib/presentation/home/home_screen.dart b/lib/presentation/home/home_screen.dart index a5e99a65..9484fea0 100644 --- a/lib/presentation/home/home_screen.dart +++ b/lib/presentation/home/home_screen.dart @@ -9,8 +9,8 @@ import 'package:skelter/presentation/home/bloc/home_bloc.dart'; import 'package:skelter/presentation/home/bloc/home_event.dart'; import 'package:skelter/presentation/home/widgets/bottom_nav_bar.dart'; import 'package:skelter/presentation/home/widgets/home_screen_body.dart'; +import 'package:skelter/presentation/my_orders/my_orders_screen.dart'; import 'package:skelter/presentation/profile/profile_screen.dart'; -import 'package:skelter/presentation/search/search_screen.dart'; import 'package:skelter/services/in_app_review_service.dart'; import 'package:skelter/utils/app_environment.dart'; @@ -51,7 +51,7 @@ class HomeScreenWrapperState extends State { Widget build(BuildContext context) { final List pages = [ HomeScreenBody(bottomNavKey: bottomNavKey), - const SearchScreen(), + const MyOrdersScreen(), const InitialCheckoutScreen(), const ProfileScreen(), ]; diff --git a/lib/presentation/home/widgets/bottom_nav_bar.dart b/lib/presentation/home/widgets/bottom_nav_bar.dart index cbc742ac..9dab6f22 100644 --- a/lib/presentation/home/widgets/bottom_nav_bar.dart +++ b/lib/presentation/home/widgets/bottom_nav_bar.dart @@ -33,8 +33,8 @@ class BottomNavBar extends StatelessWidget { label: context.localization.home, ), BottomNavigationBarItem( - icon: const Icon(TablerIcons.search), - label: context.localization.search, + icon: const Icon(TablerIcons.package), + label: context.localization.my_orders, ), BottomNavigationBarItem( icon: const Icon(TablerIcons.shopping_cart), diff --git a/lib/presentation/my_orders/my_orders_screen.dart b/lib/presentation/my_orders/my_orders_screen.dart index 8c54d8e2..7561ed57 100644 --- a/lib/presentation/my_orders/my_orders_screen.dart +++ b/lib/presentation/my_orders/my_orders_screen.dart @@ -47,8 +47,7 @@ class MyOrdersScreenBody extends StatelessWidget { return isLoading ? const MyOrdersShimmer() : ListView.separated( - itemCount: products.take(2).length, - shrinkWrap: true, + itemCount: products.length, padding: const EdgeInsets.all(12), itemBuilder: (context, index) { return MyOrderItem(product: products[index]); diff --git a/lib/presentation/my_orders/widgets/my_order_app_bar.dart b/lib/presentation/my_orders/widgets/my_order_app_bar.dart index 319ac27a..4e3b4e4f 100644 --- a/lib/presentation/my_orders/widgets/my_order_app_bar.dart +++ b/lib/presentation/my_orders/widgets/my_order_app_bar.dart @@ -1,11 +1,7 @@ -import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_tabler_icons/flutter_tabler_icons.dart'; import 'package:skelter/common/theme/text_style/app_text_styles.dart'; import 'package:skelter/i18n/localization.dart'; import 'package:skelter/utils/theme/extension/theme_extension.dart'; -import 'package:skelter/widgets/app_button/app_button.dart'; -import 'package:skelter/widgets/app_button/enums/app_button_size_enum.dart'; class MyOrderAppBar extends StatelessWidget implements PreferredSizeWidget { const MyOrderAppBar({super.key}); @@ -13,12 +9,7 @@ class MyOrderAppBar extends StatelessWidget implements PreferredSizeWidget { @override Widget build(BuildContext context) { return AppBar( - leading: AppButton.icon( - iconData: TablerIcons.arrow_left, - iconOrTextColorOverride: context.currentTheme.iconNeutralDefault, - size: AppButtonSize.extraLarge, - onPressed: () => context.router.maybePop(), - ), + automaticallyImplyLeading: false, title: Text( context.localization.my_orders, style: AppTextStyles.h6SemiBold.copyWith( diff --git a/lib/presentation/order_detail/order_detail_screen.dart b/lib/presentation/order_detail/order_detail_screen.dart index 1800d7af..72301cbb 100644 --- a/lib/presentation/order_detail/order_detail_screen.dart +++ b/lib/presentation/order_detail/order_detail_screen.dart @@ -101,23 +101,23 @@ class OrderDetailBody extends StatelessWidget { appBar: const OrderDetailsAppBar(), body: productDetail == null ? Center(child: Text(context.localization.opps_something_went_wrong)) - : const SingleChildScrollView( - padding: EdgeInsets.all(16), + : SingleChildScrollView( + padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: .start, children: [ - OrderDetailProductCard(), - SizedBox(height: 24), - OrderDetailPaymentMethod(), - SizedBox(height: 24), - TrackingDetails(), - SizedBox(height: 24), - OrderDetailShippingAddress(), - SizedBox(height: 24), - OrderDetailSummary(), - SizedBox(height: 24), - OrderDetailActionButtons(), - SizedBox(height: 24), + const OrderDetailProductCard(), + const SizedBox(height: 24), + const OrderDetailPaymentMethod(), + const SizedBox(height: 24), + const TrackingDetails(), + const SizedBox(height: 24), + const OrderDetailShippingAddress(), + const SizedBox(height: 24), + const OrderDetailSummary(), + const SizedBox(height: 24), + const OrderDetailActionButtons(), + SizedBox(height: 16 + context.bottomPadding), ], ), ), diff --git a/lib/presentation/profile/widgets/activity_section.dart b/lib/presentation/profile/widgets/activity_section.dart index 6fb4cdc6..edcbf3d4 100644 --- a/lib/presentation/profile/widgets/activity_section.dart +++ b/lib/presentation/profile/widgets/activity_section.dart @@ -3,7 +3,6 @@ import 'package:skelter/common/theme/text_style/app_text_styles.dart'; import 'package:skelter/i18n/localization.dart'; import 'package:skelter/presentation/profile/widgets/community.dart'; import 'package:skelter/presentation/profile/widgets/divider.dart'; -import 'package:skelter/presentation/profile/widgets/history_button.dart'; import 'package:skelter/presentation/profile/widgets/notifications.dart'; import 'package:skelter/utils/theme/extension/theme_extension.dart'; @@ -30,13 +29,7 @@ class ActivitySection extends StatelessWidget { borderRadius: BorderRadius.circular(12.0), ), child: const Column( - children: [ - Notifications(), - ProfileItemsDivider(), - History(), - ProfileItemsDivider(), - Community(), - ], + children: [Notifications(), ProfileItemsDivider(), Community()], ), ), ], diff --git a/lib/presentation/profile/widgets/history_button.dart b/lib/presentation/profile/widgets/history_button.dart deleted file mode 100644 index 8aa015d1..00000000 --- a/lib/presentation/profile/widgets/history_button.dart +++ /dev/null @@ -1,35 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_tabler_icons/flutter_tabler_icons.dart'; -import 'package:skelter/common/theme/text_style/app_text_styles.dart'; -import 'package:skelter/i18n/localization.dart'; -import 'package:skelter/routes.gr.dart'; -import 'package:skelter/utils/theme/extension/theme_extension.dart'; - -class History extends StatelessWidget { - const History({super.key}); - - @override - Widget build(BuildContext context) { - return ListTile( - tileColor: context.currentTheme.bgSurfaceBase2, - leading: Icon( - TablerIcons.package, - color: context.currentTheme.iconNeutralDefault, - ), - title: Text( - context.localization.my_orders, - style: AppTextStyles.h6SemiBold.copyWith( - color: context.currentTheme.textNeutralPrimary, - ), - ), - trailing: Icon( - TablerIcons.chevron_right, - color: context.currentTheme.iconNeutralDefault, - ), - onTap: () { - context.pushRoute(const MyOrdersRoute()); - }, - ); - } -} diff --git a/lib/presentation/profile/widgets/notifications.dart b/lib/presentation/profile/widgets/notifications.dart index 3053cf94..07a05ab3 100644 --- a/lib/presentation/profile/widgets/notifications.dart +++ b/lib/presentation/profile/widgets/notifications.dart @@ -1,8 +1,9 @@ +import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_tabler_icons/flutter_tabler_icons.dart'; import 'package:skelter/common/theme/text_style/app_text_styles.dart'; import 'package:skelter/i18n/localization.dart'; -import 'package:skelter/utils/extensions/build_context_ext.dart'; +import 'package:skelter/routes.gr.dart'; import 'package:skelter/utils/theme/extension/theme_extension.dart'; class Notifications extends StatelessWidget { @@ -32,9 +33,7 @@ class Notifications extends StatelessWidget { TablerIcons.chevron_right, color: context.currentTheme.iconNeutralDefault, ), - onTap: () { - context.showSnackBar('Show Notification details'); - }, + onTap: () => context.pushRoute(const NotificationsRoute()), ); } } diff --git a/lib/presentation/search/search_screen.dart b/lib/presentation/search/search_screen.dart deleted file mode 100644 index 97a5ab08..00000000 --- a/lib/presentation/search/search_screen.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:skelter/presentation/search/widgets/empty_search_view.dart'; - -class SearchScreen extends StatelessWidget { - const SearchScreen({super.key}); - - @override - Widget build(BuildContext context) { - return const EmptySearchView(); - } -} diff --git a/lib/presentation/search/widgets/empty_search_view.dart b/lib/presentation/search/widgets/empty_search_view.dart deleted file mode 100644 index 12c9528d..00000000 --- a/lib/presentation/search/widgets/empty_search_view.dart +++ /dev/null @@ -1,38 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:skelter/common/theme/text_style/app_text_styles.dart'; -import 'package:skelter/gen/assets.gen.dart'; -import 'package:skelter/i18n/localization.dart'; -import 'package:skelter/utils/theme/extension/theme_extension.dart'; - -class EmptySearchView extends StatelessWidget { - const EmptySearchView({super.key}); - - @override - Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 16), - child: Column( - mainAxisAlignment: .center, - children: [ - SvgPicture.asset(Assets.icons.userNotFound, height: 150, width: 150), - const SizedBox(height: 24), - Text( - context.localization.no_result_for('Home'), - style: AppTextStyles.p1SemiBold.copyWith( - color: context.currentTheme.textNeutralPrimary, - ), - ), - const SizedBox(height: 8), - Text( - context.localization.no_search_result_message, - style: AppTextStyles.p2Regular.copyWith( - color: context.currentTheme.textNeutralSecondary, - ), - textAlign: .center, - ), - ], - ), - ); - } -} diff --git a/test/presentation/home/goldens/linux/home_screen.png b/test/presentation/home/goldens/linux/home_screen.png index 55ce4903..00ba2191 100644 Binary files a/test/presentation/home/goldens/linux/home_screen.png and b/test/presentation/home/goldens/linux/home_screen.png differ diff --git a/test/presentation/home/goldens/macos/home_screen.png b/test/presentation/home/goldens/macos/home_screen.png index fcd534cf..00ba2191 100644 Binary files a/test/presentation/home/goldens/macos/home_screen.png and b/test/presentation/home/goldens/macos/home_screen.png differ diff --git a/test/presentation/home/home_screen_test.dart b/test/presentation/home/home_screen_test.dart index fd8dd8a5..d446bbc4 100644 --- a/test/presentation/home/home_screen_test.dart +++ b/test/presentation/home/home_screen_test.dart @@ -1,5 +1,6 @@ import 'package:alchemist/alchemist.dart'; import 'package:bloc_test/bloc_test.dart'; +import 'package:dartz/dartz.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core_platform_interface/test.dart'; import 'package:flutter/material.dart'; @@ -11,7 +12,10 @@ import 'package:skelter/presentation/home/bloc/home_bloc.dart'; import 'package:skelter/presentation/home/bloc/home_event.dart'; import 'package:skelter/presentation/home/bloc/home_state.dart'; import 'package:skelter/presentation/home/data/dummy_product_data.dart'; +import 'package:skelter/presentation/home/domain/entities/product.dart'; +import 'package:skelter/presentation/home/domain/usecases/get_products.dart'; import 'package:skelter/presentation/home/home_screen.dart'; +import 'package:skelter/presentation/product_detail/domain/usecases/get_product_detail.dart'; import 'package:skelter/services/performance_monitoring_service.dart'; import 'package:skelter/widgets/styling/app_theme_data.dart'; @@ -21,6 +25,10 @@ import '../../test_helpers.dart'; class MockHomeBloc extends MockBloc implements HomeBloc {} +class MockGetProducts extends Mock implements GetProducts {} + +class MockGetProductDetail extends Mock implements GetProductDetail {} + void main() { TestWidgetsFlutterBinding.ensureInitialized(); late MockFirebasePerformance mockFirebasePerformance; @@ -31,6 +39,15 @@ void main() { sl.registerLazySingleton( () => PerformanceMonitoringService(performance: mockFirebasePerformance), ); + + final mockGetProducts = MockGetProducts(); + final mockGetProductDetail = MockGetProductDetail(); + when( + () => mockGetProducts(), + ).thenAnswer((_) async => const Right([])); + sl.registerLazySingleton(() => mockGetProducts); + sl.registerLazySingleton(() => mockGetProductDetail); + setupFirebaseCoreMocks(); await Firebase.initializeApp( name: 'tenantIdTest', diff --git a/test/presentation/my_orders/goldens/linux/my_orders_app_bar.png b/test/presentation/my_orders/goldens/linux/my_orders_app_bar.png index 478a2f75..68b8552c 100644 Binary files a/test/presentation/my_orders/goldens/linux/my_orders_app_bar.png and b/test/presentation/my_orders/goldens/linux/my_orders_app_bar.png differ diff --git a/test/presentation/my_orders/goldens/linux/my_orders_screen.png b/test/presentation/my_orders/goldens/linux/my_orders_screen.png index 881067f4..4c1c2101 100644 Binary files a/test/presentation/my_orders/goldens/linux/my_orders_screen.png and b/test/presentation/my_orders/goldens/linux/my_orders_screen.png differ diff --git a/test/presentation/my_orders/goldens/macos/my_orders_app_bar.png b/test/presentation/my_orders/goldens/macos/my_orders_app_bar.png index 478a2f75..68b8552c 100644 Binary files a/test/presentation/my_orders/goldens/macos/my_orders_app_bar.png and b/test/presentation/my_orders/goldens/macos/my_orders_app_bar.png differ diff --git a/test/presentation/my_orders/goldens/macos/my_orders_screen.png b/test/presentation/my_orders/goldens/macos/my_orders_screen.png index 881067f4..4c1c2101 100644 Binary files a/test/presentation/my_orders/goldens/macos/my_orders_screen.png and b/test/presentation/my_orders/goldens/macos/my_orders_screen.png differ diff --git a/test/presentation/profile/goldens/macos/profile_page.png b/test/presentation/profile/goldens/macos/profile_page.png index 805a2424..cbc1093a 100644 Binary files a/test/presentation/profile/goldens/macos/profile_page.png and b/test/presentation/profile/goldens/macos/profile_page.png differ