import 'dart:typed_data'; import 'dart:io'; import 'package:path_provider/path_provider.dart'; import '../core/failure.dart'; Future readBounded(Stream> stream, int limit) async { final bytes = BytesBuilder(copy: false); await for (final chunk in stream) { if (bytes.length + chunk.length > limit) { throw const Failure('invalidImport'); } bytes.add(chunk); } return bytes.takeBytes(); } Future purgeTransferCache() async { final root = await getTemporaryDirectory(); await for (final entry in root.list(followLinks: false)) { if (entry is Directory && entry.path .split(Platform.pathSeparator) .last .startsWith('sm-transfer-')) { try { await entry.delete(recursive: true); } catch (_) { /* Retry at next launch. */ } } } }