From 0f4f82971839b36a727b81b3d8e288165fcacea2 Mon Sep 17 00:00:00 2001 From: PartyDonut Date: Thu, 31 Jul 2025 18:41:08 +0200 Subject: [PATCH] feat: Add show details button to sync items --- lib/routes/auto_router.dart | 4 ++++ lib/screens/syncing/sync_item_details.dart | 8 +++++--- .../syncing/widgets/sync_options_button.dart | 14 ++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/routes/auto_router.dart b/lib/routes/auto_router.dart index 9bca7e9..533a4c2 100644 --- a/lib/routes/auto_router.dart +++ b/lib/routes/auto_router.dart @@ -125,6 +125,10 @@ class AuthGuard extends AutoRouteGuard { @override Future onNavigation(NavigationResolver resolver, StackRouter router) async { + if (resolver.route == router.current.route) { + return; + } + if (ref.read(userProvider) != null || resolver.routeName == const LoginRoute().routeName || resolver.routeName == SplashRoute().routeName) { diff --git a/lib/screens/syncing/sync_item_details.dart b/lib/screens/syncing/sync_item_details.dart index a60585b..2641baf 100644 --- a/lib/screens/syncing/sync_item_details.dart +++ b/lib/screens/syncing/sync_item_details.dart @@ -92,8 +92,7 @@ class _SyncItemDetailsState extends ConsumerState { children: [ if (baseItem != null) ...{ Row( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, spacing: 16, children: [ SizedBox( @@ -193,7 +192,10 @@ class _SyncItemDetailsState extends ConsumerState { ), }, if (children?.isNotEmpty == true) ...[ - const Divider(), + const Padding( + padding: EdgeInsets.symmetric(vertical: 16), + child: Divider(), + ), ...children!.map( (e) => ChildSyncWidget(syncedChild: e), ), diff --git a/lib/screens/syncing/widgets/sync_options_button.dart b/lib/screens/syncing/widgets/sync_options_button.dart index 10fd615..5ebb555 100644 --- a/lib/screens/syncing/widgets/sync_options_button.dart +++ b/lib/screens/syncing/widgets/sync_options_button.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:auto_route/auto_route.dart'; import 'package:background_downloader/background_downloader.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:iconsax_plus/iconsax_plus.dart'; @@ -51,6 +52,19 @@ class SyncOptionsButton extends ConsumerWidget { final enqueuedTasks = syncTasks.where((element) => element.status == TaskStatus.enqueued).toList(); final pausedTasks = syncTasks.where((element) => element.status == TaskStatus.paused).toList(); return [ + PopupMenuItem( + child: Row( + spacing: 12, + children: [ + const Icon(IconsaxPlusLinear.arrow_right), + Text(context.localized.showDetails), + ], + ), + onTap: () { + syncedItem.itemModel?.navigateTo(context); + context.maybePop(); + }, + ), PopupMenuItem( child: Row( spacing: 12,