Commit aee1b055 authored by DanmeiChen's avatar DanmeiChen
Browse files

add option to enable VFS

parent 443152f8
Pipeline #27537 failed with stage
in 13 seconds
......@@ -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/>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment