From 950fb2c47956989f7c974d9515bec82c1970e6df Mon Sep 17 00:00:00 2001 From: ZhuchkaTriplesix Date: Tue, 28 Jul 2026 16:24:01 +0300 Subject: [PATCH] ui(extensions): honest Updates tab until Marketplace API (#495) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stop claiming all extensions are up to date. Show loading while data loads, then a clear “not available yet” empty state with reinstall guidance. --- .../pages/extension_manager_dialog.dart | 33 +++++++++++++++++-- .../extensions/extension_manager_test.dart | 13 ++++++++ 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/lib/features/extensions/presentation/pages/extension_manager_dialog.dart b/lib/features/extensions/presentation/pages/extension_manager_dialog.dart index 7349b78..d87455d 100644 --- a/lib/features/extensions/presentation/pages/extension_manager_dialog.dart +++ b/lib/features/extensions/presentation/pages/extension_manager_dialog.dart @@ -403,10 +403,37 @@ class _ExtensionManagerContentState } material.Widget _buildUpdatesTab() { - return const material.Center( + if (_loading) { + return const material.Center( + child: material.CircularProgressIndicator(), + ); + } + final theme = Theme.of(context).colorScheme; + return material.Center( child: material.Padding( - padding: material.EdgeInsets.all(32.0), - child: Text('All installed extensions are up to date!'), + padding: const material.EdgeInsets.all(32.0), + child: material.ConstrainedBox( + constraints: const material.BoxConstraints(maxWidth: 420), + child: material.Column( + mainAxisSize: material.MainAxisSize.min, + children: [ + material.Icon( + material.Icons.system_update_alt_rounded, + size: 36, + color: theme.mutedForeground, + ), + const material.SizedBox(height: 16), + const Text('Extension update checks are not available yet') + .semiBold(), + const material.SizedBox(height: 8), + const Text( + 'Automatic update scanning ships with the Marketplace API. ' + 'Until then, reinstall from Marketplace or from a local file ' + 'to get a newer build.', + ).muted().small(), + ], + ), + ), ), ); } diff --git a/test/features/extensions/extension_manager_test.dart b/test/features/extensions/extension_manager_test.dart index 4905121..4fc3efa 100644 --- a/test/features/extensions/extension_manager_test.dart +++ b/test/features/extensions/extension_manager_test.dart @@ -125,6 +125,19 @@ void main() { expect(find.text('ClickHouse Driver'), findsOneWidget); expect(find.textContaining('preview listings only'), findsOneWidget); expect(find.text('Preview'), findsWidgets); + + await tester.tap(find.text('Updates')); + await tester.pumpAndSettle(); + + expect( + find.text('All installed extensions are up to date!'), + findsNothing, + ); + expect( + find.text('Extension update checks are not available yet'), + findsOneWidget, + ); + expect(find.textContaining('Marketplace API'), findsOneWidget); }); }); }