diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 46d517f27..ceaf5b9ee 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -93,6 +93,13 @@ class CorePreferences @UiThread constructor(private val context: Context) { config.setBool("app", "auto_start_call_record", value) } + @get:WorkerThread @set:WorkerThread + var showDialogWhenCallingDeviceUuidDirectly: Boolean + get() = config.getBool("app", "show_confirmation_dialog_zrtp_trust_call", true) + set(value) { + config.setBool("app", "show_confirmation_dialog_zrtp_trust_call", value) + } + // Conversation settings var exportMediaToNativeGallery: Boolean // TODO: use it! diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt index a3899bf7c..defc6019b 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt @@ -157,6 +157,7 @@ class SendMessageInConversationViewModel @UiThread constructor() : ViewModel() { viewModelScope.launch { for (file in attachments.value.orEmpty()) { file.deleteFile() + file.destroy() } } @@ -320,8 +321,7 @@ class SendMessageInConversationViewModel @UiThread constructor() : ViewModel() { list.addAll(attachments.value.orEmpty()) val fileName = FileUtils.getNameFromFilePath(file) - val isEncrypted = true // Really ? //TODO FIXME: is it really encrypted here? - val model = FileModel(file, fileName, 0, isEncrypted) { model -> + val model = FileModel(file, fileName, 0, isEncrypted = false) { model -> removeAttachment(model.file) } diff --git a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt index d4cc9a8f4..3fa175150 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/fragment/ContactFragment.kt @@ -39,6 +39,7 @@ import androidx.navigation.fragment.navArgs import com.google.android.material.bottomsheet.BottomSheetDialogFragment import java.io.File import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.core.Factory import org.linphone.core.tools.Log @@ -211,7 +212,7 @@ class ContactFragment : SlidingPaneChildFragment() { viewModel.startCallToDeviceToIncreaseTrustEvent.observe(viewLifecycleOwner) { it.consume { pair -> - showConfirmTrustCallDialog(pair.first, pair.second) + callDirectlyOrShowConfirmTrustCallDialog(pair.first, pair.second) } } @@ -291,6 +292,21 @@ class ContactFragment : SlidingPaneChildFragment() { dialog.show() } + private fun callDirectlyOrShowConfirmTrustCallDialog(contactName: String, deviceSipUri: String) { + coreContext.postOnCoreThread { + if (corePreferences.showDialogWhenCallingDeviceUuidDirectly) { + coreContext.postOnMainThread { + showConfirmTrustCallDialog(contactName, deviceSipUri) + } + } else { + val address = Factory.instance().createAddress(deviceSipUri) + if (address != null) { + coreContext.startCall(address, forceZRTP = true) + } + } + } + } + private fun showConfirmTrustCallDialog(contactName: String, deviceSipUri: String) { val model = TrustCallDialogModel(contactName, deviceSipUri) val dialog = DialogUtils.getContactTrustCallConfirmationDialog(requireActivity(), model) @@ -303,10 +319,11 @@ class ContactFragment : SlidingPaneChildFragment() { model.confirmCallEvent.observe(viewLifecycleOwner) { it.consume { - if (model.doNotShowAnymore.value == true) { - // TODO: never display this anymore - } coreContext.postOnCoreThread { + if (model.doNotShowAnymore.value == true) { + corePreferences.showDialogWhenCallingDeviceUuidDirectly = false + } + val address = Factory.instance().createAddress(deviceSipUri) if (address != null) { coreContext.startCall(address, forceZRTP = true)