Merge branch 'krille/config-check-while-sending-file-refactor' into 'main'

refactor: Check config at file sending after placing fake event and add error handling

See merge request famedly/company/frontend/famedlysdk!1238
This commit is contained in:
Nicolas Werner 2023-02-13 14:40:12 +00:00
commit c84fc6e6ce
1 changed files with 17 additions and 7 deletions

View File

@ -697,12 +697,6 @@ class Room {
MatrixImageFile? thumbnail,
Map<String, dynamic>? extraContent,
}) async {
final mediaConfig = await client.getConfig();
final maxMediaSize = mediaConfig.mUploadSize;
if (maxMediaSize != null && maxMediaSize < file.bytes.lengthInBytes) {
throw FileTooBigMatrixException(file.bytes.lengthInBytes, maxMediaSize);
}
txid ??= client.generateUniqueTransactionId();
sendingFilePlaceholders[txid] = file;
if (thumbnail != null) {
@ -745,6 +739,22 @@ class Room {
),
);
// Check media config of the server before sending the file. Stop if the
// Media config is unreachable or the file is bigger than the given maxsize.
try {
final mediaConfig = await client.getConfig();
final maxMediaSize = mediaConfig.mUploadSize;
if (maxMediaSize != null && maxMediaSize < file.bytes.lengthInBytes) {
throw FileTooBigMatrixException(file.bytes.lengthInBytes, maxMediaSize);
}
} catch (e) {
Logs().d('Config error while sending file', e);
syncUpdate.rooms!.join!.values.first.timeline!.events!.first
.unsigned![messageSendingStatusKey] = EventStatus.error.intValue;
await _handleFakeSync(syncUpdate);
rethrow;
}
MatrixFile uploadFile = file; // ignore: omit_local_variable_types
// computing the thumbnail in case we can
if (file is MatrixImageFile &&
@ -958,7 +968,7 @@ class Room {
String? editEventId,
}) async {
// Create new transaction id
String messageID;
final String messageID;
if (txid == null) {
messageID = client.generateUniqueTransactionId();
} else {