Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
],
),
),
),
);
}
Expand Down
13 changes: 13 additions & 0 deletions test/features/extensions/extension_manager_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
});
}
Loading