From 5f84751fd5ce2d8200cc33cce65bc56fa2c461b4 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Wed, 24 Sep 2025 20:29:30 +0800 Subject: [PATCH] :bug: Fix file upload --- lib/models/file_pool.dart | 16 ---------------- lib/pods/file_pool.dart | 17 +++++------------ lib/screens/chat/room.dart | 6 ++---- lib/widgets/attachment_uploader.dart | 6 ++---- 4 files changed, 9 insertions(+), 36 deletions(-) diff --git a/lib/models/file_pool.dart b/lib/models/file_pool.dart index 3659a667..262535fd 100644 --- a/lib/models/file_pool.dart +++ b/lib/models/file_pool.dart @@ -34,20 +34,4 @@ extension SnFilePoolList on List { } throw ArgumentError('Unexpected response format: $data'); } - - List filterValid() { - return where((p) { - final accept = p.policyConfig?['accept_types']; - - if (accept is List) { - final acceptsOnlyMedia = accept.every((t) => - t is String && - (t.startsWith('image/') || - t.startsWith('video/') || - t.startsWith('audio/'))); - if (acceptsOnlyMedia) return false; - } - return true; - }).toList(); - } } diff --git a/lib/pods/file_pool.dart b/lib/pods/file_pool.dart index c9de0159..891f414d 100644 --- a/lib/pods/file_pool.dart +++ b/lib/pods/file_pool.dart @@ -6,23 +6,16 @@ import 'package:island/pods/network.dart'; final poolsProvider = FutureProvider>((ref) async { final dio = ref.watch(apiClientProvider); final response = await dio.get('/drive/pools'); - final pools = SnFilePoolList.listFromResponse(response.data); - return pools.filterValid(); + return response.data.map((e) => SnFilePool.fromJson(e)).toList(); }); -String resolveDefaultPoolId(WidgetRef ref, List pools) { +String? resolveDefaultPoolId(WidgetRef ref, List pools) { final settings = ref.watch(appSettingsNotifierProvider); - final validPools = pools.filterValid(); final configuredId = settings.defaultPoolId; - if (configuredId != null && validPools.any((p) => p.id == configuredId)) { + if (configuredId != null && pools.any((p) => p.id == configuredId)) { return configuredId; } - if (validPools.isNotEmpty) { - return validPools.first.id; - } - - // DEFAULT: Solar Network Driver - return '500e5ed8-bd44-4359-bc0a-ec85e2adf447'; } - + return pools.firstOrNull?.id; +} diff --git a/lib/screens/chat/room.dart b/lib/screens/chat/room.dart index 3245d43a..395bb30d 100644 --- a/lib/screens/chat/room.dart +++ b/lib/screens/chat/room.dart @@ -935,7 +935,7 @@ class _ChatAttachmentUploaderSheetState if (snapshot.hasError) { return Center(child: Text('errorLoadingPools'.tr())); } - final pools = snapshot.data!.filterValid(); + final pools = snapshot.data!; selectedPoolId ??= resolveDefaultPoolId(widget.ref, pools); return Column( @@ -1162,9 +1162,7 @@ class _ChatAttachmentUploaderSheetState // Get the selected pool to check constraints final pools = await widget.ref.read(poolsProvider.future); - final selectedPool = pools.filterValid().firstWhere( - (p) => p.id == selectedPoolId, - ); + final selectedPool = pools.firstWhere((p) => p.id == selectedPoolId); // Check constraints final maxFileSize = selectedPool.policyConfig?['max_file_size'] as int?; diff --git a/lib/widgets/attachment_uploader.dart b/lib/widgets/attachment_uploader.dart index 0b91c946..4e872678 100644 --- a/lib/widgets/attachment_uploader.dart +++ b/lib/widgets/attachment_uploader.dart @@ -59,7 +59,7 @@ class _AttachmentUploaderSheetState extends State { if (snapshot.hasError) { return Center(child: Text('errorLoadingPools'.tr())); } - final pools = snapshot.data!.filterValid(); + final pools = snapshot.data!; selectedPoolId ??= resolveDefaultPoolId(widget.ref, pools); return Column( @@ -286,9 +286,7 @@ class _AttachmentUploaderSheetState extends State { // Get the selected pool to check constraints final pools = await widget.ref.read(poolsProvider.future); - final selectedPool = pools.filterValid().firstWhere( - (p) => p.id == selectedPoolId, - ); + final selectedPool = pools.firstWhere((p) => p.id == selectedPoolId); // Check constraints final maxFileSize = selectedPool.policyConfig?['max_file_size'] as int?;