diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index aef02cbab..8753e9c69 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -91,6 +91,11 @@ class CorePreferences @UiThread constructor(private val context: Context) { val disableChat: Boolean get() = config.getBool("app", "disable_chat_feature", false) // TODO FIXME: set it to true for first "release" without chat + // Will disable meetings feature completely + @get:WorkerThread + val disableMeetings: Boolean + get() = config.getBool("app", "disable_meetings_feature", false) // TODO FIXME: set it to true for first "release" without meetings + @get:WorkerThread val defaultDomain: String get() = config.getString("app", "default_domain", "sip.linphone.org")!! diff --git a/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt index e8c181ae8..5157a67fe 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt @@ -101,8 +101,6 @@ abstract class AbstractNewTransferCallFragment : GenericCallFragment() { viewModel.title.value = title binding.viewModel = viewModel - binding.hideGroupChatButton = true - binding.setBackClickListener { findNavController().popBackStack() } diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt index 6a15bcd43..71f0498db 100644 --- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt @@ -39,6 +39,7 @@ import org.linphone.ui.main.history.model.ContactOrSuggestionModel import org.linphone.ui.main.history.model.NumpadModel import org.linphone.ui.main.model.isInSecureMode import org.linphone.utils.Event +import org.linphone.utils.LinphoneUtils class StartCallViewModel @UiThread constructor() : ViewModel() { companion object { @@ -53,6 +54,8 @@ class StartCallViewModel @UiThread constructor() : ViewModel() { val numpadModel: NumpadModel + val hideGroupCallButton = MutableLiveData() + val isNumpadVisible = MutableLiveData() val appendDigitToSearchBarEvent: MutableLiveData> by lazy { @@ -128,6 +131,11 @@ class StartCallViewModel @UiThread constructor() : ViewModel() { val defaultAccount = core.defaultAccount limitSearchToLinphoneAccounts = defaultAccount?.isInSecureMode() ?: false + val hideGroupCall = corePreferences.disableMeetings || !LinphoneUtils.isRemoteConferencingAvailable( + core + ) + hideGroupCallButton.postValue(hideGroupCall) + coreContext.contactsManager.addListener(contactsListener) magicSearch = core.createMagicSearch() magicSearch.limitedSearch = false diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt index 89a610cc5..a713fc40d 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/BottomNavBarViewModel.kt @@ -68,10 +68,14 @@ class BottomNavBarViewModel @UiThread constructor() : ViewModel() { coreContext.postOnCoreThread { core -> core.addListener(coreListener) updateMissedCallsCount() - } - hideConversations.value = corePreferences.disableChat || true // TODO: chat feature - hideMeetings.value = true // TODO: meetings feature + hideConversations.postValue(corePreferences.disableChat) + + val hideGroupCall = corePreferences.disableMeetings || !LinphoneUtils.isRemoteConferencingAvailable( + core + ) + hideMeetings.postValue(hideGroupCall) + } } @UiThread diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 09abfceea..341775236 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -39,6 +39,7 @@ import org.linphone.core.Call import org.linphone.core.Call.Dir import org.linphone.core.Call.Status import org.linphone.core.ChatRoom +import org.linphone.core.Core import org.linphone.core.tools.Log class LinphoneUtils { @@ -142,6 +143,23 @@ class LinphoneUtils { } } + @WorkerThread + fun isEndToEndEncryptedChatAvailable(core: Core): Boolean { + return core.isLimeX3DhEnabled && + core.defaultAccount?.params?.limeServerUrl != null && + core.defaultAccount?.params?.conferenceFactoryUri != null + } + + @WorkerThread + fun isGroupChatAvailable(core: Core): Boolean { + return core.defaultAccount?.params?.conferenceFactoryUri != null + } + + @WorkerThread + fun isRemoteConferencingAvailable(core: Core): Boolean { + return core.defaultAccount?.params?.audioVideoConferenceFactoryAddress != null + } + @AnyThread @IntegerRes fun getIconResId(callStatus: Status, callDir: Dir): Int { diff --git a/app/src/main/res/layout-land/bottom_nav_bar.xml b/app/src/main/res/layout-land/bottom_nav_bar.xml index c1769c648..3326adb6b 100644 --- a/app/src/main/res/layout-land/bottom_nav_bar.xml +++ b/app/src/main/res/layout-land/bottom_nav_bar.xml @@ -78,7 +78,7 @@ - @@ -122,7 +119,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" app:constraint_referenced_ids="group_call_icon, gradient_background, group_call_label" - android:visibility="@{hideGroupChatButton ? View.GONE : View.VISIBLE}" /> + android:visibility="@{viewModel.hideGroupCallButton || viewModel.searchFilter.length() > 0 ? View.GONE : View.VISIBLE}" /> @@ -162,7 +158,6 @@ android:text="@string/history_call_start_create_group_call" android:textColor="@color/black" android:textSize="16sp" - android:visibility="@{viewModel.searchFilter.length() > 0 ? View.GONE : View.VISIBLE}" app:layout_constraintBottom_toBottomOf="@id/group_call_icon" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/group_call_icon"