diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountValidationFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountValidationFragment.kt index 41b1de32a..928424315 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountValidationFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/PhoneAccountValidationFragment.kt @@ -24,6 +24,7 @@ import android.content.Context.CLIPBOARD_SERVICE import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider +import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R import org.linphone.activities.GenericFragment @@ -73,12 +74,16 @@ class PhoneAccountValidationFragment : GenericFragment { - val args = Bundle() - args.putString( - "Identity", - "sip:${viewModel.accountCreator.username}@${viewModel.accountCreator.domain}" - ) - navigateToAccountSettings(args) + if (findNavController().graph.id == R.id.settings_nav_graph_xml) { + val args = Bundle() + args.putString( + "Identity", + "sip:${viewModel.accountCreator.username}@${viewModel.accountCreator.domain}" + ) + navigateToAccountSettings(args) + } else { + requireActivity().finish() + } } } } diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt index 012f63682..07dd1a0ea 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt @@ -36,6 +36,7 @@ import org.linphone.activities.assistant.viewmodels.WelcomeViewModel import org.linphone.activities.navigateToAccountLogin import org.linphone.activities.navigateToEmailAccountCreation import org.linphone.activities.navigateToRemoteProvisioning +import org.linphone.core.tools.Log import org.linphone.databinding.AssistantWelcomeFragmentBinding class WelcomeFragment : GenericFragment() { @@ -99,7 +100,11 @@ class WelcomeFragment : GenericFragment() { Intent.ACTION_VIEW, Uri.parse(getString(R.string.assistant_general_terms_link)) ) - startActivity(browserIntent) + try { + startActivity(browserIntent) + } catch (e: Exception) { + Log.e("[Welcome] Can't start activity: $e") + } } } spannable.setSpan(clickableSpan, termsMatcher.start(0), termsMatcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) @@ -113,7 +118,11 @@ class WelcomeFragment : GenericFragment() { Intent.ACTION_VIEW, Uri.parse(getString(R.string.assistant_privacy_policy_link)) ) - startActivity(browserIntent) + try { + startActivity(browserIntent) + } catch (e: Exception) { + Log.e("[Welcome] Can't start activity: $e") + } } } spannable.setSpan(clickableSpan, policyMatcher.start(0), policyMatcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt index 77133e2ad..d7075556c 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt @@ -432,7 +432,7 @@ class DetailChatRoomFragment : MasterFragment { if (content.isFileEncrypted) { - Log.w("[Chat Message] File is encrypted and can't be opened in one of our viewers...") + Log.w("[Chat Room] File is encrypted and can't be opened in one of our viewers...") showDialogForUserConsentBeforeExportingFileInThirdPartyApp( content ) @@ -606,11 +606,11 @@ class DetailChatRoomFragment : MasterFragment - Log.i("[Chat] Found rich content URI: $uri") + Log.i("[Chat Room] Found rich content URI: $uri") lifecycleScope.launch { withContext(Dispatchers.Main) { val path = FileUtils.getFilePath(requireContext(), uri) - Log.i("[Chat] Rich content URI: $uri matching path is: $path") + Log.i("[Chat Room] Rich content URI: $uri matching path is: $path") if (path != null) { chatSendingViewModel.addAttachment(path) } @@ -939,18 +939,22 @@ class DetailChatRoomFragment : MasterFragment= adapter.currentList.size) { + Log.e("[Chat] Index is out of bound, can't mark chat room as read") + } else { + val chatRoomViewModel = adapter.currentList[index] + chatRoomViewModel.chatRoom.markAsRead() + adapter.notifyItemChanged(index) + } } override fun onRightToLeftSwipe(viewHolder: RecyclerView.ViewHolder) { val viewModel = DialogViewModel(getString(R.string.chat_room_delete_one_dialog)) val dialog: Dialog = DialogUtils.getDialog(requireContext(), viewModel) - viewModel.showCancelButton { - adapter.notifyItemChanged(viewHolder.bindingAdapterPosition) - dialog.dismiss() - } - - viewModel.showDeleteButton( - { - val deletedChatRoom = adapter.currentList[viewHolder.bindingAdapterPosition].chatRoom - listViewModel.deleteChatRoom(deletedChatRoom) - if (!binding.slidingPane.isSlideable && - deletedChatRoom == sharedViewModel.selectedChatRoom.value - ) { - Log.i("[Chat] Currently displayed chat room has been deleted, removing detail fragment") - clearDisplayedChatRoom() - } + val index = viewHolder.bindingAdapterPosition + if (index < 0 || index >= adapter.currentList.size) { + Log.e("[Chat] Index is out of bound, can't delete chat room") + } else { + viewModel.showCancelButton { + adapter.notifyItemChanged(index) dialog.dismiss() - }, - getString(R.string.dialog_delete) - ) + } + + viewModel.showDeleteButton( + { + val deletedChatRoom = + adapter.currentList[index].chatRoom + listViewModel.deleteChatRoom(deletedChatRoom) + if (!binding.slidingPane.isSlideable && + deletedChatRoom == sharedViewModel.selectedChatRoom.value + ) { + Log.i("[Chat] Currently displayed chat room has been deleted, removing detail fragment") + clearDisplayedChatRoom() + } + dialog.dismiss() + }, + getString(R.string.dialog_delete) + ) + } dialog.show() } diff --git a/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt b/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt index 382b76b82..b9e75f793 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt @@ -174,35 +174,41 @@ class MasterContactsFragment : MasterFragment= adapter.currentList.size) { + Log.e("[Contacts] Index is out of bound, can't delete contact") + } else { + val contactViewModel = adapter.currentList[index] + if (contactViewModel.isNativeContact.value == false) { + adapter.notifyItemChanged(index) + val activity = requireActivity() as MainActivity + activity.showSnackBar(R.string.contact_cant_be_deleted) + return + } - viewModel.showCancelButton { - adapter.notifyItemChanged(viewHolder.bindingAdapterPosition) - dialog.dismiss() - } - - viewModel.showDeleteButton( - { - val deletedContact = adapter.currentList[viewHolder.bindingAdapterPosition].contact.value - if (deletedContact != null) { - listViewModel.deleteContact(deletedContact) - if (!binding.slidingPane.isSlideable && - deletedContact == sharedViewModel.selectedContact.value - ) { - Log.i("[Contacts] Currently displayed contact has been deleted, removing detail fragment") - clearDisplayedContact() - } - } + viewModel.showCancelButton { + adapter.notifyItemChanged(index) dialog.dismiss() - }, - getString(R.string.dialog_delete) - ) + } + + viewModel.showDeleteButton( + { + val deletedContact = + adapter.currentList[index].contact.value + if (deletedContact != null) { + listViewModel.deleteContact(deletedContact) + if (!binding.slidingPane.isSlideable && + deletedContact == sharedViewModel.selectedContact.value + ) { + Log.i("[Contacts] Currently displayed contact has been deleted, removing detail fragment") + clearDisplayedContact() + } + } + dialog.dismiss() + }, + getString(R.string.dialog_delete) + ) + } dialog.show() } diff --git a/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt b/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt index bbd2e0cfa..50ec1e476 100644 --- a/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt @@ -158,25 +158,30 @@ class MasterCallLogsFragment : MasterFragment= adapter.currentList.size) { + Log.e("[History] Index is out of bound, can't delete call log") + } else { + viewModel.showCancelButton { + adapter.notifyItemChanged(index) dialog.dismiss() - }, - getString(R.string.dialog_delete) - ) + } + + viewModel.showDeleteButton( + { + val deletedCallGroup = adapter.currentList[index] + listViewModel.deleteCallLogGroup(deletedCallGroup) + if (!binding.slidingPane.isSlideable && + deletedCallGroup.lastCallLog.callId == sharedViewModel.selectedCallLogGroup.value?.lastCallLog?.callId + ) { + Log.i("[History] Currently displayed history has been deleted, removing detail fragment") + clearDisplayedCallHistory() + } + dialog.dismiss() + }, + getString(R.string.dialog_delete) + ) + } dialog.show() }