mirror of
https://github.com/vector-im/element-ios.git
synced 2024-10-01 00:32:41 +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;
|
NSString *uploadId;
|
||||||
CGFloat initialRange;
|
CGFloat initialRange;
|
||||||
CGFloat range;
|
CGFloat range;
|
||||||
|
NSOperation* operation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@property (strong, readonly) NSMutableDictionary* statisticsDict;
|
@property (strong, readonly) NSMutableDictionary* statisticsDict;
|
||||||
|
|
|
@ -33,7 +33,7 @@ NSString *const kMediaLoaderProgressDownloadRateKey = @"kMediaLoaderProgressDown
|
||||||
- (void)cancel {
|
- (void)cancel {
|
||||||
// Cancel potential connection
|
// Cancel potential connection
|
||||||
if (downloadConnection) {
|
if (downloadConnection) {
|
||||||
NSLog(@"Image download has been cancelled (%@)", mediaURL);
|
NSLog(@"media download has been cancelled (%@)", mediaURL);
|
||||||
if (onError){
|
if (onError){
|
||||||
onError(nil);
|
onError(nil);
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,12 @@ NSString *const kMediaLoaderProgressDownloadRateKey = @"kMediaLoaderProgressDown
|
||||||
downloadData = nil;
|
downloadData = nil;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (operation.executing) {
|
||||||
|
NSLog(@"media upload has been cancelled (%@)", mediaURL);
|
||||||
|
[operation cancel];
|
||||||
|
operation = nil;
|
||||||
|
}
|
||||||
|
|
||||||
// Reset blocks
|
// Reset blocks
|
||||||
onSuccess = nil;
|
onSuccess = nil;
|
||||||
onError = nil;
|
onError = nil;
|
||||||
|
@ -200,7 +206,7 @@ NSString *const kMediaLoaderProgressDownloadRateKey = @"kMediaLoaderProgressDown
|
||||||
statsStartTime = CFAbsoluteTimeGetCurrent();
|
statsStartTime = CFAbsoluteTimeGetCurrent();
|
||||||
|
|
||||||
MatrixHandler *mxHandler = [MatrixHandler sharedHandler];
|
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];
|
[self updateUploadProgressWithBytesWritten:bytesWritten totalBytesWritten:totalBytesWritten andTotalBytesExpectedToWrite:totalBytesExpectedToWrite];
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#import "AppDelegate.h"
|
#import "AppDelegate.h"
|
||||||
#import "MatrixHandler.h"
|
#import "MatrixHandler.h"
|
||||||
|
|
||||||
|
#import "MediaManager.h"
|
||||||
|
|
||||||
@interface RecentsViewController () {
|
@interface RecentsViewController () {
|
||||||
// Array of RecentRooms
|
// Array of RecentRooms
|
||||||
NSMutableArray *recents;
|
NSMutableArray *recents;
|
||||||
|
@ -548,7 +550,14 @@
|
||||||
} else {
|
} else {
|
||||||
recentRoom = recents[indexPath.row];
|
recentRoom = recents[indexPath.row];
|
||||||
}
|
}
|
||||||
|
|
||||||
MXRoom *mxRoom = [[MatrixHandler sharedHandler].mxSession roomWithRoomId:recentRoom.roomId];
|
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:^{
|
[mxRoom leave:^{
|
||||||
// Refresh table display
|
// Refresh table display
|
||||||
if (filteredRecents) {
|
if (filteredRecents) {
|
||||||
|
|
|
@ -1262,8 +1262,12 @@ NSString *const kCmdResetUserPowerLevel = @"/deop";
|
||||||
[self sendMessage:videoContent withLocalEvent:localEvent];
|
[self sendMessage:videoContent withLocalEvent:localEvent];
|
||||||
} failure:^(NSError *error) {
|
} failure:^(NSError *error) {
|
||||||
NSLog(@"Video upload failed");
|
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];
|
[MediaManager removeUploaderWithId:localEvent.eventId inFolder:self.roomId];
|
||||||
[self handleError:error forLocalEvent:localEvent];
|
[self handleError:error forLocalEvent:localEvent];
|
||||||
|
}
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1351,9 +1355,13 @@ NSString *const kCmdResetUserPowerLevel = @"/deop";
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
} failure:^(NSError *error) {
|
} 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");
|
NSLog(@"Video thumbnail upload failed");
|
||||||
[MediaManager removeUploaderWithId:localEvent.eventId inFolder:self.roomId];
|
[MediaManager removeUploaderWithId:localEvent.eventId inFolder:self.roomId];
|
||||||
[self handleError:error forLocalEvent:localEvent];
|
[self handleError:error forLocalEvent:localEvent];
|
||||||
|
}
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2920,9 +2928,14 @@ NSString *const kCmdResetUserPowerLevel = @"/deop";
|
||||||
// Send message for this attachment
|
// Send message for this attachment
|
||||||
[self sendMessage:imageMessage withLocalEvent:localEvent];
|
[self sendMessage:imageMessage withLocalEvent:localEvent];
|
||||||
} failure:^(NSError *error) {
|
} 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];
|
[MediaManager removeUploaderWithId:localEvent.eventId inFolder:self.roomId];
|
||||||
NSLog(@"Failed to upload image: %@", error);
|
NSLog(@"Failed to upload image: %@", error);
|
||||||
[self handleError:error forLocalEvent:localEvent];
|
[self handleError:error forLocalEvent:localEvent];
|
||||||
|
}
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue