diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt index 0c4caa6f6..6af75b2d3 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt @@ -83,10 +83,7 @@ import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import org.parceler.Parcels import java.io.IOException -import java.util.ArrayList import java.util.Collections -import java.util.HashMap -import java.util.HashSet import java.util.Locale import javax.inject.Inject @@ -154,7 +151,7 @@ class ContactsController(args: Bundle) : super.onAttach(view) eventBus.register(this) if (isNewConversationView) { - toggleNewCallHeaderVisibility(!isPublicCall) + toggleConversationPrivacyLayout(!isPublicCall) } if (isAddingParticipantsView) { binding.joinConversationViaLink.joinConversationViaLinkRelativeLayout.visibility = View.GONE @@ -260,6 +257,7 @@ class ContactsController(args: Bundle) : override fun onSubscribe(d: Disposable) { // unused atm } + override fun onNext(roomOverall: RoomOverall) { val bundle = Bundle() bundle.putParcelable(BundleKeys.KEY_USER_ENTITY, currentUser) @@ -280,6 +278,7 @@ class ContactsController(args: Bundle) : override fun onSubscribe(d: Disposable) { // unused atm } + override fun onNext(roomOverall: RoomOverall) { bundle.putParcelable( BundleKeys.KEY_ACTIVE_CONVERSATION, @@ -823,6 +822,7 @@ class ContactsController(args: Bundle) : override fun onSubscribe(d: Disposable) { // unused atm } + override fun onNext(roomOverall: RoomOverall) { if (activity != null) { val bundle = Bundle() @@ -846,6 +846,7 @@ class ContactsController(args: Bundle) : override fun onError(e: Throwable) { // unused atm } + override fun onComplete() { // unused atm } @@ -895,15 +896,9 @@ class ContactsController(args: Bundle) : } private fun toggleCallHeader() { - toggleNewCallHeaderVisibility(isPublicCall) + toggleConversationPrivacyLayout(isPublicCall) isPublicCall = !isPublicCall - - if (isPublicCall) { - binding.joinConversationViaLink.joinConversationViaLinkRelativeLayout.visibility = View.GONE - updateGroupParticipantSelection() - } else { - binding.joinConversationViaLink.joinConversationViaLinkRelativeLayout.visibility = View.VISIBLE - } + toggleConversationViaLinkVisibility(isPublicCall) enableContactForNonPublicCall() checkAndHandleDoneMenuItem() @@ -939,7 +934,7 @@ class ContactsController(args: Bundle) : } @Suppress("Detekt.TooGenericExceptionCaught") - private fun toggleNewCallHeaderVisibility(showInitialLayout: Boolean) { + private fun toggleConversationPrivacyLayout(showInitialLayout: Boolean) { try { if (showInitialLayout) { binding.conversationPrivacyToggle.initialRelativeLayout.visibility = View.VISIBLE @@ -955,6 +950,22 @@ class ContactsController(args: Bundle) : } } + @Suppress("Detekt.TooGenericExceptionCaught") + private fun toggleConversationViaLinkVisibility(isPublicCall: Boolean) { + try { + if (isPublicCall) { + binding.joinConversationViaLink.joinConversationViaLinkRelativeLayout.visibility = View.GONE + updateGroupParticipantSelection() + } else { + binding.joinConversationViaLink.joinConversationViaLinkRelativeLayout.visibility = View.VISIBLE + } + } catch (npe: NullPointerException) { + // view binding can be null + // since this is called asynchronously and UI might have been destroyed in the meantime + Log.i(TAG, "UI destroyed - view binding already gone") + } + } + companion object { const val TAG = "ContactsController" const val RETRIES: Long = 3