From 319cc03c85ee55c697a238e3d304f58167daf456 Mon Sep 17 00:00:00 2001 From: Danmei Chen Date: Tue, 23 Apr 2019 17:56:30 +0200 Subject: [PATCH] disable groupchat capability if it is not set --- Classes/AssistantView.m | 2 + Classes/ChatConversationCreateView.m | 2 + Classes/ChatsListView.m | 2 + Classes/HistoryDetailsView.m | 3 +- Classes/LinphoneManager.h | 1 + Classes/LinphoneManager.m | 52 ++++++++++------------- Classes/LinphoneUI/UIContactDetailsCell.m | 3 +- Classes/Utils/FastAddressBook.m | 8 +--- Resources/assistant_linphone_create.rc | 1 - Resources/assistant_linphone_existing.rc | 1 - Resources/linphonerc | 1 + Resources/linphonerc-factory | 1 + 12 files changed, 38 insertions(+), 39 deletions(-) diff --git a/Classes/AssistantView.m b/Classes/AssistantView.m index 4095cb1a2..c61b3792b 100644 --- a/Classes/AssistantView.m +++ b/Classes/AssistantView.m @@ -419,6 +419,8 @@ static UICompositeViewDescription *compositeDescription = nil; [[LinphoneManager.instance fastAddressBook] fetchContactsInBackGroundThread]; } else [self displayAssistantConfigurationError]; + + [LinphoneManager.instance migrationPerAccount]; } - (void)displayAssistantConfigurationError { diff --git a/Classes/ChatConversationCreateView.m b/Classes/ChatConversationCreateView.m index 9d88f4bb8..3d59ce7bd 100644 --- a/Classes/ChatConversationCreateView.m +++ b/Classes/ChatConversationCreateView.m @@ -61,6 +61,8 @@ static UICompositeViewDescription *compositeDescription = nil; selector:@selector(viewUpdateEvent:) name:kLinphoneChatCreateViewChange object:nil]; + LinphoneProxyConfig *cfg = linphone_core_get_default_proxy_config(LC); + _chiffreOptionView.hidden = !(cfg && linphone_proxy_config_get_conference_factory_uri(cfg)); } - (void)viewUpdateEvent:(NSNotification *)notif { diff --git a/Classes/ChatsListView.m b/Classes/ChatsListView.m index a48149dc4..474b9cd48 100644 --- a/Classes/ChatsListView.m +++ b/Classes/ChatsListView.m @@ -38,6 +38,8 @@ [_backToCallButton update]; self.tableController.waitView = _waitView; [self setEditing:NO]; + LinphoneProxyConfig *cfg = linphone_core_get_default_proxy_config(LC); + _addGroupChatButton.hidden = !(cfg && linphone_proxy_config_get_conference_factory_uri(cfg)); } - (void)viewWillDisappear:(BOOL)animated { diff --git a/Classes/HistoryDetailsView.m b/Classes/HistoryDetailsView.m index f7f3bf159..080054fc5 100644 --- a/Classes/HistoryDetailsView.m +++ b/Classes/HistoryDetailsView.m @@ -148,7 +148,8 @@ static UICompositeViewDescription *compositeDescription = nil; const LinphonePresenceModel *model = contact.friend ? linphone_friend_get_presence_model(contact.friend) : NULL; _linphoneImage.hidden = ! ((model && linphone_presence_model_get_basic_status(model) == LinphonePresenceBasicStatusOpen) || [FastAddressBook contactHasValidSipDomain:contact]); - [self shouldHideEncryptedChatView:model && linphone_presence_model_has_capability(model, LinphoneFriendCapabilityLimeX3dh)]; + LinphoneProxyConfig *cfg = linphone_core_get_default_proxy_config(LC); + [self shouldHideEncryptedChatView:cfg && linphone_proxy_config_get_conference_factory_uri(cfg) && model && linphone_presence_model_has_capability(model, LinphoneFriendCapabilityLimeX3dh)]; char *addrURI = linphone_address_as_string_uri_only(addr); ms_free(addrURI); diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 6617115aa..0f5d590e0 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -214,6 +214,7 @@ typedef struct _LinphoneManagerSounds { - (void)checkNewVersion; - (void)loadAvatar; +- (void)migrationPerAccount; @property ProviderDelegate *providerDelegate; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index bf5883f35..5b7b4be74 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -330,8 +330,7 @@ struct codec_name_pref_table codec_pref_table[] = {{"speex", 8000, "speex_8k_pre - (void)migrationAllPost { [self migrationLinphoneSettings]; - [self migratePushNotificationPerAccount]; - [self migrateLimeSettings]; + [self migrationPerAccount]; } - (void)migrationAllPre { @@ -441,12 +440,28 @@ static int check_should_migrate_images(void *data, int argc, char **argv, char * linphone_core_set_file_transfer_server(LC, newURL); [self lpConfigSetBool:TRUE forKey:@"file_transfer_migration_done"]; } + + if ([self lpConfigBoolForKey:@"lime_migration_done"] == FALSE) { + const MSList *proxies = linphone_core_get_proxy_config_list(LC); + while (proxies) { + if (!strcmp(linphone_proxy_config_get_domain((LinphoneProxyConfig *)proxies->data),"sip.linphone.org")) { + linphone_core_set_lime_x3dh_server_url(LC, "https://lime.linphone.org/lime-server/lime-server.php"); + break; + } + proxies = proxies->next; + } + [self lpConfigSetBool:TRUE forKey:@"lime_migration_done"]; + } +} + +- (void)migrationPerAccount { const bctbx_list_t * proxies = linphone_core_get_proxy_config_list(LC); NSString *appDomain = [LinphoneManager.instance lpConfigStringForKey:@"domain_name" inSection:@"app" withDefault:@"sip.linphone.org"]; while (proxies) { LinphoneProxyConfig *config = proxies->data; + // can not create group chat without conference factory if (!linphone_proxy_config_get_conference_factory_uri(config)) { if (strcmp(appDomain.UTF8String, linphone_proxy_config_get_domain(config)) == 0) { linphone_proxy_config_set_conference_factory_uri(config, "sip:conference-factory@sip.linphone.org"); @@ -454,15 +469,7 @@ static int check_should_migrate_images(void *data, int argc, char **argv, char * } proxies = proxies->next; } -} - -static void migrateWizardToAssistant(const char *entry, void *user_data) { - LinphoneManager *thiz = (__bridge LinphoneManager *)(user_data); - NSString *key = [NSString stringWithUTF8String:entry]; - [thiz lpConfigSetString:[thiz lpConfigStringForKey:key inSection:@"wizard"] forKey:key inSection:@"assistant"]; -} - -- (void)migratePushNotificationPerAccount { + NSString *s = [self lpConfigStringForKey:@"pushnotification_preference"]; if (s && s.boolValue) { LOGI(@"Migrating push notification per account, enabling for ALL"); @@ -476,18 +483,10 @@ static void migrateWizardToAssistant(const char *entry, void *user_data) { } } -- (void)migrateLimeSettings { - if ([self lpConfigBoolForKey:@"lime_migration_done"] == FALSE) { - const MSList *proxies = linphone_core_get_proxy_config_list(LC); - while (proxies) { - if (!strcmp(linphone_proxy_config_get_domain((LinphoneProxyConfig *)proxies->data),"sip.linphone.org")) { - linphone_core_set_lime_x3dh_server_url(LC, "https://lime.linphone.org/lime-server/lime-server.php"); - break; - } - proxies = proxies->next; - } - [self lpConfigSetBool:TRUE forKey:@"lime_migration_done"]; - } +static void migrateWizardToAssistant(const char *entry, void *user_data) { + LinphoneManager *thiz = (__bridge LinphoneManager *)(user_data); + NSString *key = [NSString stringWithUTF8String:entry]; + [thiz lpConfigSetString:[thiz lpConfigStringForKey:key inSection:@"wizard"] forKey:key inSection:@"assistant"]; } #pragma mark - Linphone Core Functions @@ -2372,12 +2371,7 @@ static int comp_call_state_paused(const LinphoneCall *call, const void *param) { [self iterate]; } - /*linphone_core_enable_friend_list_subscription(LC, enabled && [LinphoneManager.instance lpConfigBoolForKey:@"use_rls_presence"]); - const MSList *lists = linphone_core_get_friends_lists(LC); - while (lists) { - linphone_friend_list_enable_subscriptions(lists->data, enabled && [LinphoneManager.instance lpConfigBoolForKey:@"use_rls_presence"]); - lists = lists->next; - }*/ + linphone_core_enable_friend_list_subscription(LC, enabled && [LinphoneManager.instance lpConfigBoolForKey:@"use_rls_presence"]); } - (BOOL)enterBackgroundMode { diff --git a/Classes/LinphoneUI/UIContactDetailsCell.m b/Classes/LinphoneUI/UIContactDetailsCell.m index f3fba5a98..0f1c4bbd3 100644 --- a/Classes/LinphoneUI/UIContactDetailsCell.m +++ b/Classes/LinphoneUI/UIContactDetailsCell.m @@ -70,7 +70,8 @@ [FastAddressBook isSipURIValid:_addressLabel.text])); ContactDetailsView *contactDetailsView = VIEW(ContactDetailsView); self.inviteButton.hidden = !ENABLE_SMS_INVITE || [[contactDetailsView.contact sipAddresses] count] > 0 || !self.linphoneImage.hidden; - [self shouldHideEncryptedChatView:model && linphone_presence_model_has_capability(model, LinphoneFriendCapabilityLimeX3dh)]; + LinphoneProxyConfig *cfg = linphone_core_get_default_proxy_config(LC); + [self shouldHideEncryptedChatView:cfg && linphone_proxy_config_get_conference_factory_uri(cfg) && model && linphone_presence_model_has_capability(model, LinphoneFriendCapabilityLimeX3dh)]; } if (addr) { diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index 132f1214c..bf8dd180f 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -184,12 +184,8 @@ NSLog(@"error fetching contacts %@", contactError); } else { - - dispatch_async(dispatch_get_main_queue(), ^{ - Contact *newContact = [[Contact alloc] initWithCNContact:contact]; - [self registerAddrsFor:newContact]; - }); - + Contact *newContact = [[Contact alloc] initWithCNContact:contact]; + [self registerAddrsFor:newContact]; } }]; } diff --git a/Resources/assistant_linphone_create.rc b/Resources/assistant_linphone_create.rc index ab962dde8..9f8093828 100644 --- a/Resources/assistant_linphone_create.rc +++ b/Resources/assistant_linphone_create.rc @@ -15,7 +15,6 @@ push_notification sip.linphone.org nat_policy_default_values - sip:conference-factory@sip.linphone.org
diff --git a/Resources/assistant_linphone_existing.rc b/Resources/assistant_linphone_existing.rc index c427675e8..da01f1161 100644 --- a/Resources/assistant_linphone_existing.rc +++ b/Resources/assistant_linphone_existing.rc @@ -15,7 +15,6 @@ push_notification sip.linphone.org nat_policy_default_values - sip:conference-factory@sip.linphone.org
diff --git a/Resources/linphonerc b/Resources/linphonerc index 8da793545..b17aacd84 100644 --- a/Resources/linphonerc +++ b/Resources/linphonerc @@ -16,6 +16,7 @@ repeat_call_notification=1 display_phone_only=0 auto_download_incoming_files_max_size=0 lime_migration_done=0 +use_rls_presence=1 [in_app_purchase] #set to 1 if in-app purchases are to be shown in the application diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory index 33477010c..23a0868d4 100644 --- a/Resources/linphonerc-factory +++ b/Resources/linphonerc-factory @@ -22,6 +22,7 @@ send_logs_include_linphonerc_and_chathistory=0 #use_phone_number=0 publish_presence=0 backgroundmode_preference=0 +use_rls_presence=1 accept_early_media=0