RoomVC: Add the ability to cancel the sending of a room message and improve the cancellation of a media upload

This commit is contained in:
manuroe 2017-10-03 14:57:32 +02:00
parent 7e9c4c0356
commit 2cd8bc8b89
3 changed files with 37 additions and 7 deletions

View file

@ -253,7 +253,7 @@
"room_event_action_save" = "Save"; "room_event_action_save" = "Save";
"room_event_action_resend" = "Resend"; "room_event_action_resend" = "Resend";
"room_event_action_delete" = "Delete"; "room_event_action_delete" = "Delete";
"room_event_action_cancel_upload" = "Cancel Upload"; "room_event_action_cancel_send" = "Cancel Send";
"room_event_action_cancel_download" = "Cancel Download"; "room_event_action_cancel_download" = "Cancel Download";
"room_event_action_view_encryption" = "Encryption Information"; "room_event_action_view_encryption" = "Encryption Information";
"room_warning_about_encryption" = "End-to-end encryption is in beta and may not be reliable.\n\nYou should not yet trust it to secure data.\n\nDevices will not yet be able to decrypt history from before they joined the room.\n\nEncrypted messages will not be visible on clients that do not yet implement encryption."; "room_warning_about_encryption" = "End-to-end encryption is in beta and may not be reliable.\n\nYou should not yet trust it to secure data.\n\nDevices will not yet be able to decrypt history from before they joined the room.\n\nEncrypted messages will not be visible on clients that do not yet implement encryption.";

View file

@ -210,7 +210,7 @@
"room_event_action_save" = "Enregistrer"; "room_event_action_save" = "Enregistrer";
"room_event_action_resend" = "Renvoyer"; "room_event_action_resend" = "Renvoyer";
"room_event_action_delete" = "Supprimer"; "room_event_action_delete" = "Supprimer";
"room_event_action_cancel_upload" = "Annuler l'envoi"; "room_event_action_cancel_send" = "Annuler l'envoi";
"room_event_action_cancel_download" = "Annuler le téléchargement"; "room_event_action_cancel_download" = "Annuler le téléchargement";
"room_event_action_view_encryption" = "Informations sur le chiffrement"; "room_event_action_view_encryption" = "Informations sur le chiffrement";
"room_warning_about_encryption" = "Le chiffrement de bout en bout est en version bêta et peut ne pas être fiable.\n\nIl ne doit pas être considéré comme fiable pour sécuriser des données.\n\nLes appareils ne pourront pas encore déchiffrer l'historique de messages d'avant leur arrivée sur le salon.\n\nLes messages chiffrés ne seront pas visibles sur les clients qui n'ont pas encore implémenté le chiffrement."; "room_warning_about_encryption" = "Le chiffrement de bout en bout est en version bêta et peut ne pas être fiable.\n\nIl ne doit pas être considéré comme fiable pour sécuriser des données.\n\nLes appareils ne pourront pas encore déchiffrer l'historique de messages d'avant leur arrivée sur le salon.\n\nLes messages chiffrés ne seront pas visibles sur les clients qui n'ont pas encore implémenté le chiffrement.";

View file

@ -1945,6 +1945,34 @@
selectedComponent = nil; selectedComponent = nil;
} }
if (level == 0)
{
// Check status of the selected event
if (selectedEvent.sentState == MXEventSentStatePreparing ||
selectedEvent.sentState == MXEventSentStateEncrypting ||
selectedEvent.sentState == MXEventSentStateSending)
{
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_cancel_send", @"Vector", nil)
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
if (weakSelf)
{
typeof(self) self = weakSelf;
self->currentAlert = nil;
// Cancel and remove the outgoing message
[self.roomDataSource.room cancelSendingOperation:selectedEvent.eventId];
[self.roomDataSource removeEventWithEventId:selectedEvent.eventId];
[self cancelEventSelection];
}
}]];
}
}
if (level == 0) if (level == 0)
{ {
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_copy", @"Vector", nil) [currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_copy", @"Vector", nil)
@ -2087,18 +2115,17 @@
// Check status of the selected event // Check status of the selected event
if (selectedEvent.sentState == MXEventSentStatePreparing || if (selectedEvent.sentState == MXEventSentStatePreparing ||
selectedEvent.sentState == MXEventSentStateEncrypting || selectedEvent.sentState == MXEventSentStateEncrypting ||
selectedEvent.sentState == MXEventSentStateUploading) selectedEvent.sentState == MXEventSentStateUploading ||
selectedEvent.sentState == MXEventSentStateSending)
{ {
// Upload id is stored in attachment url (nasty trick) // Upload id is stored in attachment url (nasty trick)
NSString *uploadId = roomBubbleTableViewCell.bubbleData.attachment.actualURL; NSString *uploadId = roomBubbleTableViewCell.bubbleData.attachment.actualURL;
if ([MXMediaManager existingUploaderWithId:uploadId]) if ([MXMediaManager existingUploaderWithId:uploadId])
{ {
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_cancel_upload", @"Vector", nil) [currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_cancel_send", @"Vector", nil)
style:UIAlertActionStyleDefault style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) { handler:^(UIAlertAction * action) {
// TODO cancel the attachment encryption if it is in progress.
// Get again the loader // Get again the loader
MXMediaLoader *loader = [MXMediaManager existingUploaderWithId:uploadId]; MXMediaLoader *loader = [MXMediaManager existingUploaderWithId:uploadId];
if (loader) if (loader)
@ -2117,6 +2144,9 @@
// Remove the outgoing message and its related cached file. // Remove the outgoing message and its related cached file.
[[NSFileManager defaultManager] removeItemAtPath:roomBubbleTableViewCell.bubbleData.attachment.cacheFilePath error:nil]; [[NSFileManager defaultManager] removeItemAtPath:roomBubbleTableViewCell.bubbleData.attachment.cacheFilePath error:nil];
[[NSFileManager defaultManager] removeItemAtPath:roomBubbleTableViewCell.bubbleData.attachment.cacheThumbnailPath error:nil]; [[NSFileManager defaultManager] removeItemAtPath:roomBubbleTableViewCell.bubbleData.attachment.cacheThumbnailPath error:nil];
// Cancel and remove the outgoing message
[self.roomDataSource.room cancelSendingOperation:selectedEvent.eventId];
[self.roomDataSource removeEventWithEventId:selectedEvent.eventId]; [self.roomDataSource removeEventWithEventId:selectedEvent.eventId];
[self cancelEventSelection]; [self cancelEventSelection];