feat: Add deleteFile() endpoint to database
This commit is contained in:
parent
03416cd463
commit
60d500956c
|
|
@ -121,6 +121,8 @@ abstract class DatabaseApi {
|
|||
|
||||
Future storeFile(Uri mxcUri, Uint8List bytes, int time);
|
||||
|
||||
Future<bool> deleteFile(Uri mxcUri);
|
||||
|
||||
Future storeSyncFilterId(
|
||||
String syncFilterId,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -9,13 +9,15 @@ mixin DatabaseFileStorage {
|
|||
late final Uri? fileStorageLocation;
|
||||
late final Duration? deleteFilesAfterDuration;
|
||||
|
||||
File _getFileFromMxc(Uri mxcUri) => File(
|
||||
'${Directory.fromUri(fileStorageLocation!).path}/${mxcUri.toString().split('/').last}',
|
||||
);
|
||||
|
||||
Future<void> storeFile(Uri mxcUri, Uint8List bytes, int time) async {
|
||||
final fileStorageLocation = this.fileStorageLocation;
|
||||
if (!supportsFileStoring || fileStorageLocation == null) return;
|
||||
|
||||
final dir = Directory.fromUri(fileStorageLocation);
|
||||
|
||||
final file = File('${dir.path}/${mxcUri.toString().split('/').last}');
|
||||
final file = _getFileFromMxc(mxcUri);
|
||||
|
||||
if (await file.exists()) return;
|
||||
await file.writeAsBytes(bytes);
|
||||
|
|
@ -25,14 +27,24 @@ mixin DatabaseFileStorage {
|
|||
final fileStorageLocation = this.fileStorageLocation;
|
||||
if (!supportsFileStoring || fileStorageLocation == null) return null;
|
||||
|
||||
final dir = Directory.fromUri(fileStorageLocation);
|
||||
|
||||
final file = File('${dir.path}/${mxcUri.toString().split('/').last}');
|
||||
final file = _getFileFromMxc(mxcUri);
|
||||
|
||||
if (await file.exists()) return await file.readAsBytes();
|
||||
return null;
|
||||
}
|
||||
|
||||
Future<bool> deleteFile(Uri mxcUri) async {
|
||||
final fileStorageLocation = this.fileStorageLocation;
|
||||
if (!supportsFileStoring || fileStorageLocation == null) return false;
|
||||
|
||||
final file = _getFileFromMxc(mxcUri);
|
||||
|
||||
if (await file.exists() == false) return false;
|
||||
|
||||
await file.delete();
|
||||
return true;
|
||||
}
|
||||
|
||||
Future<void> deleteOldFiles(int savedAt) async {
|
||||
final dirUri = fileStorageLocation;
|
||||
final deleteFilesAfterDuration = this.deleteFilesAfterDuration;
|
||||
|
|
|
|||
|
|
@ -17,4 +17,6 @@ mixin DatabaseFileStorage {
|
|||
Future<void> deleteOldFiles(int savedAt) async {
|
||||
return;
|
||||
}
|
||||
|
||||
Future<bool> deleteFile(Uri mxcUri) async => false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -462,6 +462,11 @@ class HiveCollectionsDatabase extends DatabaseApi {
|
|||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> deleteFile(Uri mxcUri) async {
|
||||
return false;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<StoredInboundGroupSession?> getInboundGroupSession(
|
||||
String roomId,
|
||||
|
|
|
|||
|
|
@ -479,6 +479,11 @@ class FamedlySdkHiveDatabase extends DatabaseApi with ZoneTransactionMixin {
|
|||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> deleteFile(Uri mxcUri) async {
|
||||
return false;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<StoredInboundGroupSession?> getInboundGroupSession(
|
||||
String roomId,
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ void main() {
|
|||
final toDeviceQueue = await database.getToDeviceEventQueue();
|
||||
expect(toDeviceQueue.isEmpty, true);
|
||||
});
|
||||
test('storeFile', () async {
|
||||
test('storeFile and deleteFile', () async {
|
||||
await database.storeFile(
|
||||
Uri.parse('mxc://test'),
|
||||
Uint8List.fromList([0]),
|
||||
|
|
@ -86,6 +86,13 @@ void main() {
|
|||
);
|
||||
final file = await database.getFile(Uri.parse('mxc://test'));
|
||||
expect(file != null, database.supportsFileStoring);
|
||||
|
||||
final result = await database.deleteFile(Uri.parse('mxc://test'));
|
||||
expect(result, database.supportsFileStoring);
|
||||
if (result) {
|
||||
final file = await database.getFile(Uri.parse('mxc://test'));
|
||||
expect(file, null);
|
||||
}
|
||||
});
|
||||
test('getFile', () async {
|
||||
await database.getFile(Uri.parse('mxc://test'));
|
||||
|
|
|
|||
Loading…
Reference in New Issue