Call: Clean code

This commit is contained in:
ganfra 2021-08-18 16:40:37 +02:00
parent 50a042683b
commit 121f17b93f
22 changed files with 38 additions and 54 deletions

1
changelog.d/3599.feature Normal file
View file

@ -0,0 +1 @@
New call designs

View file

@ -18,8 +18,6 @@ package im.vector.app.core.ui.views
import androidx.core.view.isVisible
import im.vector.app.features.call.webrtc.WebRtcCall
import org.matrix.android.sdk.api.session.call.CallState
import timber.log.Timber
class CurrentCallsViewPresenter {

View file

@ -23,13 +23,9 @@ import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.airbnb.mvrx.activityViewModel
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import im.vector.app.R
import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment
import im.vector.app.databinding.BottomSheetCallControlsBinding
import im.vector.app.features.call.audio.CallAudioManager
import me.gujun.android.span.span
class CallControlsBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetCallControlsBinding>() {
override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): BottomSheetCallControlsBinding {

View file

@ -20,8 +20,10 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.airbnb.epoxy.SimpleEpoxyController
import com.airbnb.mvrx.activityViewModel
import im.vector.app.core.epoxy.bottomsheet.bottomSheetActionItem
import im.vector.app.core.epoxy.bottomsheet.BottomSheetActionItem_
import im.vector.app.core.extensions.configureWith
import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment
import im.vector.app.databinding.BottomSheetGenericListBinding
import im.vector.app.features.call.audio.CallAudioManager
@ -33,9 +35,11 @@ class CallSoundDeviceChooserBottomSheet : VectorBaseBottomSheetDialogFragment<Bo
}
private val callViewModel: VectorCallViewModel by activityViewModel()
private val controller = SimpleEpoxyController()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
views.bottomSheetRecyclerView.configureWith(controller, hasFixedSize = false)
callViewModel.observeViewEvents {
when (it) {
is VectorCallViewEvents.ShowSoundDeviceChooser -> {
@ -49,14 +53,12 @@ class CallSoundDeviceChooserBottomSheet : VectorBaseBottomSheetDialogFragment<Bo
}
private fun render(available: Set<CallAudioManager.Device>, current: CallAudioManager.Device) {
views.bottomSheetRecyclerView.withModels {
available.forEach { device ->
val title = when (device) {
is CallAudioManager.Device.WirelessHeadset -> device.name ?: getString(device.titleRes)
else -> getString(device.titleRes)
}
bottomSheetActionItem {
val models = available.map { device ->
val title = when (device) {
is CallAudioManager.Device.WirelessHeadset -> device.name ?: getString(device.titleRes)
else -> getString(device.titleRes)
}
BottomSheetActionItem_().apply {
id(device.titleRes)
text(title)
iconRes(device.drawableRes)
@ -67,12 +69,12 @@ class CallSoundDeviceChooserBottomSheet : VectorBaseBottomSheetDialogFragment<Bo
}
}
}
controller.setModels(models)
}
}
companion object {
fun newInstance(): RoomListQuickActionsBottomSheet {
return RoomListQuickActionsBottomSheet()
companion object {
fun newInstance(): RoomListQuickActionsBottomSheet {
return RoomListQuickActionsBottomSheet()
}
}
}
}

View file

@ -21,7 +21,6 @@ import androidx.lifecycle.ViewModel
import im.vector.app.features.call.webrtc.WebRtcCall
import im.vector.app.features.call.webrtc.WebRtcCallManager
import org.matrix.android.sdk.api.session.call.MxCall
import timber.log.Timber
import javax.inject.Inject
class SharedKnownCallsViewModel @Inject constructor(

View file

@ -358,7 +358,7 @@ class VectorCallActivity : VectorBaseActivity<ActivityCallBinding>(), CallContro
views.callInfoGroup.isVisible = false
}
} else {
//showLoading()
// showLoading()
}
}
is CallState.Ended -> {
@ -412,7 +412,13 @@ class VectorCallActivity : VectorBaseActivity<ActivityCallBinding>(), CallContro
views.otherKnownCallLayout.setOnClickListener {
withState(callViewModel) {
val otherCall = callManager.getCallById(it.otherKnownCallInfo?.callId ?: "") ?: return@withState
val callArgs = CallArgs(otherCall.nativeRoomId, otherCall.callId, otherCall.mxCall.opponentUserId, !otherCall.mxCall.isOutgoing, otherCall.mxCall.isVideoCall)
val callArgs = CallArgs(
signalingRoomId = otherCall.nativeRoomId,
callId = otherCall.callId,
participantUserId = otherCall.mxCall.opponentUserId,
isIncomingCall = !otherCall.mxCall.isOutgoing,
isVideoCall = otherCall.mxCall.isVideoCall
)
callViewModel.handle(VectorCallViewActions.SwitchCall(callArgs))
}
}

View file

@ -23,7 +23,6 @@ import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.core.content.getSystemService
import im.vector.app.R
import im.vector.app.core.resources.StringProvider
import org.matrix.android.sdk.api.extensions.orFalse
import timber.log.Timber
import java.util.HashSet

View file

@ -26,7 +26,6 @@ import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.core.widget.ImageViewCompat
import im.vector.app.R
import im.vector.app.core.utils.DimensionConverter
import im.vector.app.databinding.ViewRemoveJitsiWidgetBinding
import im.vector.app.features.home.room.detail.RoomDetailViewState
import org.matrix.android.sdk.api.session.room.model.Membership
@ -88,10 +87,10 @@ import org.matrix.android.sdk.api.session.room.model.Membership
fun render(roomDetailViewState: RoomDetailViewState) {
val summary = roomDetailViewState.asyncRoomSummary()
val newState = if (summary?.membership != Membership.JOIN ||
roomDetailViewState.isWebRTCCallOptionAvailable() ||
!roomDetailViewState.isAllowedToManageWidgets ||
roomDetailViewState.jitsiState.widgetId == null) {
val newState = if (summary?.membership != Membership.JOIN
|| roomDetailViewState.isWebRTCCallOptionAvailable()
|| !roomDetailViewState.isAllowedToManageWidgets
|| roomDetailViewState.jitsiState.widgetId == null) {
State.Unmount
} else if (roomDetailViewState.jitsiState.deleteWidgetInProgress) {
State.Progress

View file

@ -147,10 +147,6 @@ class RoomDevToolActivity : SimpleFragmentActivity(), RoomDevToolViewModel.Facto
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == android.R.id.home) {
onBackPressed()
return true
}
if (item.itemId == R.id.menuItemEdit) {
viewModel.handle(RoomDevToolAction.MenuEdit)
return true

View file

@ -27,7 +27,6 @@ import org.matrix.android.sdk.api.session.room.model.message.MessageWithAttachme
import org.matrix.android.sdk.api.session.room.timeline.Timeline
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
import org.matrix.android.sdk.api.session.widgets.model.Widget
import org.matrix.android.sdk.api.session.widgets.model.WidgetContent
import org.matrix.android.sdk.api.util.MatrixItem
sealed class RoomDetailAction : VectorViewModelAction {
@ -108,7 +107,6 @@ sealed class RoomDetailAction : VectorViewModelAction {
object QuickActionSetTopic : RoomDetailAction()
data class ShowRoomAvatarFullScreen(val matrixItem: MatrixItem?, val transitionView: View?) : RoomDetailAction()
// Preview URL
data class DoNotShowPreviewUrlFor(val eventId: String, val url: String) : RoomDetailAction()

View file

@ -219,9 +219,6 @@ import java.util.concurrent.TimeUnit
import javax.inject.Inject
import android.animation.ValueAnimator
@Parcelize
data class RoomDetailArgs(
val roomId: String,

View file

@ -243,9 +243,7 @@ class RoomDetailViewModel @AssistedInject constructor(
widgets.filter { it.isActive }
}
.execute { widgets ->
copy(
activeRoomWidgets = widgets,
)
copy(activeRoomWidgets = widgets)
}
asyncSubscribe(RoomDetailViewState::activeRoomWidgets) { widgets ->

View file

@ -18,9 +18,7 @@ package im.vector.app.features.home.room.detail
import com.airbnb.mvrx.Async
import com.airbnb.mvrx.MvRxState
import com.airbnb.mvrx.Success
import com.airbnb.mvrx.Uninitialized
import im.vector.app.core.platform.ButtonStateView
import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.session.events.model.Event
import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState

View file

@ -73,7 +73,7 @@ class MergedHeaderItemFactory @Inject constructor(private val activeSessionHolde
} else if (!event.canBeMerged() || (nextEvent?.root?.getClearType() == event.root.getClearType() && !addDaySeparator)) {
null
} else {
buildMembershipEventsMergedSummary(currentPosition, items,partialState, event, eventIdToHighlight, requestModelBuild, callback)
buildMembershipEventsMergedSummary(currentPosition, items, partialState, event, eventIdToHighlight, requestModelBuild, callback)
}
}

View file

@ -23,7 +23,6 @@ import im.vector.app.core.resources.StringProvider
import me.gujun.android.span.span
import org.matrix.android.sdk.api.session.events.model.EventType
import org.matrix.android.sdk.api.session.events.model.toModel
import org.matrix.android.sdk.api.session.room.model.RoomSummary
import org.matrix.android.sdk.api.session.room.model.message.MessageAudioContent
import org.matrix.android.sdk.api.session.room.model.message.MessageOptionsContent
import org.matrix.android.sdk.api.session.room.model.message.MessageType

View file

@ -352,7 +352,7 @@ class NoticeEventFormatter @Inject constructor(
}
EventType.CALL_REJECT ->
if (event.isSentByCurrentUser()) {
sp.getString(R.string.call_tile_you_declined,"")
sp.getString(R.string.call_tile_you_declined, "")
} else {
sp.getString(R.string.call_tile_other_declined, senderName)
}

View file

@ -141,7 +141,7 @@ class MessageInformationDataFactory @Inject constructor(private val session: Ses
}
}
private fun getE2EDecoration(roomSummary: RoomSummary? , event: TimelineEvent): E2EDecoration {
private fun getE2EDecoration(roomSummary: RoomSummary?, event: TimelineEvent): E2EDecoration {
return if (
event.root.sendState == SendState.SYNCED
&& roomSummary?.isEncrypted.orFalse()

View file

@ -23,7 +23,6 @@ import org.matrix.android.sdk.api.session.events.model.toModel
import org.matrix.android.sdk.api.session.room.model.call.CallInviteContent
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
import org.matrix.android.sdk.api.session.widgets.model.WidgetContent
import org.matrix.android.sdk.api.session.widgets.model.WidgetType
import org.threeten.bp.Duration
class TimelineEventsGroup(val groupId: String) {

View file

@ -16,7 +16,6 @@
package im.vector.app.features.home.room.detail.timeline.item
import android.content.res.Resources
import android.telecom.Call
import android.view.View
import android.view.ViewGroup
import android.widget.Button

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<com.airbnb.epoxy.EpoxyRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/bottomSheetRecyclerView"
android:layout_width="match_parent"

View file

@ -6,7 +6,7 @@
android:paddingStart="4dp"
android:layout_width="wrap_content">
<com.google.android.material.button.MaterialButton
<Button
android:id="@+id/join_conference_button"
android:layout_width="56dp"
android:layout_height="wrap_content"

View file

@ -65,7 +65,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:src="@drawable/ic_arrow_right"
android:tint="?vctr_content_quaternary" />
app:tint="?vctr_content_quaternary" />
<ImageView
android:layout_width="wrap_content"
@ -73,7 +73,7 @@
android:layout_marginStart="8dp"
android:alpha="0.5"
android:src="@drawable/ic_arrow_right"
android:tint="?vctr_content_quaternary" />
app:tint="?vctr_content_quaternary" />
<ImageView
android:layout_width="wrap_content"
@ -81,7 +81,7 @@
android:layout_marginStart="8dp"
android:alpha="0.2"
android:src="@drawable/ic_arrow_right"
android:tint="?vctr_content_quaternary" />
app:tint="?vctr_content_quaternary" />
</LinearLayout>