From b4696502aab463eb92af1b6f92b1dbc703c61270 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 29 Jul 2021 18:55:05 +0200 Subject: [PATCH] Fixed various issues --- .../main/dialer/viewmodels/DialerViewModel.kt | 6 +++++- .../settings/fragments/AccountSettingsFragment.kt | 9 ++++++++- app/src/main/java/org/linphone/contact/Contact.kt | 2 +- .../main/java/org/linphone/contact/NativeContact.kt | 2 +- .../linphone/notifications/NotificationsManager.kt | 2 +- app/src/main/java/org/linphone/utils/AppUtils.kt | 12 +++++++++--- 6 files changed, 25 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/main/dialer/viewmodels/DialerViewModel.kt b/app/src/main/java/org/linphone/activities/main/dialer/viewmodels/DialerViewModel.kt index 2ce2a01ca..a3b14c78c 100644 --- a/app/src/main/java/org/linphone/activities/main/dialer/viewmodels/DialerViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/dialer/viewmodels/DialerViewModel.kt @@ -62,7 +62,11 @@ class DialerViewModel : LogsUploadViewModel() { val onKeyClick: NumpadDigitListener = object : NumpadDigitListener { override fun handleClick(key: Char) { val sb: StringBuilder = StringBuilder(enteredUri.value) - sb.insert(enteredUriCursorPosition, key.toString()) + try { + sb.insert(enteredUriCursorPosition, key.toString()) + } catch (ioobe: IndexOutOfBoundsException) { + sb.insert(sb.length, key.toString()) + } enteredUri.value = sb.toString() if (coreContext.core.callsNb == 0) { diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/AccountSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/AccountSettingsFragment.kt index 36e002fa0..b1311b010 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/AccountSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/AccountSettingsFragment.kt @@ -55,7 +55,14 @@ class AccountSettingsFragment : GenericFragment( return } - viewModel = ViewModelProvider(this, AccountSettingsViewModelFactory(identity)).get(AccountSettingsViewModel::class.java) + try { + viewModel = ViewModelProvider(this, AccountSettingsViewModelFactory(identity)).get( + AccountSettingsViewModel::class.java) + } catch (nsee: NoSuchElementException) { + Log.e("[Account Settings] Failed to find Account object, aborting!") + findNavController().navigateUp() + return + } binding.viewModel = viewModel binding.setBackClickListener { findNavController().popBackStack() } diff --git a/app/src/main/java/org/linphone/contact/Contact.kt b/app/src/main/java/org/linphone/contact/Contact.kt index f7ff508fa..2d370a1eb 100644 --- a/app/src/main/java/org/linphone/contact/Contact.kt +++ b/app/src/main/java/org/linphone/contact/Contact.kt @@ -151,7 +151,7 @@ open class Contact : Comparable { if (bm == null) IconCompat.createWithResource( coreContext.context, R.drawable.avatar - ) else IconCompat.createWithAdaptiveBitmap(bm) + ) else IconCompat.createWithBitmap(bm) if (icon != null) { personBuilder.setIcon(icon) } diff --git a/app/src/main/java/org/linphone/contact/NativeContact.kt b/app/src/main/java/org/linphone/contact/NativeContact.kt index 6f135aaba..b2a109227 100644 --- a/app/src/main/java/org/linphone/contact/NativeContact.kt +++ b/app/src/main/java/org/linphone/contact/NativeContact.kt @@ -71,7 +71,7 @@ class NativeContact(val nativeId: String, private val lookupKey: String? = null) if (bm == null) IconCompat.createWithResource( coreContext.context, R.drawable.avatar - ) else IconCompat.createWithAdaptiveBitmap(bm) + ) else IconCompat.createWithBitmap(bm) if (icon != null) { personBuilder.setIcon(icon) } diff --git a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt index 8f67e08ea..2e73f882e 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationsManager.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationsManager.kt @@ -362,7 +362,7 @@ class NotificationsManager(private val context: Context) { val builder = Person.Builder().setName(displayName) val userIcon = if (picture != null) { - IconCompat.createWithAdaptiveBitmap(picture) + IconCompat.createWithBitmap(picture) } else { IconCompat.createWithResource(context, R.drawable.avatar) } diff --git a/app/src/main/java/org/linphone/utils/AppUtils.kt b/app/src/main/java/org/linphone/utils/AppUtils.kt index c80a67728..835626783 100644 --- a/app/src/main/java/org/linphone/utils/AppUtils.kt +++ b/app/src/main/java/org/linphone/utils/AppUtils.kt @@ -71,11 +71,17 @@ class AppUtils { for (i in split.indices) { if (split[i].isNotEmpty()) { - if (emoji?.hasEmojiGlyph(split[i]) == true) { - initials += emoji.process(split[i]) - } else { + try { + if (emoji?.hasEmojiGlyph(split[i]) == true) { + initials += emoji.process(split[i]) + } else { + initials += split[i][0] + } + } catch (ise: IllegalStateException) { + Log.e("[App Utils] Can't call hasEmojiGlyph: $ise") initials += split[i][0] } + characters += 1 if (characters >= limit) break }