From 70df098ee4a6aa199734c505b55e195a5c8a848f 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 71c0c3154..e90988a89 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 @@ -180,12 +180,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 e89c6990c..5cc06ba3d 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 @@ -192,6 +192,7 @@ class HistoryViewModel @UiThread fun startAudioCall() { coreContext.postOnCoreThread { core -> + if (!::address.isInitialized) return@postOnCoreThread coreContext.startAudioCall(address) } } @@ -199,6 +200,7 @@ class HistoryViewModel @UiThread fun startVideoCall() { coreContext.postOnCoreThread { core -> + if (!::address.isInitialized) return@postOnCoreThread coreContext.startVideoCall(address) } } @@ -218,6 +220,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()) { @@ -315,9 +319,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())) } }