No need update check for web

This commit is contained in:
2026-03-12 20:38:19 +08:00
parent 0bd2a94ece
commit 9267ebee2c
5 changed files with 83 additions and 31 deletions
+37 -11
View File
@@ -3,6 +3,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:file_picker/file_picker.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
@@ -41,16 +42,40 @@ class _AppUpdateScreenState extends ConsumerState<AppUpdateScreen> {
Future<void> _loadCurrent() async {
try {
final client = Supabase.instance.client;
final data = await client
.from('app_versions')
.select()
.order('version_code', ascending: false)
.limit(1)
.maybeSingle();
if (data is Map<String, dynamic>) {
_versionController.text = data['version_code']?.toString() ?? '';
_minController.text = data['min_version_required']?.toString() ?? '';
_notesController.text = data['release_notes'] ?? '';
final rows = await client.from('app_versions').select().maybeSingle();
// when using text versions we can't rely on server-side ordering; instead
// parse locally and choose the greatest semantic version.
if (rows is List) {
final rowList = rows as List?;
Version? best;
Map<String, dynamic>? bestRow;
if (rowList != null) {
for (final r in rowList) {
if (r is Map<String, dynamic>) {
final v = r['version_code']?.toString() ?? '';
Version parsed;
try {
parsed = Version.parse(v);
} catch (_) {
continue;
}
if (best == null || parsed > best) {
best = parsed;
bestRow = r;
}
}
}
}
if (bestRow != null) {
_versionController.text = bestRow['version_code']?.toString() ?? '';
_minController.text =
bestRow['min_version_required']?.toString() ?? '';
_notesController.text = bestRow['release_notes'] ?? '';
}
} else if (rows is Map<String, dynamic>) {
_versionController.text = rows['version_code']?.toString() ?? '';
_minController.text = rows['min_version_required']?.toString() ?? '';
_notesController.text = rows['release_notes'] ?? '';
}
} catch (_) {}
}
@@ -169,10 +194,11 @@ class _AppUpdateScreenState extends ConsumerState<AppUpdateScreen> {
} else {
url = '';
}
if (url.isEmpty)
if (url.isEmpty) {
throw Exception(
'could not obtain public url, check bucket CORS and policies',
);
}
_logs.add('Public URL: $url');
// upsert new version in a single statement
await client.from('app_versions').upsert({