import 'dart:typed_data'; import 'package:appwrite/appwrite.dart'; import '../appwrite_config.dart'; class AuftragStorageService { AuftragStorageService({Client? client}) : _storage = Storage(client ?? appwriteClient), _account = Account(client ?? appwriteClient); final Storage _storage; final Account _account; Future _uid() async { final u = await _account.get(); return u.$id; } List _filePermissions(String uid) => [ Permission.read(Role.user(uid)), Permission.update(Role.user(uid)), Permission.delete(Role.user(uid)), ]; Future hochladenFoto( String auftragId, Uint8List bytes, String dateiname, ) async { final uid = await _uid(); final fileId = ID.unique(); await _storage.createFile( bucketId: kAppwriteBucketId, fileId: fileId, file: InputFile.fromBytes( bytes: bytes, filename: dateiname, contentType: 'image/jpeg', ), permissions: _filePermissions(uid), ); return fileId; } Future hochladenUnterschrift(String auftragId, Uint8List pngBytes) async { final uid = await _uid(); final fileId = ID.unique(); await _storage.createFile( bucketId: kAppwriteBucketId, fileId: fileId, file: InputFile.fromBytes( bytes: pngBytes, filename: 'unterschrift_$auftragId.png', contentType: 'image/png', ), permissions: _filePermissions(uid), ); return fileId; } Future getFileBytes(String fileId) async { return _storage.getFileView( bucketId: kAppwriteBucketId, fileId: fileId, ); } /// Entfernt die Datei im Bucket (kein Fehler bei HTTP-URLs oder fehlenden Rechten). Future loescheDatei(String fileId) async { if (fileId.startsWith('http://') || fileId.startsWith('https://')) { return; } try { await _storage.deleteFile( bucketId: kAppwriteBucketId, fileId: fileId, ); } catch (_) {} } }