Merge branch 'krille/send-files-easier' into 'main'
fix: Store sending files in database and fix retrying to send them See merge request famedly/company/frontend/famedlysdk!999
This commit is contained in:
commit
245246460d
|
|
@ -327,13 +327,20 @@ class Event extends MatrixEvent {
|
|||
/// Try to send this event again. Only works with events of status -1.
|
||||
Future<String?> sendAgain({String? txid}) async {
|
||||
if (!status.isError) return null;
|
||||
// If this is a failed file sending event, try to fetch the file from the
|
||||
// database first.
|
||||
final url = getAttachmentUrl();
|
||||
if (url?.scheme == 'local') {
|
||||
final file = await downloadAndDecryptAttachment();
|
||||
return await room.sendFileEvent(file, extraContent: content);
|
||||
}
|
||||
|
||||
// we do not remove the event here. It will automatically be updated
|
||||
// in the `sendEvent` method to transition -1 -> 0 -> 1 -> 2
|
||||
final newEventId = await room.sendEvent(
|
||||
return await room.sendEvent(
|
||||
content,
|
||||
txid: txid ?? unsigned?['transaction_id'] ?? eventId,
|
||||
);
|
||||
return newEventId;
|
||||
}
|
||||
|
||||
/// Whether the client is allowed to redact this event.
|
||||
|
|
|
|||
|
|
@ -695,7 +695,7 @@ class Room {
|
|||
/// Set [shrinkImageMaxDimension] to for example `1600` if you want to shrink
|
||||
/// your image before sending. This is ignored if the File is not a
|
||||
/// [MatrixImageFile].
|
||||
Future<Uri> sendFileEvent(
|
||||
Future<String?> sendFileEvent(
|
||||
MatrixFile file, {
|
||||
String? txid,
|
||||
Event? inReplyTo,
|
||||
|
|
@ -755,6 +755,7 @@ class Room {
|
|||
name: file.name,
|
||||
maxDimension: shrinkImageMaxDimension,
|
||||
customImageResizer: client.customImageResizer,
|
||||
compute: client.runInBackground,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -859,14 +860,14 @@ class Room {
|
|||
},
|
||||
if (extraContent != null) ...extraContent,
|
||||
};
|
||||
await sendEvent(
|
||||
final eventId = await sendEvent(
|
||||
content,
|
||||
txid: txid,
|
||||
inReplyTo: inReplyTo,
|
||||
editEventId: editEventId,
|
||||
);
|
||||
sendingFilePlaceholders.remove(txid);
|
||||
return uploadResp;
|
||||
return eventId;
|
||||
}
|
||||
|
||||
Future<String?> _sendContent(
|
||||
|
|
|
|||
|
|
@ -745,7 +745,7 @@ void main() {
|
|||
test('sendFileEvent', () async {
|
||||
final testFile = MatrixFile(bytes: Uint8List(0), name: 'file.jpeg');
|
||||
final dynamic resp = await room.sendFileEvent(testFile, txid: 'testtxid');
|
||||
expect(resp.toString(), 'mxc://example.com/AQwafuaFswefuhsfAFAgsw');
|
||||
expect(resp.toString(), '\$event10');
|
||||
});
|
||||
|
||||
test('pushRuleState', () async {
|
||||
|
|
|
|||
Loading…
Reference in New Issue