From 461c64720640914e6818cd5bcf7bcefdbc13b356 Mon Sep 17 00:00:00 2001 From: Abhishek Shroff Date: Thu, 3 Jul 2025 15:26:59 +0530 Subject: [PATCH] [client] Add sync button next to logo for expanded layouts --- client/lib/ui/layout/app_layout.dart | 9 ++++++++- client/lib/ui/layout/app_layout_collapsed.dart | 8 +++++--- client/lib/ui/layout/nav_list.dart | 2 -- .../{button_sync_status.dart => sync_status_button.dart} | 7 +++---- 4 files changed, 16 insertions(+), 10 deletions(-) rename client/lib/ui/layout/{button_sync_status.dart => sync_status_button.dart} (74%) diff --git a/client/lib/ui/layout/app_layout.dart b/client/lib/ui/layout/app_layout.dart index 785a8902..93d7d0ea 100644 --- a/client/lib/ui/layout/app_layout.dart +++ b/client/lib/ui/layout/app_layout.dart @@ -5,6 +5,7 @@ import 'package:phylum/libphylum/phylum_account.dart'; import 'package:phylum/libphylum/phylum_api_types.dart'; import 'package:phylum/ui/common/logo_row.dart'; import 'package:phylum/ui/layout/account_state_page.dart'; +import 'package:phylum/ui/layout/sync_status_button.dart'; import 'package:phylum/ui/layout/sync_status_notifier.dart'; import 'package:phylum/ui/layout/app_actions.dart'; import 'package:phylum/ui/layout/nav_list.dart'; @@ -102,7 +103,13 @@ class ExpandedAppLayout extends StatelessWidget { width: sidebarWidth, child: Padding( padding: const EdgeInsets.only(left: 16), - child: const LogoRow(), + child: const Row( + spacing: 6.0, + children: [ + LogoRow(), + SyncStatusButton(), + ], + ), ), ), Expanded( diff --git a/client/lib/ui/layout/app_layout_collapsed.dart b/client/lib/ui/layout/app_layout_collapsed.dart index 63d12b25..cbc291b5 100644 --- a/client/lib/ui/layout/app_layout_collapsed.dart +++ b/client/lib/ui/layout/app_layout_collapsed.dart @@ -1,10 +1,11 @@ import 'package:flutter/material.dart'; -import 'package:phylum/ui/layout/create_action.dart'; -import 'package:phylum/ui/layout/nav_list.dart'; -import 'package:phylum/ui/layout/search.dart'; import 'package:phylum/ui/explorer/explorer_controller.dart'; import 'package:phylum/ui/explorer/explorer_view.dart'; import 'package:phylum/ui/explorer/selection_mode.dart'; +import 'package:phylum/ui/layout/create_action.dart'; +import 'package:phylum/ui/layout/nav_list.dart'; +import 'package:phylum/ui/layout/search.dart'; +import 'package:phylum/ui/layout/sync_status_button.dart'; import 'package:phylum/ui/menu/bottom_sheet.dart'; import 'package:phylum/ui/menu/option_groups.dart'; import 'package:provider/provider.dart'; @@ -63,6 +64,7 @@ class AppLayoutCollapsed extends StatelessWidget { return AppBar( title: const Text('Phylum'), actions: [ + const SyncStatusButton(), IconButton( icon: const Icon(Icons.search), onPressed: () { diff --git a/client/lib/ui/layout/nav_list.dart b/client/lib/ui/layout/nav_list.dart index 7642729f..13fc86fa 100644 --- a/client/lib/ui/layout/nav_list.dart +++ b/client/lib/ui/layout/nav_list.dart @@ -13,7 +13,6 @@ import 'package:phylum/libphylum/phylum_account.dart'; import 'package:phylum/ui/common/dialogs/new_user_details_dialog.dart'; import 'package:phylum/ui/common/logo_row.dart'; import 'package:phylum/ui/layout/button_downloads.dart'; -import 'package:phylum/ui/layout/button_sync_status.dart'; import 'package:phylum/ui/layout/create_action.dart'; import 'package:phylum/util/dialogs.dart'; import 'package:phylum/util/user_display_name.dart'; @@ -167,7 +166,6 @@ class NavList extends StatelessWidget { : SizedBox(); }), if (!kIsWeb) const DownloadButton(), - const SyncStatusButton(), ListTile( leading: const Icon(Icons.help), title: const Text('About'), diff --git a/client/lib/ui/layout/button_sync_status.dart b/client/lib/ui/layout/sync_status_button.dart similarity index 74% rename from client/lib/ui/layout/button_sync_status.dart rename to client/lib/ui/layout/sync_status_button.dart index f145f247..a7c2bb50 100644 --- a/client/lib/ui/layout/button_sync_status.dart +++ b/client/lib/ui/layout/sync_status_button.dart @@ -9,10 +9,9 @@ class SyncStatusButton extends StatelessWidget { @override Widget build(BuildContext context) { final state = context.select((notifier) => notifier.status); - return ListTile( - leading: Icon(state.icon), - title: Text(state.text, style: state == SyncStatus.done ? null : TextStyle(fontWeight: FontWeight.bold)), - onTap: () { + return IconButton( + icon: Icon(state.icon), + onPressed: () { Scaffold.maybeOf(context)?.closeDrawer(); SyncDialog.show(context); },