From 78d55d6c788e525d84f51175a574333ab5f3fbe9 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 12 Jul 2023 13:52:10 +0200 Subject: [PATCH] Removed hardcoded account, improved things in chat rooms list --- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 10 +++ app/src/main/assets/linphonerc_default | 4 -- app/src/main/assets/linphonerc_factory | 44 ------------ .../adapter/ConversationsListAdapter.kt | 5 +- .../viewmodel/ConversationsListViewModel.kt | 71 ++++++++++--------- 6 files changed, 51 insertions(+), 84 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index db01576d5..86afc3422 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,6 +4,7 @@ plugins { id 'kotlin-kapt' id 'org.jlleitschuh.gradle.ktlint' version '11.3.1' id 'org.jetbrains.kotlin.android' + id 'com.google.gms.google-services' } static def getPackageName() { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e7355b719..671c3c450 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,6 +29,16 @@ + + + + + + + + -reg_route=sip:sip.linphone.org;transport=tls -reg_identity="Sylvain Berfini" -realm=sip.linphone.org -contact_parameters=message-expires=604800 -quality_reporting_collector=sip:voip-metrics@sip.linphone.org;transport=tls -push_parameters=pn-silent=1;pn-timeout=0; -quality_reporting_enabled=1 -quality_reporting_interval=180 -reg_expires=600 -reg_sendregister=1 -publish=1 -avpf=1 -avpf_rr_interval=1 -dial_escape_plus=0 -dial_prefix=33 -use_dial_prefix_for_calls_and_chats=1 -privacy=32768 -push_notification_allowed=1 -remote_push_notification_allowed=0 -cpim_in_basic_chat_rooms_enabled=1 -idkey=proxy_config_WSik0NIEZbTW4fM -publish_expires=120 -nat_policy_ref=-ulaFqPYu2HOZ90 -conference_factory_uri=sip:conference-factory@sip.linphone.org -audio_video_conference_factory_uri=sip:videoconference-factory@sip.linphone.org -rtp_bundle=1 -rtp_bundle_assumption=0 -lime_server_url=https://lime.linphone.org/lime-server/lime-server.php - -[auth_info_0] -username=sylvain -ha1=4028ae98f54e8ffd1ab5c90985a6e89752aa0228b3e14b7ffcc40e42b4787e56 -realm=sip.linphone.org -domain=sip.linphone.org -algorithm=SHA-256 -available_algorithms=SHA-256 - ## End of factory rc diff --git a/app/src/main/java/org/linphone/ui/conversations/adapter/ConversationsListAdapter.kt b/app/src/main/java/org/linphone/ui/conversations/adapter/ConversationsListAdapter.kt index 6e3e0441b..125307092 100644 --- a/app/src/main/java/org/linphone/ui/conversations/adapter/ConversationsListAdapter.kt +++ b/app/src/main/java/org/linphone/ui/conversations/adapter/ConversationsListAdapter.kt @@ -54,7 +54,6 @@ class ConversationsListAdapter( data = chatRoomData lifecycleOwner = viewLifecycleOwner - executePendingBindings() binding.root.isSelected = bindingAdapterPosition == selectedAdapterPosition @@ -69,6 +68,8 @@ class ConversationsListAdapter( chatRoomLongClickedEvent.value = Event(chatRoomData) } } + + executePendingBindings() } } } @@ -80,6 +81,6 @@ private class ConversationDiffCallback : DiffUtil.ItemCallback() { } override fun areContentsTheSame(oldItem: ChatRoomData, newItem: ChatRoomData): Boolean { - return true + return false } } diff --git a/app/src/main/java/org/linphone/ui/conversations/viewmodel/ConversationsListViewModel.kt b/app/src/main/java/org/linphone/ui/conversations/viewmodel/ConversationsListViewModel.kt index ea77c8e6b..3df15f3b1 100644 --- a/app/src/main/java/org/linphone/ui/conversations/viewmodel/ConversationsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/conversations/viewmodel/ConversationsListViewModel.kt @@ -95,8 +95,12 @@ class ConversationsListViewModel : ViewModel() { coreContext.postOnCoreThread { core -> core.addListener(coreListener) } + coreContext.contactsManager.addListener(contactsListener) - updateChatRoomsList() + + coreContext.postOnCoreThread { core -> + updateChatRoomsList() + } } override fun onCleared() { @@ -108,32 +112,35 @@ class ConversationsListViewModel : ViewModel() { } private fun addChatRoomToList(chatRoom: ChatRoom) { - coreContext.postOnCoreThread { core -> - val list = arrayListOf() - - val data = ChatRoomData(chatRoom) - list.add(data) - list.addAll(chatRoomsList.value.orEmpty()) - - chatRoomsList.postValue(list) + val index = findChatRoomIndex(chatRoom) + if (index != -1) { + Log.w("[Conversations List] Chat room already exists in list, do not add it again") + return } + + val list = arrayListOf() + + val data = ChatRoomData(chatRoom) + list.add(data) + list.addAll(chatRoomsList.value.orEmpty()) + list.sortByDescending { data -> data.chatRoom.lastUpdateTime } + + chatRoomsList.postValue(list) } private fun removeChatRoomFromList(chatRoom: ChatRoom) { - coreContext.postOnCoreThread { core -> - val list = arrayListOf() + val list = arrayListOf() - for (data in chatRoomsList.value.orEmpty()) { - if (LinphoneUtils.getChatRoomId(chatRoom) != LinphoneUtils.getChatRoomId( - data.chatRoom - ) - ) { - list.add(data) - } + for (data in chatRoomsList.value.orEmpty()) { + if (LinphoneUtils.getChatRoomId(chatRoom) != LinphoneUtils.getChatRoomId( + data.chatRoom + ) + ) { + list.add(data) } - - chatRoomsList.postValue(list) } + + chatRoomsList.postValue(list) } private fun findChatRoomIndex(chatRoom: ChatRoom): Int { @@ -163,25 +170,21 @@ class ConversationsListViewModel : ViewModel() { private fun updateChatRoomsList() { Log.i("[Conversations List] Updating chat rooms list") - coreContext.postOnCoreThread { core -> - chatRoomsList.value.orEmpty().forEach(ChatRoomData::onCleared) + chatRoomsList.value.orEmpty().forEach(ChatRoomData::onCleared) - val list = arrayListOf() - val chatRooms = core.chatRooms - for (chatRoom in chatRooms) { - list.add(ChatRoomData(chatRoom)) - } - chatRoomsList.postValue(list) + val list = arrayListOf() + val chatRooms = coreContext.core.chatRooms + for (chatRoom in chatRooms) { + list.add(ChatRoomData(chatRoom)) } + chatRoomsList.postValue(list) } private fun reorderChatRoomsList() { Log.i("[Conversations List] Re-ordering chat rooms list") - coreContext.postOnCoreThread { core -> - val list = arrayListOf() - list.addAll(chatRoomsList.value.orEmpty()) - list.sortByDescending { data -> data.chatRoom.lastUpdateTime } - chatRoomsList.postValue(list) - } + val list = arrayListOf() + list.addAll(chatRoomsList.value.orEmpty()) + list.sortByDescending { data -> data.chatRoom.lastUpdateTime } + chatRoomsList.postValue(list) } }