From 39be810ecb7270f39829ea67309f14c03fc8a215 Mon Sep 17 00:00:00 2001 From: QuentinArguillere Date: Mon, 24 Apr 2023 14:22:17 +0200 Subject: [PATCH] Fix url scheme handler for app : now can properly do a remote configuration when opening a linphone-config:URL from another app --- Classes/LinphoneAppDelegate.m | 56 +++++++++++------------------------ 1 file changed, 18 insertions(+), 38 deletions(-) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index f71cac475..c5111d57b 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -390,29 +390,25 @@ - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options{ NSString *scheme = [[url scheme] lowercaseString]; - if ([scheme isEqualToString:@"linphone-config"] || [scheme isEqualToString:@"linphone-config"]) { + if ([scheme isEqualToString:@"linphone-config"]) { NSString *encodedURL = - [[url absoluteString] stringByReplacingOccurrencesOfString:@"linphone-config://" withString:@""]; + [[url absoluteString] stringByReplacingOccurrencesOfString:@"linphone-config:" withString:@""]; self.configURL = [encodedURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - UIAlertController *errView = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Remote configuration", nil) - message:NSLocalizedString(@"This operation will load a remote configuration. Continue ?", nil) - preferredStyle:UIAlertControllerStyleAlert]; - - UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"No", nil) - style:UIAlertActionStyleDefault - handler:^(UIAlertAction * action) {}]; - - UIAlertAction* yesAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"Yes", nil) - style:UIAlertActionStyleDefault - handler:^(UIAlertAction * action) { - [self showWaitingIndicator]; - [self attemptRemoteConfiguration]; - }]; - - [errView addAction:defaultAction]; - [errView addAction:yesAction]; - - [PhoneMainView.instance presentViewController:errView animated:YES completion:nil]; + + + NSString *msg = [NSString stringWithFormat:NSLocalizedString(@" Do you want to download and apply configuration from this URL?\n\n%@", nil), encodedURL]; + + UIConfirmationDialog* remoteConfigurationDialog =[UIConfirmationDialog ShowWithMessage:msg + cancelMessage:nil + confirmMessage:NSLocalizedString(@"APPLY", nil) + onCancelClick:^() {} + onConfirmationClick:^() { + [SVProgressHUD show]; + [self attemptRemoteConfiguration]; + [SVProgressHUD dismiss]; + }]; + [remoteConfigurationDialog setSpecialColor]; + } else if([[url scheme] isEqualToString:@"message-linphone"]) { if ([[PhoneMainView.instance currentView] equal:ChatsListView.compositeViewDescription]) { VIEW(ChatConversationView).sharingMedia = TRUE; @@ -855,23 +851,7 @@ } } -- (void)showWaitingIndicator { - _waitingIndicator = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Fetching remote configuration...", nil) - message:@"" - preferredStyle:UIAlertControllerStyleAlert]; - - UIActivityIndicatorView *progress = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125, 60, 30, 30)]; - progress.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; - - [_waitingIndicator setValue:progress forKey:@"accessoryView"]; - [progress setColor:[UIColor blackColor]]; - - [progress startAnimating]; - [PhoneMainView.instance presentViewController:_waitingIndicator animated:YES completion:nil]; -} - - (void)attemptRemoteConfiguration { - [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(ConfigurationStateUpdateEvent:) name:kLinphoneConfiguringStateUpdate @@ -879,7 +859,7 @@ linphone_core_set_provisioning_uri(LC, [configURL UTF8String]); [LinphoneManager.instance destroyLinphoneCore]; [LinphoneManager.instance launchLinphoneCore]; - [LinphoneManager.instance.fastAddressBook fetchContactsInBackGroundThread]; + [LinphoneManager.instance.fastAddressBook fetchContactsInBackGroundThread]; } #pragma mark - Prevent ImagePickerView from rotating