Files
Handwerks_app/services/auftrag_storage_service.dart
JUSN 9ddce354c0 Feature
ein paar feature aber datenbank macht probleme wenn man aufträge speichern möchge
2026-04-05 12:47:57 +02:00

82 lines
2.0 KiB
Dart

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<String> _uid() async {
final u = await _account.get();
return u.$id;
}
List<String> _filePermissions(String uid) => [
Permission.read(Role.user(uid)),
Permission.update(Role.user(uid)),
Permission.delete(Role.user(uid)),
];
Future<String> 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<String> 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<Uint8List> 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<void> loescheDatei(String fileId) async {
if (fileId.startsWith('http://') || fileId.startsWith('https://')) {
return;
}
try {
await _storage.deleteFile(
bucketId: kAppwriteBucketId,
fileId: fileId,
);
} catch (_) {}
}
}