Browse Source

set more call actions visibility depending on available features

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe 2 years ago
parent
commit
7b48b8fc1f

+ 19 - 0
app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

@@ -98,6 +98,7 @@ import com.nextcloud.talk.utils.ApiUtils;
 import com.nextcloud.talk.utils.DisplayUtils;
 import com.nextcloud.talk.utils.DisplayUtils;
 import com.nextcloud.talk.utils.NotificationUtils;
 import com.nextcloud.talk.utils.NotificationUtils;
 import com.nextcloud.talk.utils.animations.PulseAnimation;
 import com.nextcloud.talk.utils.animations.PulseAnimation;
+import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew;
 import com.nextcloud.talk.utils.permissions.PlatformPermissionUtil;
 import com.nextcloud.talk.utils.permissions.PlatformPermissionUtil;
 import com.nextcloud.talk.utils.power.PowerManagerUtils;
 import com.nextcloud.talk.utils.power.PowerManagerUtils;
 import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
 import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder;
@@ -414,6 +415,7 @@ public class CallActivity extends CallBaseActivity {
             }
             }
         });
         });
 
 
+        initFeaturesVisibility();
         initClickListeners();
         initClickListeners();
         binding.microphoneButton.setOnTouchListener(new MicrophoneButtonTouchListener());
         binding.microphoneButton.setOnTouchListener(new MicrophoneButtonTouchListener());
 
 
@@ -460,6 +462,18 @@ public class CallActivity extends CallBaseActivity {
         }
         }
     }
     }
 
 
+    private void initFeaturesVisibility() {
+        // TODO: check for isAllowedToRecordCall once api is ready
+//       boolean showMoreCallActionsItem = isAllowedToRecordCall();
+//        if (showMoreCallActionsItem) {
+//            binding.moreCallActions.setVisibility(View.VISIBLE);
+//        } else {
+//          binding.moreCallActions.setVisibility(View.GONE);
+//        }
+
+        binding.moreCallActions.setVisibility(View.VISIBLE);
+    }
+
     private void initClickListeners() {
     private void initClickListeners() {
         binding.pictureInPictureButton.setOnClickListener(l -> enterPipMode());
         binding.pictureInPictureButton.setOnClickListener(l -> enterPipMode());
 
 
@@ -2940,6 +2954,11 @@ public class CallActivity extends CallBaseActivity {
         binding.callRecordingIndicator.setVisibility(View.GONE);
         binding.callRecordingIndicator.setVisibility(View.GONE);
     }
     }
 
 
+    public boolean isAllowedToRecordCall() {
+        return CapabilitiesUtilNew.hasSpreedFeatureCapability(conversationUser, "recording-v1") &&
+            CapabilitiesUtilNew.isCallRecordingAvailable(conversationUser);
+    }
+
     private class SelfVideoTouchListener implements View.OnTouchListener {
     private class SelfVideoTouchListener implements View.OnTouchListener {
 
 
         @SuppressLint("ClickableViewAccessibility")
         @SuppressLint("ClickableViewAccessibility")

+ 19 - 9
app/src/main/java/com/nextcloud/talk/ui/dialog/MoreCallActionsDialog.kt

@@ -54,10 +54,27 @@ class MoreCallActionsDialog(private val callActivity: CallActivity) : BottomShee
 
 
         viewThemeUtils.platform.themeDialogDark(binding.root)
         viewThemeUtils.platform.themeDialogDark(binding.root)
 
 
+        initItemsVisibility()
         initClickListeners()
         initClickListeners()
         initObservers()
         initObservers()
     }
     }
 
 
+    override fun onStart() {
+        super.onStart()
+        val bottomSheet = findViewById<View>(R.id.design_bottom_sheet)
+        val behavior = BottomSheetBehavior.from(bottomSheet as View)
+        behavior.state = BottomSheetBehavior.STATE_COLLAPSED
+    }
+
+    private fun initItemsVisibility() {
+        // if (callActivity.isAllowedToRecordCall) {
+        if (true) {
+            binding.recordCall.visibility = View.VISIBLE
+        } else {
+            binding.recordCall.visibility = View.GONE
+        }
+    }
+
     private fun initClickListeners() {
     private fun initClickListeners() {
         binding.recordCall.setOnClickListener {
         binding.recordCall.setOnClickListener {
             callActivity.callRecordingViewModel.clickRecordButton()
             callActivity.callRecordingViewModel.clickRecordButton()
@@ -70,14 +87,14 @@ class MoreCallActionsDialog(private val callActivity: CallActivity) : BottomShee
                 is CallRecordingViewModel.RecordingStartedState -> {
                 is CallRecordingViewModel.RecordingStartedState -> {
                     binding.recordCallText.text = context.getText(R.string.record_stop_description)
                     binding.recordCallText.text = context.getText(R.string.record_stop_description)
                     binding.recordCallIcon.setImageDrawable(
                     binding.recordCallIcon.setImageDrawable(
-                        ContextCompat.getDrawable(context, R.drawable.record_start)
+                        ContextCompat.getDrawable(context, R.drawable.record_stop)
                     )
                     )
                     dismiss()
                     dismiss()
                 }
                 }
                 is CallRecordingViewModel.RecordingStoppedState -> {
                 is CallRecordingViewModel.RecordingStoppedState -> {
                     binding.recordCallText.text = context.getText(R.string.record_start_description)
                     binding.recordCallText.text = context.getText(R.string.record_start_description)
                     binding.recordCallIcon.setImageDrawable(
                     binding.recordCallIcon.setImageDrawable(
-                        ContextCompat.getDrawable(context, R.drawable.record_stop)
+                        ContextCompat.getDrawable(context, R.drawable.record_start)
                     )
                     )
                     dismiss()
                     dismiss()
                 }
                 }
@@ -97,13 +114,6 @@ class MoreCallActionsDialog(private val callActivity: CallActivity) : BottomShee
         }
         }
     }
     }
 
 
-    override fun onStart() {
-        super.onStart()
-        val bottomSheet = findViewById<View>(R.id.design_bottom_sheet)
-        val behavior = BottomSheetBehavior.from(bottomSheet as View)
-        behavior.state = BottomSheetBehavior.STATE_COLLAPSED
-    }
-
     companion object {
     companion object {
         private const val TAG = "MoreCallActionsDialog"
         private const val TAG = "MoreCallActionsDialog"
     }
     }

+ 1 - 0
app/src/main/java/com/nextcloud/talk/utils/database/user/CapabilitiesUtilNew.kt

@@ -98,6 +98,7 @@ object CapabilitiesUtilNew {
         return false
         return false
     }
     }
 
 
+    @JvmStatic
     fun isCallRecordingAvailable(user: User): Boolean {
     fun isCallRecordingAvailable(user: User): Boolean {
         if (user.capabilities?.spreedCapability?.config?.containsKey("call") == true) {
         if (user.capabilities?.spreedCapability?.config?.containsKey("call") == true) {
             val map: Map<String, String>? = user.capabilities!!.spreedCapability!!.config!!["call"]
             val map: Map<String, String>? = user.capabilities!!.spreedCapability!!.config!!["call"]