From 30baa29cfc8a3a717d24d1c84360bc54c0a69fd0 Mon Sep 17 00:00:00 2001 From: Danmei Chen Date: Wed, 20 Mar 2019 17:36:20 +0100 Subject: [PATCH] use new API for creating chat room --- Classes/ChatConversationInfoView.m | 2 +- Classes/PhoneMainView.h | 2 +- Classes/PhoneMainView.m | 34 ++++++++---------------------- 3 files changed, 11 insertions(+), 27 deletions(-) diff --git a/Classes/ChatConversationInfoView.m b/Classes/ChatConversationInfoView.m index 9d5c9c14e..f60ee2974 100644 --- a/Classes/ChatConversationInfoView.m +++ b/Classes/ChatConversationInfoView.m @@ -142,7 +142,7 @@ static UICompositeViewDescription *compositeDescription = nil; } addresses = bctbx_list_append(addresses, (void *)linphoneAddress); } - [PhoneMainView.instance createChatRoomWithSubject:_nameLabel.text.UTF8String addresses:addresses andWaitView:_waitView isEncrypted:_encrypted]; + [PhoneMainView.instance createChatRoom:_nameLabel.text.UTF8String addresses:addresses andWaitView:_waitView isEncrypted:_encrypted isGroup:TRUE]; bctbx_list_free_with_data(addresses, (void (*)(void *))linphone_address_unref); } diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index be634db4e..c64ab398a 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -113,7 +113,7 @@ - (void)updateApplicationBadgeNumber; - (void)getOrCreateOneToOneChatRoom:(const LinphoneAddress *)remoteAddress waitView:(UIView *)waitView isEncrypted:(BOOL)isEncrypted; -- (void)createChatRoomWithSubject:(const char *)subject addresses:(bctbx_list_t *)addresses andWaitView:(UIView *)waitView isEncrypted:(BOOL)isEncrypted; +- (LinphoneChatRoom *)createChatRoom:(const char *)subject addresses:(bctbx_list_t *)addresses andWaitView:(UIView *)waitView isEncrypted:(BOOL)isEncrypted isGroup:(BOOL)isGroup; - (void)goToChatRoom:(LinphoneChatRoom *)cr; + (PhoneMainView*) instance; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 54a19422b..3e546b709 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -888,7 +888,7 @@ static RootViewManager *rootViewManagerInstance = nil; LinphoneChatRoom *room = linphone_core_find_one_to_one_chat_room_2(LC, local, remoteAddress, isEncrypted); if (!room) { bctbx_list_t *addresses = bctbx_list_new((void*)remoteAddress); - [self createOneToOneChatRoom:LINPHONE_DUMMY_SUBJECT addresses:addresses andWaitView:waitView isEncrypted:isEncrypted]; + [self createChatRoom:LINPHONE_DUMMY_SUBJECT addresses:addresses andWaitView:waitView isEncrypted:isEncrypted isGroup:FALSE]; bctbx_list_free(addresses); return; } @@ -896,28 +896,7 @@ static RootViewManager *rootViewManagerInstance = nil; [self goToChatRoom:room]; } -- (void)createOneToOneChatRoom:(const char *)subject addresses:(bctbx_list_t *)addresses andWaitView:(UIView *)waitView isEncrypted:(BOOL)isEncrypted{ - LinphoneChatRoom *room = [self createChatRoom:subject addresses:addresses andWaitView:waitView isEncrypted:isEncrypted]; - if (!room) - return; - - linphone_chat_room_add_participants(room, addresses); -} - -- (void)createChatRoomWithSubject:(const char *)subject addresses:(bctbx_list_t *)addresses andWaitView:(UIView *)waitView isEncrypted:(BOOL)isEncrypted{ - LinphoneChatRoom *room = [self createChatRoom:subject addresses:addresses andWaitView:waitView isEncrypted:isEncrypted]; - if (!room) - return; - - if (bctbx_list_size(addresses) == 1) { - //avoid creating ont-to-one chatroom - linphone_chat_room_add_participant(room, addresses->data); - } else { - linphone_chat_room_add_participants(room, addresses); - } -} - -- (LinphoneChatRoom *)createChatRoom:(const char *)subject addresses:(bctbx_list_t *)addresses andWaitView:(UIView *)waitView isEncrypted:(BOOL)isEncrypted{ +- (LinphoneChatRoom *)createChatRoom:(const char *)subject addresses:(bctbx_list_t *)addresses andWaitView:(UIView *)waitView isEncrypted:(BOOL)isEncrypted isGroup:(BOOL)isGroup{ if (!linphone_proxy_config_get_conference_factory_uri(linphone_core_get_default_proxy_config(LC)) || ((bctbx_list_size(addresses) == 1) && ([[LinphoneManager instance] lpConfigBoolForKey:@"prefer_basic_chat_room" inSection:@"misc"] || !isEncrypted))) { // If there's no factory uri, create a basic chat room @@ -935,7 +914,7 @@ static RootViewManager *rootViewManagerInstance = nil; [self presentViewController:errView animated:YES completion:nil]; return nil; } - LinphoneChatRoom *basicRoom = linphone_core_get_chat_room(LC, addresses->data); + LinphoneChatRoom *basicRoom = linphone_core_create_chat_room_5(LC, addresses->data); [self goToChatRoom:basicRoom]; return nil; } @@ -943,7 +922,12 @@ static RootViewManager *rootViewManagerInstance = nil; _waitView = waitView; _waitView.hidden = NO; // always use group chatroom - LinphoneChatRoom *room = linphone_core_create_client_group_chat_room_2(LC, subject ?: LINPHONE_DUMMY_SUBJECT, false, isEncrypted); + LinphoneChatRoomParams *param = linphone_core_create_default_chat_room_params(LC); + linphone_chat_room_params_enable_group(param, isGroup); + linphone_chat_room_params_enable_encryption(param, isEncrypted); + + LinphoneChatRoom *room = linphone_core_create_chat_room_2(LC, param, subject ?: LINPHONE_DUMMY_SUBJECT, addresses); + if (!room) { _waitView.hidden = YES; return nil;