Cleanup: use setArguments() and avoid direct usage of Mavericks.KEY_ARG

`fun <T : Fragment> T.withArgs` should not be used anymore
This commit is contained in:
Benoit Marty 2021-11-19 17:12:38 +01:00
parent 292c09b176
commit 0f42f379c6
9 changed files with 39 additions and 62 deletions

View File

@ -16,9 +16,7 @@
package im.vector.app.core.extensions package im.vector.app.core.extensions
import android.os.Bundle
import android.util.Patterns import android.util.Patterns
import androidx.fragment.app.Fragment
import com.google.i18n.phonenumbers.NumberParseException import com.google.i18n.phonenumbers.NumberParseException
import com.google.i18n.phonenumbers.PhoneNumberUtil import com.google.i18n.phonenumbers.PhoneNumberUtil
import org.matrix.android.sdk.api.extensions.ensurePrefix import org.matrix.android.sdk.api.extensions.ensurePrefix
@ -27,11 +25,6 @@ fun Boolean.toOnOff() = if (this) "ON" else "OFF"
inline fun <T> T.ooi(block: (T) -> Unit): T = also(block) inline fun <T> T.ooi(block: (T) -> Unit): T = also(block)
/**
* Apply argument to a Fragment
*/
fun <T : Fragment> T.withArgs(block: Bundle.() -> Unit) = apply { arguments = Bundle().apply(block) }
/** /**
* Check if a CharSequence is an email * Check if a CharSequence is an email
*/ */

View File

@ -62,7 +62,6 @@ import com.airbnb.epoxy.EpoxyModel
import com.airbnb.epoxy.OnModelBuildFinishedListener import com.airbnb.epoxy.OnModelBuildFinishedListener
import com.airbnb.epoxy.addGlidePreloader import com.airbnb.epoxy.addGlidePreloader
import com.airbnb.epoxy.glidePreloader import com.airbnb.epoxy.glidePreloader
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.args import com.airbnb.mvrx.args
import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState import com.airbnb.mvrx.withState
@ -1635,10 +1634,11 @@ class RoomDetailFragment @Inject constructor(
is RoomDetailAction.ResumeVerification -> { is RoomDetailAction.ResumeVerification -> {
val otherUserId = data.otherUserId ?: return val otherUserId = data.otherUserId ?: return
VerificationBottomSheet().apply { VerificationBottomSheet().apply {
arguments = Bundle().apply { setArguments(VerificationBottomSheet.VerificationArgs(
putParcelable(Mavericks.KEY_ARG, VerificationBottomSheet.VerificationArgs( otherUserId = otherUserId,
otherUserId, data.transactionId, roomId = roomDetailArgs.roomId)) verificationId = data.transactionId,
} roomId = roomDetailArgs.roomId
))
}.show(parentFragmentManager, "REQ") }.show(parentFragmentManager, "REQ")
} }
} }

View File

@ -21,7 +21,6 @@ import android.os.Parcelable
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.args import com.airbnb.mvrx.args
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R import im.vector.app.R
@ -81,12 +80,9 @@ class DisplayReadReceiptsBottomSheet :
companion object { companion object {
fun newInstance(readReceipts: List<ReadReceiptData>): DisplayReadReceiptsBottomSheet { fun newInstance(readReceipts: List<ReadReceiptData>): DisplayReadReceiptsBottomSheet {
val args = Bundle() return DisplayReadReceiptsBottomSheet().apply {
val parcelableArgs = DisplayReadReceiptArgs( setArguments(DisplayReadReceiptArgs(readReceipts = readReceipts))
readReceipts }
)
args.putParcelable(Mavericks.KEY_ARG, parcelableArgs)
return DisplayReadReceiptsBottomSheet().apply { arguments = args }
} }
} }
} }

View File

@ -19,7 +19,6 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState import com.airbnb.mvrx.withState
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@ -68,14 +67,13 @@ class ViewEditHistoryBottomSheet :
companion object { companion object {
fun newInstance(roomId: String, informationData: MessageInformationData): ViewEditHistoryBottomSheet { fun newInstance(roomId: String, informationData: MessageInformationData): ViewEditHistoryBottomSheet {
val args = Bundle() return ViewEditHistoryBottomSheet().apply {
val parcelableArgs = TimelineEventFragmentArgs( setArguments(TimelineEventFragmentArgs(
informationData.eventId, eventId = informationData.eventId,
roomId, roomId = roomId,
informationData informationData = informationData
) ))
args.putParcelable(Mavericks.KEY_ARG, parcelableArgs) }
return ViewEditHistoryBottomSheet().apply { arguments = args }
} }
} }
} }

View File

@ -20,7 +20,6 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState import com.airbnb.mvrx.withState
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@ -82,14 +81,13 @@ class ViewReactionsBottomSheet :
companion object { companion object {
fun newInstance(roomId: String, informationData: MessageInformationData): ViewReactionsBottomSheet { fun newInstance(roomId: String, informationData: MessageInformationData): ViewReactionsBottomSheet {
val args = Bundle() return ViewReactionsBottomSheet().apply {
val parcelableArgs = TimelineEventFragmentArgs( setArguments(TimelineEventFragmentArgs(
informationData.eventId, eventId = informationData.eventId,
roomId, roomId = roomId,
informationData informationData = informationData
) ))
args.putParcelable(Mavericks.KEY_ARG, parcelableArgs) }
return ViewReactionsBottomSheet().apply { arguments = args }
} }
} }
} }

View File

@ -24,7 +24,6 @@ import android.view.ViewGroup
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.airbnb.mvrx.Incomplete import com.airbnb.mvrx.Incomplete
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState import com.airbnb.mvrx.withState
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
@ -66,15 +65,15 @@ class MatrixToBottomSheet :
override fun invalidate() = withState(viewModel) { state -> override fun invalidate() = withState(viewModel) { state ->
super.invalidate() super.invalidate()
when (state.linkType) { when (state.linkType) {
is PermalinkData.RoomLink -> { is PermalinkData.RoomLink -> {
views.matrixToCardContentLoading.isVisible = state.roomPeekResult is Incomplete views.matrixToCardContentLoading.isVisible = state.roomPeekResult is Incomplete
showFragment(MatrixToRoomSpaceFragment::class, Bundle()) showFragment(MatrixToRoomSpaceFragment::class, Bundle())
} }
is PermalinkData.UserLink -> { is PermalinkData.UserLink -> {
views.matrixToCardContentLoading.isVisible = state.matrixItem is Incomplete views.matrixToCardContentLoading.isVisible = state.matrixItem is Incomplete
showFragment(MatrixToUserFragment::class, Bundle()) showFragment(MatrixToUserFragment::class, Bundle())
} }
is PermalinkData.GroupLink -> { is PermalinkData.GroupLink -> {
} }
is PermalinkData.FallbackLink -> { is PermalinkData.FallbackLink -> {
} }
@ -98,16 +97,16 @@ class MatrixToBottomSheet :
viewModel.observeViewEvents { viewModel.observeViewEvents {
when (it) { when (it) {
is MatrixToViewEvents.NavigateToRoom -> { is MatrixToViewEvents.NavigateToRoom -> {
interactionListener?.mxToBottomSheetNavigateToRoom(it.roomId) interactionListener?.mxToBottomSheetNavigateToRoom(it.roomId)
dismiss() dismiss()
} }
MatrixToViewEvents.Dismiss -> dismiss() MatrixToViewEvents.Dismiss -> dismiss()
is MatrixToViewEvents.NavigateToSpace -> { is MatrixToViewEvents.NavigateToSpace -> {
interactionListener?.mxToBottomSheetSwitchToSpace(it.spaceId) interactionListener?.mxToBottomSheetSwitchToSpace(it.spaceId)
dismiss() dismiss()
} }
is MatrixToViewEvents.ShowModalError -> { is MatrixToViewEvents.ShowModalError -> {
MaterialAlertDialogBuilder(requireContext()) MaterialAlertDialogBuilder(requireContext())
.setMessage(it.error) .setMessage(it.error)
.setPositiveButton(getString(R.string.ok), null) .setPositiveButton(getString(R.string.ok), null)
@ -120,11 +119,7 @@ class MatrixToBottomSheet :
companion object { companion object {
fun withLink(matrixToLink: String): MatrixToBottomSheet { fun withLink(matrixToLink: String): MatrixToBottomSheet {
return MatrixToBottomSheet().apply { return MatrixToBottomSheet().apply {
arguments = Bundle().apply { setArguments(MatrixToArgs(matrixToLink = matrixToLink))
putParcelable(Mavericks.KEY_ARG, MatrixToArgs(
matrixToLink = matrixToLink
))
}
} }
} }
} }

View File

@ -24,7 +24,6 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState import com.airbnb.mvrx.withState
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@ -115,9 +114,9 @@ class DeviceListBottomSheet :
companion object { companion object {
fun newInstance(userId: String, allowDeviceAction: Boolean = true): DeviceListBottomSheet { fun newInstance(userId: String, allowDeviceAction: Boolean = true): DeviceListBottomSheet {
val args = Bundle() return DeviceListBottomSheet().apply {
args.putParcelable(Mavericks.KEY_ARG, Args(userId, allowDeviceAction)) setArguments(Args(userId, allowDeviceAction))
return DeviceListBottomSheet().apply { arguments = args } }
} }
} }
} }

View File

@ -21,7 +21,6 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.parentFragmentViewModel import com.airbnb.mvrx.parentFragmentViewModel
import com.airbnb.mvrx.withState import com.airbnb.mvrx.withState
@ -76,10 +75,9 @@ class DeviceVerificationInfoBottomSheet :
companion object { companion object {
fun newInstance(userId: String, deviceId: String): DeviceVerificationInfoBottomSheet { fun newInstance(userId: String, deviceId: String): DeviceVerificationInfoBottomSheet {
val args = Bundle() return DeviceVerificationInfoBottomSheet().apply {
val parcelableArgs = DeviceVerificationInfoArgs(userId, deviceId) setArguments(DeviceVerificationInfoArgs(userId, deviceId))
args.putParcelable(Mavericks.KEY_ARG, parcelableArgs) }
return DeviceVerificationInfoBottomSheet().apply { arguments = args }
} }
} }

View File

@ -23,12 +23,10 @@ import android.text.style.BulletSpan
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.airbnb.mvrx.Mavericks
import com.airbnb.mvrx.activityViewModel import com.airbnb.mvrx.activityViewModel
import com.airbnb.mvrx.withState import com.airbnb.mvrx.withState
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.extensions.withArgs
import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment
import im.vector.app.databinding.BottomSheetRoomWidgetPermissionBinding import im.vector.app.databinding.BottomSheetRoomWidgetPermissionBinding
import im.vector.app.features.home.AvatarRenderer import im.vector.app.features.home.AvatarRenderer
@ -111,8 +109,10 @@ class RoomWidgetPermissionBottomSheet :
companion object { companion object {
fun newInstance(widgetArgs: WidgetArgs) = RoomWidgetPermissionBottomSheet().withArgs { fun newInstance(widgetArgs: WidgetArgs): RoomWidgetPermissionBottomSheet {
putParcelable(Mavericks.KEY_ARG, widgetArgs) return RoomWidgetPermissionBottomSheet().apply {
setArguments(widgetArgs)
}
} }
} }
} }