From f34cb9c971310c82150a006f5d7feb2d422be4e5 Mon Sep 17 00:00:00 2001 From: Levi Date: Sat, 19 Sep 2026 18:07:28 +0800 Subject: [PATCH] refactor(ui): declutter extension card actions Drop homepage/GitHub buttons from store extension cards (they remain on the detail page); keep them only for unlisted extensions whose cards do not open a detail view. With the labeled update button this caps card actions at update/settings/delete. --- .../extensions/presentation/pages/extensions_page.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ui/flutter/lib/features/extensions/presentation/pages/extensions_page.dart b/ui/flutter/lib/features/extensions/presentation/pages/extensions_page.dart index 7d4db1ee..a4148313 100644 --- a/ui/flutter/lib/features/extensions/presentation/pages/extensions_page.dart +++ b/ui/flutter/lib/features/extensions/presentation/pages/extensions_page.dart @@ -1095,13 +1095,15 @@ class _ExtensionCard extends ConsumerWidget { ? const SizedBox.square(dimension: 14, child: shad.CircularProgressIndicator()) : const Icon(Icons.download), ), - if ((item.homepage ?? '').isNotEmpty) + // Unlisted extensions have no detail page to open, so keep + // their links reachable directly on the card. + if (item.store == null && (item.homepage ?? '').isNotEmpty) shad.GhostButton( density: shad.ButtonDensity.icon, onPressed: () => unawaited(launchUrl(Uri.parse(item.homepage!))), child: const Icon(Icons.home_outlined), ), - if ((item.repoUrl ?? '').isNotEmpty) + if (item.store == null && (item.repoUrl ?? '').isNotEmpty) shad.GhostButton( density: shad.ButtonDensity.icon, onPressed: () => unawaited(launchUrl(Uri.parse(item.repoUrl!))),