shareFiles method
re sends file notifications to sharedWithAtSigns
returns Map<String, FileTransferObject>
which contains transfer status for each atsign.
Implementation
@override
Future<Map<String, FileTransferObject>> shareFiles(
List<String> sharedWithAtSigns,
String key,
String fileUrl,
String encryptionKey,
List<FileStatus> fileStatus,
{DateTime? date}) async {
var result = <String, FileTransferObject>{};
for (var sharedWithAtSign in sharedWithAtSigns) {
var fileTransferObject = FileTransferObject(
key, encryptionKey, fileUrl, sharedWithAtSign, fileStatus,
date: date);
try {
var atKey = AtKey()
..key = key
..sharedWith = sharedWithAtSign
..metadata = Metadata()
..metadata.ttr = -1
// file transfer key will be deleted after 30 days
..metadata.ttl = 2592000000
..sharedBy = _atSign;
var notificationResult = await notificationService.notify(
NotificationParams.forUpdate(
atKey,
value: jsonEncode(fileTransferObject.toJson()),
),
);
if (notificationResult.notificationStatusEnum ==
NotificationStatusEnum.delivered) {
fileTransferObject.sharedStatus = true;
} else {
fileTransferObject.sharedStatus = false;
}
} on Exception catch (e) {
fileTransferObject.sharedStatus = false;
fileTransferObject.error = e.toString();
}
result[sharedWithAtSign] = fileTransferObject;
}
return result;
}