import 'package:freezed_annotation/freezed_annotation.dart'; part 'file_pool.freezed.dart'; part 'file_pool.g.dart'; @freezed sealed class SnFilePool with _$SnFilePool { const factory SnFilePool({ required String id, required String name, String? description, Map? storageConfig, Map? billingConfig, Map? policyConfig, bool? isHidden, String? accountId, String? resourceIdentifier, DateTime? createdAt, DateTime? updatedAt, DateTime? deletedAt, }) = _SnFilePool; factory SnFilePool.fromJson(Map json) => _$SnFilePoolFromJson(json); } extension SnFilePoolList on List { static List listFromResponse(dynamic data) { if (data is List) { return data .whereType>() .map(SnFilePool.fromJson) .toList(); } 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(); } }