forked from mirrors/linphone-iphone
add option to enable VFS
This commit is contained in:
parent
443152f867
commit
aee1b05517
5 changed files with 102 additions and 37 deletions
|
|
@ -265,9 +265,9 @@
|
|||
#ifdef USE_CRASHLYTICS
|
||||
[FIRApp configure];
|
||||
#endif
|
||||
|
||||
|
||||
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"vfs_enabled"] && !VFSUtil.activateVFS) {
|
||||
|
||||
|
||||
if ([[LinphoneManager instance] lpConfigBoolForKey:@"vfs_enabled_preference"] && !VFSUtil.activateVFS) {
|
||||
[VFSUtil oslogWithLog:@"[VFS] Error unable to activate." level:OS_LOG_TYPE_ERROR];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -339,6 +339,7 @@
|
|||
int maxSize = linphone_core_get_max_size_for_auto_download_incoming_files(LC);
|
||||
[self setObject:maxSize==0 ? @"Always" : (maxSize==-1 ? @"Nerver" : @"Customize") forKey:@"auto_download_mode"];
|
||||
[self setInteger:maxSize forKey:@"auto_download_incoming_files_max_size"];
|
||||
[self setBool:[lm lpConfigBoolForKey:@"vfs_enabled_preference" withDefault:NO] forKey:@"vfs_enabled_mode"];
|
||||
[self setBool:[lm lpConfigBoolForKey:@"auto_write_to_gallery_preference" withDefault:YES] forKey:@"auto_write_to_gallery_mode"];
|
||||
}
|
||||
|
||||
|
|
@ -780,6 +781,11 @@
|
|||
}
|
||||
linphone_core_set_max_size_for_auto_download_incoming_files(LC, maxSize);
|
||||
[lm lpConfigSetString:[self stringForKey:@"auto_download_mode"] forKey:@"auto_download_mode"];
|
||||
BOOL vfsEnabled = [self boolForKey:@"vfs_enabled_mode"] || [lm lpConfigBoolForKey:@"vfs_enabled_preference"];
|
||||
if (vfsEnabled) {
|
||||
[lm lpConfigSetBool:TRUE forKey:@"vfs_enabled_preference"];
|
||||
[self setBool:TRUE forKey:@"vfs_enabled_mode"];
|
||||
}
|
||||
[lm lpConfigSetBool:[self boolForKey:@"auto_write_to_gallery_mode"] forKey:@"auto_write_to_gallery_preference"];
|
||||
|
||||
// network section
|
||||
|
|
|
|||
|
|
@ -57,6 +57,15 @@
|
|||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
NSString *filePath = [LinphoneManager getMessageAppDataForKey:@"encryptedfile" inMessage:self.message];
|
||||
if (filePath) {
|
||||
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
|
||||
[LinphoneManager setValueInMessageAppData:NULL forKey:@"encryptedfile" inMessage:self.message];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (void)onDelete {
|
||||
[super onDelete];
|
||||
}
|
||||
|
|
@ -92,6 +101,7 @@
|
|||
}
|
||||
|
||||
[super setChatMessageForCbs:amessage];
|
||||
[LinphoneManager setValueInMessageAppData:NULL forKey:@"encryptedfile" inMessage:self.message];
|
||||
}
|
||||
|
||||
- (void) loadImageAsset:(PHAsset*) asset image:(UIImage *)image {
|
||||
|
|
@ -161,6 +171,7 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
NSString *localImage = [LinphoneManager getMessageAppDataForKey:@"localimage" inMessage:self.message];
|
||||
NSString *localVideo = [LinphoneManager getMessageAppDataForKey:@"localvideo" inMessage:self.message];
|
||||
NSString *localFile = [LinphoneManager getMessageAppDataForKey:@"localfile" inMessage:self.message];
|
||||
NSString *filePath = [LinphoneManager getMessageAppDataForKey:@"encryptedfile" inMessage:self.message];
|
||||
assert(is_external || localImage || localVideo || localFile);
|
||||
|
||||
LinphoneContent *fileContent = linphone_chat_message_get_file_transfer_information(self.message);
|
||||
|
|
@ -190,9 +201,17 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
|
||||
NSString *fileType = [NSString stringWithUTF8String:linphone_content_get_type(fileContent)];
|
||||
NSString *fileName = [NSString stringWithUTF8String:linphone_content_get_name(fileContent)];
|
||||
NSString *filePath = [[LinphoneManager cacheDirectory] stringByAppendingPathComponent:fileName];
|
||||
|
||||
|
||||
if (!filePath) {
|
||||
char *cPath = linphone_content_get_plain_file_path(fileContent);
|
||||
if (cPath) {
|
||||
filePath = [NSString stringWithUTF8String:cPath];
|
||||
ms_free(cPath);
|
||||
[LinphoneManager setValueInMessageAppData:filePath forKey:@"encryptedfile" inMessage:self.message];
|
||||
} else {
|
||||
filePath = [[LinphoneManager cacheDirectory] stringByAppendingPathComponent:fileName];
|
||||
}
|
||||
}
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
|
||||
// already downloaded
|
||||
if (!assetIsLoaded) {
|
||||
|
|
@ -201,7 +220,7 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
if ([key isEqualToString:@"localimage"]) {
|
||||
// we did not load the image yet, so start doing so
|
||||
if (_messageImageView.image == nil) {
|
||||
NSData* data = [NSData dataWithContentsOfFile:filePath];
|
||||
NSData *data = [NSData dataWithContentsOfFile:filePath];
|
||||
UIImage *image = [[UIImage alloc] initWithData:data];
|
||||
if (image) {
|
||||
[self loadImageAsset:nil image:image];
|
||||
|
|
@ -213,7 +232,7 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
}
|
||||
} else if ([key isEqualToString:@"localvideo"]) {
|
||||
if (_messageImageView.image == nil) {
|
||||
UIImage* image = [UIChatBubbleTextCell getImageFromVideoUrl:[ChatConversationView getCacheFileUrl:fileName]];
|
||||
UIImage* image = [UIChatBubbleTextCell getImageFromVideoUrl:[NSURL fileURLWithPath:filePath]];
|
||||
if (image) {
|
||||
[self loadImageAsset:nil image:image];
|
||||
_imageGestureRecognizer.enabled = NO;
|
||||
|
|
@ -224,11 +243,11 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
}
|
||||
} else if ([key isEqualToString:@"localfile"]) {
|
||||
if ([fileType isEqualToString:@"video"]) {
|
||||
UIImage* image = [UIChatBubbleTextCell getImageFromVideoUrl:[ChatConversationView getCacheFileUrl:fileName]];
|
||||
UIImage* image = [UIChatBubbleTextCell getImageFromVideoUrl:[NSURL fileURLWithPath:filePath]];
|
||||
[self loadImageAsset:nil image:image];
|
||||
_imageGestureRecognizer.enabled = NO;
|
||||
} else if ([fileName hasSuffix:@"JPG"] || [fileName hasSuffix:@"PNG"] || [fileName hasSuffix:@"jpg"] || [fileName hasSuffix:@"png"]) {
|
||||
NSData *data = [ChatConversationView getCacheFileData:fileName];
|
||||
NSData *data = [NSData dataWithContentsOfFile:filePath];
|
||||
UIImage *image = [[UIImage alloc] initWithData:data];
|
||||
[self loadImageAsset:nil image:image];
|
||||
_imageGestureRecognizer.enabled = YES;
|
||||
|
|
@ -390,14 +409,15 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
}
|
||||
|
||||
- (IBAction)onPlayClick:(id)sender {
|
||||
NSString *localVideo = [LinphoneManager getMessageAppDataForKey:@"localvideo" inMessage:self.message];
|
||||
NSString *localFile = [LinphoneManager getMessageAppDataForKey:@"localfile" inMessage:self.message];
|
||||
if (localVideo && [[NSFileManager defaultManager] fileExistsAtPath:[[LinphoneManager cacheDirectory] stringByAppendingPathComponent:localVideo]]) {
|
||||
AVPlayer *player = [AVPlayer playerWithURL:[ChatConversationView getCacheFileUrl:localVideo]];
|
||||
[self playVideoByPlayer:player];
|
||||
return;
|
||||
} else if (localFile && [[NSFileManager defaultManager] fileExistsAtPath:[[LinphoneManager cacheDirectory] stringByAppendingPathComponent:localFile]]) {
|
||||
AVPlayer *player = [AVPlayer playerWithURL:[ChatConversationView getCacheFileUrl:localFile]];
|
||||
NSString *filePath = [LinphoneManager getMessageAppDataForKey:@"encryptedfile" inMessage:self.message];
|
||||
if (!filePath) {
|
||||
NSString *localVideo = [LinphoneManager getMessageAppDataForKey:@"localvideo" inMessage:self.message];
|
||||
NSString *localFile = [LinphoneManager getMessageAppDataForKey:@"localfile" inMessage:self.message];
|
||||
filePath = [[LinphoneManager cacheDirectory] stringByAppendingPathComponent:(localVideo?:localFile)];
|
||||
}
|
||||
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
|
||||
AVPlayer *player = [AVPlayer playerWithURL:[NSURL fileURLWithPath:filePath]];
|
||||
[self playVideoByPlayer:player];
|
||||
return;
|
||||
}
|
||||
|
|
@ -449,6 +469,11 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
|
||||
- (IBAction)onFileClick:(id)sender {
|
||||
ChatConversationView *view = VIEW(ChatConversationView);
|
||||
NSString *filePath = [LinphoneManager getMessageAppDataForKey:@"encryptedfile" inMessage:self.message];
|
||||
if (filePath) {
|
||||
[view openFileWithURL:[NSURL URLWithString:filePath]];
|
||||
return;
|
||||
}
|
||||
NSString *name = [LinphoneManager getMessageAppDataForKey:@"localfile" inMessage:self.message];
|
||||
if([[NSFileManager defaultManager] fileExistsAtPath:[[LinphoneManager cacheDirectory] stringByAppendingPathComponent:name]]) {
|
||||
[view openFileWithURL:[ChatConversationView getCacheFileUrl:name]];
|
||||
|
|
@ -487,6 +512,14 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
if (![_messageImageView isLoading]) {
|
||||
ImageView *view = VIEW(ImageView);
|
||||
[PhoneMainView.instance changeCurrentView:view.compositeViewDescription];
|
||||
NSString *filePath = [LinphoneManager getMessageAppDataForKey:@"encryptedfile" inMessage:self.message];
|
||||
if (filePath) {
|
||||
NSData *data = [NSData dataWithContentsOfFile:filePath];
|
||||
UIImage *image = [[UIImage alloc] initWithData:data];
|
||||
[view setImage:image];
|
||||
return;
|
||||
}
|
||||
|
||||
NSString *localImage = [LinphoneManager getMessageAppDataForKey:@"localimage" inMessage:self.message];
|
||||
NSString *localFile = [LinphoneManager getMessageAppDataForKey:@"localfile" inMessage:self.message];
|
||||
NSString *imageName = NULL;
|
||||
|
|
|
|||
|
|
@ -278,25 +278,31 @@
|
|||
NSString *localImage = [LinphoneManager getMessageAppDataForKey:@"localimage" inMessage:_message];
|
||||
NSString *localVideo = [LinphoneManager getMessageAppDataForKey:@"localvideo" inMessage:_message];
|
||||
NSString *localFile = [LinphoneManager getMessageAppDataForKey:@"localfile" inMessage:_message];
|
||||
|
||||
|
||||
/*FileTransferDelegate *thiz = [FileTransferDelegate messageDelegate:_message];
|
||||
if (thiz) {
|
||||
[thiz stop]
|
||||
}*/
|
||||
[self onDelete];
|
||||
if(localImage){
|
||||
dispatch_async(dispatch_get_main_queue(), ^ {
|
||||
[_chatRoomDelegate resendFile:[ChatConversationView getCacheFileData:localImage] withName:localImage type:@"image" key:@"localimage" message:self.textMessage];
|
||||
});
|
||||
} else if (localVideo) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^ {
|
||||
[_chatRoomDelegate resendFile:[ChatConversationView getCacheFileData:localVideo] withName:localVideo type:@"video" key:@"localvideo" message:self.textMessage];
|
||||
});
|
||||
} else if (localFile) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^ {
|
||||
[_chatRoomDelegate resendFile:[ChatConversationView getCacheFileData:localFile] withName:localFile type:@"image" key:@"localfile" message:self.textMessage];
|
||||
});
|
||||
}
|
||||
dispatch_async(dispatch_get_main_queue(), ^ {
|
||||
LinphoneContent *fileContent = linphone_chat_message_get_file_transfer_information(_message);
|
||||
NSData *data = NULL;
|
||||
char *cPath = linphone_content_get_plain_file_path(fileContent);
|
||||
if (cPath) {
|
||||
NSString *filePath = [NSString stringWithUTF8String:linphone_content_get_plain_file_path(fileContent)];
|
||||
data = [NSData dataWithContentsOfFile:filePath];
|
||||
ms_free(cPath);
|
||||
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
|
||||
}
|
||||
|
||||
if (localImage) {
|
||||
[_chatRoomDelegate resendFile: (data?:[ChatConversationView getCacheFileData:localImage]) withName:localImage type:@"image" key:@"localimage" message:self.textMessage];
|
||||
} else if (localVideo) {
|
||||
[_chatRoomDelegate resendFile:(data?:[ChatConversationView getCacheFileData:localVideo]) withName:localVideo type:@"video" key:@"localvideo" message:self.textMessage];
|
||||
} else {
|
||||
[_chatRoomDelegate resendFile:(data?:[ChatConversationView getCacheFileData:localFile]) withName:localFile type:@"image" key:@"localfile" message:self.textMessage];
|
||||
}
|
||||
});
|
||||
} else {
|
||||
[self onDelete];
|
||||
double delayInSeconds = 0.4;
|
||||
|
|
@ -403,6 +409,7 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
NSString *localImage = [LinphoneManager getMessageAppDataForKey:@"localimage" inMessage:chat];
|
||||
NSString *localFile = [LinphoneManager getMessageAppDataForKey:@"localfile" inMessage:chat];
|
||||
NSString *localVideo = [LinphoneManager getMessageAppDataForKey:@"localvideo" inMessage:chat];
|
||||
NSString *filePath = [LinphoneManager getMessageAppDataForKey:@"encryptedfile" inMessage:chat];
|
||||
|
||||
CGSize textSize = CGSizeMake(0, 0);
|
||||
if (![messageText isEqualToString:@"🗻"]) {
|
||||
|
|
@ -416,10 +423,12 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
if (localFile) {
|
||||
UIImage *image = nil;
|
||||
NSString *type = [NSString stringWithUTF8String:linphone_content_get_type(fileContent)];
|
||||
NSString *filePath = [[LinphoneManager cacheDirectory] stringByAppendingPathComponent:localFile];
|
||||
if (!filePath) {
|
||||
filePath = [[LinphoneManager cacheDirectory] stringByAppendingPathComponent:localFile];
|
||||
}
|
||||
if ([type isEqualToString:@"video"]) {
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath: filePath]) {
|
||||
image = [self getImageFromVideoUrl:[ChatConversationView getCacheFileUrl:localFile]];
|
||||
image = [self getImageFromVideoUrl:[NSURL fileURLWithPath:filePath]];
|
||||
} else {
|
||||
image = [self getImageFromVideoUrl:[VIEW(ChatConversationView) getICloudFileUrl:localFile]];
|
||||
}
|
||||
|
|
@ -442,15 +451,22 @@ static const CGFloat CELL_IMAGE_X_MARGIN = 100;
|
|||
return CGSizeMake(CELL_MIN_WIDTH + CELL_MESSAGE_X_MARGIN, CELL_MIN_HEIGHT + CELL_MESSAGE_Y_MARGIN + textSize.height + 20);
|
||||
}
|
||||
|
||||
if (localImage && [[NSFileManager defaultManager] fileExistsAtPath:[[LinphoneManager cacheDirectory] stringByAppendingPathComponent:localImage]]) {
|
||||
NSData* data = [ChatConversationView getCacheFileData:localImage];
|
||||
if (!filePath) {
|
||||
if (localImage) {
|
||||
filePath = [[LinphoneManager cacheDirectory] stringByAppendingPathComponent:localImage];
|
||||
} else {
|
||||
filePath = [[LinphoneManager cacheDirectory] stringByAppendingPathComponent:localVideo];
|
||||
}
|
||||
}
|
||||
if (localImage && [[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
|
||||
NSData* data = [NSData dataWithContentsOfFile:filePath];
|
||||
UIImage *image = [[UIImage alloc] initWithData:data];
|
||||
if (!image) {
|
||||
return [self ViewHeightForFile:width];
|
||||
}
|
||||
originalImageSize = image.size;
|
||||
} else if (localVideo && [[NSFileManager defaultManager] fileExistsAtPath:[[LinphoneManager cacheDirectory] stringByAppendingPathComponent:localVideo]]) {
|
||||
UIImage *image = [UIChatBubbleTextCell getImageFromVideoUrl:[ChatConversationView getCacheFileUrl:localVideo]];
|
||||
} else if (localVideo && [[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
|
||||
UIImage *image = [UIChatBubbleTextCell getImageFromVideoUrl:[NSURL URLWithString:filePath]];
|
||||
if (!image) {
|
||||
return [self ViewHeightForFile:width];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,16 @@
|
|||
<string>Customize</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>DefaultValue</key>
|
||||
<false/>
|
||||
<key>Key</key>
|
||||
<string>vfs_enabled_mode</string>
|
||||
<key>Title</key>
|
||||
<string>Enable VFS</string>
|
||||
<key>Type</key>
|
||||
<string>PSToggleSwitchSpecifier</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>DefaultValue</key>
|
||||
<true/>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue