82 lines
2.0 KiB
Dart
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 (_) {}
|
|
}
|
|
}
|