mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-30 16:22:39 +00:00
1 - the uploads are cancellable
2 - delete a room also cancelled epnding uploads/downloads
This commit is contained in:
parent
7b84bb2320
commit
5672b385c0
4 changed files with 39 additions and 10 deletions
|
@ -66,6 +66,7 @@ typedef void (^blockMediaLoader_onError)(NSError *error);
|
|||
NSString *uploadId;
|
||||
CGFloat initialRange;
|
||||
CGFloat range;
|
||||
NSOperation* operation;
|
||||
}
|
||||
|
||||
@property (strong, readonly) NSMutableDictionary* statisticsDict;
|
||||
|
|
|
@ -33,7 +33,7 @@ NSString *const kMediaLoaderProgressDownloadRateKey = @"kMediaLoaderProgressDown
|
|||
- (void)cancel {
|
||||
// Cancel potential connection
|
||||
if (downloadConnection) {
|
||||
NSLog(@"Image download has been cancelled (%@)", mediaURL);
|
||||
NSLog(@"media download has been cancelled (%@)", mediaURL);
|
||||
if (onError){
|
||||
onError(nil);
|
||||
}
|
||||
|
@ -45,6 +45,12 @@ NSString *const kMediaLoaderProgressDownloadRateKey = @"kMediaLoaderProgressDown
|
|||
downloadData = nil;
|
||||
}
|
||||
else {
|
||||
if (operation.executing) {
|
||||
NSLog(@"media upload has been cancelled (%@)", mediaURL);
|
||||
[operation cancel];
|
||||
operation = nil;
|
||||
}
|
||||
|
||||
// Reset blocks
|
||||
onSuccess = nil;
|
||||
onError = nil;
|
||||
|
@ -200,7 +206,7 @@ NSString *const kMediaLoaderProgressDownloadRateKey = @"kMediaLoaderProgressDown
|
|||
statsStartTime = CFAbsoluteTimeGetCurrent();
|
||||
|
||||
MatrixHandler *mxHandler = [MatrixHandler sharedHandler];
|
||||
[mxHandler.mxRestClient uploadContent:data mimeType:mimeType timeout:30 success:success failure:failure uploadProgress:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
|
||||
operation = [mxHandler.mxRestClient uploadContent:data mimeType:mimeType timeout:30 success:success failure:failure uploadProgress:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
|
||||
[self updateUploadProgressWithBytesWritten:bytesWritten totalBytesWritten:totalBytesWritten andTotalBytesExpectedToWrite:totalBytesExpectedToWrite];
|
||||
}];
|
||||
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
#import "AppDelegate.h"
|
||||
#import "MatrixHandler.h"
|
||||
|
||||
#import "MediaManager.h"
|
||||
|
||||
@interface RecentsViewController () {
|
||||
// Array of RecentRooms
|
||||
NSMutableArray *recents;
|
||||
|
@ -548,7 +550,14 @@
|
|||
} else {
|
||||
recentRoom = recents[indexPath.row];
|
||||
}
|
||||
|
||||
MXRoom *mxRoom = [[MatrixHandler sharedHandler].mxSession roomWithRoomId:recentRoom.roomId];
|
||||
|
||||
// cancel pending uploads/downloads
|
||||
// they are useless by now
|
||||
[MediaManager cancelDownloadsInFolder:recentRoom.roomId];
|
||||
[MediaManager cancelUploadsInFolder:recentRoom.roomId];
|
||||
|
||||
[mxRoom leave:^{
|
||||
// Refresh table display
|
||||
if (filteredRecents) {
|
||||
|
|
|
@ -1262,8 +1262,12 @@ NSString *const kCmdResetUserPowerLevel = @"/deop";
|
|||
[self sendMessage:videoContent withLocalEvent:localEvent];
|
||||
} failure:^(NSError *error) {
|
||||
NSLog(@"Video upload failed");
|
||||
// check if the upload is still defined
|
||||
// it could have been cancelled with an external events
|
||||
if ([MediaManager existingUploaderWithId:localEvent.eventId inFolder:self.roomId]) {
|
||||
[MediaManager removeUploaderWithId:localEvent.eventId inFolder:self.roomId];
|
||||
[self handleError:error forLocalEvent:localEvent];
|
||||
}
|
||||
}];
|
||||
}
|
||||
else {
|
||||
|
@ -1351,9 +1355,13 @@ NSString *const kCmdResetUserPowerLevel = @"/deop";
|
|||
}
|
||||
}];
|
||||
} failure:^(NSError *error) {
|
||||
// check if the upload is still defined
|
||||
// it could have been cancelled with an external events
|
||||
if ([MediaManager existingUploaderWithId:localEvent.eventId inFolder:self.roomId]) {
|
||||
NSLog(@"Video thumbnail upload failed");
|
||||
[MediaManager removeUploaderWithId:localEvent.eventId inFolder:self.roomId];
|
||||
[self handleError:error forLocalEvent:localEvent];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
|
@ -2920,9 +2928,14 @@ NSString *const kCmdResetUserPowerLevel = @"/deop";
|
|||
// Send message for this attachment
|
||||
[self sendMessage:imageMessage withLocalEvent:localEvent];
|
||||
} failure:^(NSError *error) {
|
||||
// check if the upload is still defined
|
||||
// it could have been cancelled with an external events
|
||||
if ([MediaManager existingUploaderWithId:localEvent.eventId inFolder:self.roomId])
|
||||
{
|
||||
[MediaManager removeUploaderWithId:localEvent.eventId inFolder:self.roomId];
|
||||
NSLog(@"Failed to upload image: %@", error);
|
||||
[self handleError:error forLocalEvent:localEvent];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue