From 9de92ba73b8f81e21c1e32af6ccf2adce3942b47 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 17 Jul 2025 09:40:47 +0200 Subject: [PATCH] Fixed crashes related to lateinit property used before being initialized found on Crashlytics --- .../ui/main/contacts/viewmodel/ContactViewModel.kt | 10 ++++++---- .../ui/main/history/viewmodel/HistoryViewModel.kt | 9 ++++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt index c711414f9..ac301dc4b 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt @@ -178,12 +178,14 @@ class ContactViewModel private val contactsListener = object : ContactsManager.ContactsListener { @WorkerThread override fun onContactsLoaded() { - val friend = coreContext.contactsManager.findContactById(refKey) - if (friend != null && friend != this@ContactViewModel.friend) { + if (!::friend.isInitialized) return + + val found = coreContext.contactsManager.findContactById(refKey) + if (found != null && found != friend) { Log.i( - "$TAG Found contact [${friend.name}] matching ref key [$refKey] after contacts have been loaded/updated" + "$TAG Found contact [${found.name}] matching ref key [$refKey] after contacts have been loaded/updated" ) - this@ContactViewModel.friend = friend + friend = found refreshContactInfo() } } diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt index 6f96dda67..024c60f56 100644 --- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt @@ -189,6 +189,7 @@ class HistoryViewModel @UiThread fun startAudioCall() { coreContext.postOnCoreThread { core -> + if (!::address.isInitialized) return@postOnCoreThread coreContext.startAudioCall(address) } } @@ -196,6 +197,7 @@ class HistoryViewModel @UiThread fun startVideoCall() { coreContext.postOnCoreThread { core -> + if (!::address.isInitialized) return@postOnCoreThread coreContext.startVideoCall(address) } } @@ -215,6 +217,8 @@ class HistoryViewModel @UiThread fun goToConversation() { coreContext.postOnCoreThread { core -> + if (!::address.isInitialized) return@postOnCoreThread + val account = core.defaultAccount val localSipUri = account?.params?.identityAddress?.asStringUriOnly() if (!localSipUri.isNullOrEmpty()) { @@ -312,9 +316,8 @@ class HistoryViewModel @UiThread fun goToMeetingWaitingRoom() { coreContext.postOnCoreThread { - if (::address.isInitialized) { - conferenceToJoinEvent.postValue(Event(address.asStringUriOnly())) - } + if (!::address.isInitialized) return@postOnCoreThread + conferenceToJoinEvent.postValue(Event(address.asStringUriOnly())) } }