🐛 Fix file upload
This commit is contained in:
		@@ -34,20 +34,4 @@ extension SnFilePoolList on List<SnFilePool> {
 | 
			
		||||
    }
 | 
			
		||||
    throw ArgumentError('Unexpected response format: $data');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  List<SnFilePool> 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();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,23 +6,16 @@ import 'package:island/pods/network.dart';
 | 
			
		||||
final poolsProvider = FutureProvider<List<SnFilePool>>((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<SnFilePool> pools) {
 | 
			
		||||
String? resolveDefaultPoolId(WidgetRef ref, List<SnFilePool> 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;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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?;
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,7 @@ class _AttachmentUploaderSheetState extends State<AttachmentUploaderSheet> {
 | 
			
		||||
          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<AttachmentUploaderSheet> {
 | 
			
		||||
 | 
			
		||||
    // 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?;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user