Skip to content

Commit

Permalink
GH-2049 changed the display strings based on order types
Browse files Browse the repository at this point in the history
  • Loading branch information
DmitryBespalov committed Jul 2, 2024
1 parent 7f8685d commit 2f0045b
Show file tree
Hide file tree
Showing 7 changed files with 123 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ class SwapOrderViewHolder(private val viewBinding: ItemTxSwapOrderBinding) :
dateTime.text = viewTransfer.dateTimeText

nonce.text = viewTransfer.nonce
addressName.text = resources.getString(R.string.tx_list_swap_order)
addressName.text = viewTransfer.displayName

addressLogo.alpha = viewTransfer.alpha
addressName.alpha = viewTransfer.alpha
Expand Down Expand Up @@ -412,7 +412,7 @@ class SwapTransferQueuedViewHolder(private val viewBinding: ItemTxQueuedSwapOrde
status.setTextColor(ResourcesCompat.getColor(resources, viewTransfer.statusColorRes, theme))

dateTime.text = viewTransfer.dateTime.elapsedIntervalTo(Date.from(Instant.now())).format(resources)
addressName.text = resources.getString(R.string.tx_list_swap_transfer)
addressName.text = viewTransfer.displayName

confirmationsIcon.setImageDrawable(ResourcesCompat.getDrawable(resources, viewTransfer.confirmationsIcon, theme))
confirmations.setTextColor(ResourcesCompat.getColor(resources, viewTransfer.confirmationsTextColor, theme))
Expand Down Expand Up @@ -440,7 +440,7 @@ class SwapTransferViewHolder(private val viewBinding: ItemTxSwapOrderBinding) :
dateTime.text = viewTransfer.dateTimeText

nonce.text = viewTransfer.nonce
addressName.text = resources.getString(R.string.tx_list_swap_transfer)
addressName.text = viewTransfer.displayName

addressLogo.alpha = viewTransfer.alpha
addressName.alpha = viewTransfer.alpha
Expand Down Expand Up @@ -468,7 +468,7 @@ class TwapOrderQueuedViewHolder(private val viewBinding: ItemTxQueuedSwapOrderBi
status.setTextColor(ResourcesCompat.getColor(resources, viewTransfer.statusColorRes, theme))

dateTime.text = viewTransfer.dateTime.elapsedIntervalTo(Date.from(Instant.now())).format(resources)
addressName.text = resources.getString(R.string.tx_list_twap_order)
addressName.text = viewTransfer.displayName

confirmationsIcon.setImageDrawable(ResourcesCompat.getDrawable(resources, viewTransfer.confirmationsIcon, theme))
confirmations.setTextColor(ResourcesCompat.getColor(resources, viewTransfer.confirmationsTextColor, theme))
Expand Down Expand Up @@ -496,7 +496,7 @@ class TwapOrderViewHolder(private val viewBinding: ItemTxSwapOrderBinding) :
dateTime.text = viewTransfer.dateTimeText

nonce.text = viewTransfer.nonce
addressName.text = resources.getString(R.string.tx_list_twap_order)
addressName.text = viewTransfer.displayName

addressLogo.alpha = viewTransfer.alpha
addressName.alpha = viewTransfer.alpha
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ import io.gnosis.data.repositories.TransactionLocalRepository
import io.gnosis.safe.R
import io.gnosis.safe.ui.base.AppDispatchers
import io.gnosis.safe.ui.base.BaseStateViewModel
import io.gnosis.safe.ui.transactions.details.viewdata.swapOrderDisplayname
import io.gnosis.safe.ui.transactions.details.viewdata.swapTransferDisplayName
import io.gnosis.safe.ui.transactions.details.viewdata.twapOrderDisplayName
import io.gnosis.safe.ui.transactions.paging.TransactionPagingProvider
import io.gnosis.safe.ui.transactions.paging.TransactionPagingSource
import io.gnosis.safe.utils.BalanceFormatter
Expand Down Expand Up @@ -392,7 +395,8 @@ class TransactionListViewModel
dateTimeText = timestamp.formatBackendTimeOfDay(),
alpha = alpha(txStatus),
nonce = executionInfo?.nonce?.toString() ?: "",
explorerUrl = txInfo.explorerUrl
explorerUrl = txInfo.explorerUrl,
displayName = swapOrderDisplayname(txInfo)
)
}

Expand All @@ -419,7 +423,8 @@ class TransactionListViewModel
confirmationsTextColor = if (thresholdMet) R.color.success else R.color.icon,
confirmationsIcon = if (thresholdMet) R.drawable.ic_confirmations_green_16dp else R.drawable.ic_confirmations_grey_16dp,
nonce = if (isConflict) "" else executionInfo?.nonce?.toString() ?: "",
explorerUrl = txInfo.explorerUrl
explorerUrl = txInfo.explorerUrl,
displayName = swapOrderDisplayname(txInfo)
)
}

Expand All @@ -446,7 +451,8 @@ class TransactionListViewModel
dateTimeText = timestamp.formatBackendTimeOfDay(),
alpha = alpha(txStatus),
nonce = executionInfo?.nonce?.toString() ?: "",
explorerUrl = txInfo.explorerUrl
explorerUrl = txInfo.explorerUrl,
displayName = swapTransferDisplayName(txInfo)
)
}

Expand All @@ -473,7 +479,8 @@ class TransactionListViewModel
confirmationsTextColor = if (thresholdMet) R.color.success else R.color.icon,
confirmationsIcon = if (thresholdMet) R.drawable.ic_confirmations_green_16dp else R.drawable.ic_confirmations_grey_16dp,
nonce = if (isConflict) "" else executionInfo?.nonce?.toString() ?: "",
explorerUrl = txInfo.explorerUrl
explorerUrl = txInfo.explorerUrl,
displayName = swapTransferDisplayName(txInfo)
)
}

Expand All @@ -499,7 +506,8 @@ class TransactionListViewModel
statusColorRes = statusTextColor(txStatus),
dateTimeText = timestamp.formatBackendTimeOfDay(),
alpha = alpha(txStatus),
nonce = executionInfo?.nonce?.toString() ?: ""
nonce = executionInfo?.nonce?.toString() ?: "",
displayName = twapOrderDisplayName()
)
}

Expand All @@ -525,7 +533,8 @@ class TransactionListViewModel
threshold = threshold,
confirmationsTextColor = if (thresholdMet) R.color.success else R.color.icon,
confirmationsIcon = if (thresholdMet) R.drawable.ic_confirmations_green_16dp else R.drawable.ic_confirmations_grey_16dp,
nonce = if (isConflict) "" else executionInfo?.nonce?.toString() ?: ""
nonce = if (isConflict) "" else executionInfo?.nonce?.toString() ?: "",
displayName = twapOrderDisplayName()
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,8 @@ sealed class TransactionView(
val dateTimeText: String,
val alpha: Float,
val nonce: String,
val explorerUrl: String
val explorerUrl: String,
val displayName: String
) : TransactionView(status, id, chain)

data class SwapOrderTransactionQueued(
Expand All @@ -139,7 +140,8 @@ sealed class TransactionView(
@ColorRes val confirmationsTextColor: Int,
@DrawableRes val confirmationsIcon: Int,
val nonce: String,
val explorerUrl: String
val explorerUrl: String,
val displayName: String
) : TransactionView(status, id, chain)

data class SwapTransferTransaction(
Expand All @@ -151,7 +153,8 @@ sealed class TransactionView(
val dateTimeText: String,
val alpha: Float,
val nonce: String,
val explorerUrl: String
val explorerUrl: String,
val displayName: String
) : TransactionView(status, id, chain)

data class SwapTransferTransactionQueued(
Expand All @@ -166,7 +169,8 @@ sealed class TransactionView(
@ColorRes val confirmationsTextColor: Int,
@DrawableRes val confirmationsIcon: Int,
val nonce: String,
val explorerUrl: String
val explorerUrl: String,
val displayName: String
) : TransactionView(status, id, chain)

data class TwapOrderTransaction(
Expand All @@ -178,6 +182,7 @@ sealed class TransactionView(
val dateTimeText: String,
val alpha: Float,
val nonce: String,
val displayName: String
) : TransactionView(status, id, chain)

data class TwapOrderTransactionQueued(
Expand All @@ -192,6 +197,7 @@ sealed class TransactionView(
@ColorRes val confirmationsTextColor: Int,
@DrawableRes val confirmationsIcon: Int,
val nonce: String,
val displayName: String
) : TransactionView(status, id, chain)

data class Creation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -464,11 +464,11 @@ class TransactionDetailsFragment : BaseViewBindingFragment<FragmentTransactionDe
copyChainPrefix = viewModel.isChainPrefixCopyEnabled(),
actionInfoItems = listOf<ActionInfoItem>(ActionInfoItem.Value(
itemLabel = R.string.tx_status_type_custom ,
value = "Swap order"))
value = txInfo.displayDescription))
)

txStatus.setStatus(
title = resources.getString(TxType.SWAP_ORDER.titleRes),
title = txInfo.displayDescription,
defaultIconRes = TxType.SWAP_ORDER.iconRes,
statusTextRes = getStringResForStatus(txDetails.txStatus, txDetails.canSign && awaitingConfirmations),
statusColorRes = getColorForStatus(txDetails.txStatus)
Expand All @@ -494,11 +494,11 @@ class TransactionDetailsFragment : BaseViewBindingFragment<FragmentTransactionDe
copyChainPrefix = viewModel.isChainPrefixCopyEnabled(),
actionInfoItems = listOf<ActionInfoItem>(ActionInfoItem.Value(
itemLabel = R.string.tx_status_type_custom ,
value = "Swap transfer"))
value = txInfo.displayDescription))
)

txStatus.setStatus(
title = resources.getString(TxType.SWAP_TRANSFER.titleRes),
title = txInfo.displayDescription,
defaultIconRes = TxType.SWAP_TRANSFER.iconRes,
statusTextRes = getStringResForStatus(txDetails.txStatus, txDetails.canSign && awaitingConfirmations),
statusColorRes = getColorForStatus(txDetails.txStatus)
Expand All @@ -524,11 +524,11 @@ class TransactionDetailsFragment : BaseViewBindingFragment<FragmentTransactionDe
copyChainPrefix = viewModel.isChainPrefixCopyEnabled(),
actionInfoItems = listOf<ActionInfoItem>(ActionInfoItem.Value(
itemLabel = R.string.tx_status_type_custom ,
value = "Twap order"))
value = txInfo.displayDescription))
)

txStatus.setStatus(
title = resources.getString(TxType.TWAP_ORDER.titleRes),
title = txInfo.displayDescription,
defaultIconRes = TxType.TWAP_ORDER.iconRes,
statusTextRes = getStringResForStatus(txDetails.txStatus, txDetails.canSign && awaitingConfirmations),
statusColorRes = getColorForStatus(txDetails.txStatus)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,18 +104,21 @@ sealed class TransactionInfoViewData(
@Parcelize
data class SwapOrder(
val uid: String,
val explorerUrl: String
val explorerUrl: String,
val displayDescription: String
) : TransactionInfoViewData(TransactionType.SwapOrder)

@Parcelize
data class SwapTransfer(
val uid: String,
val explorerUrl: String
val explorerUrl: String,
val displayDescription: String
) : TransactionInfoViewData(TransactionType.SwapTransfer)

@Parcelize
data class TwapOrder(
val status: String
val status: String,
val displayDescription: String
) : TransactionInfoViewData(TransactionType.TwapOrder)

@Parcelize
Expand Down Expand Up @@ -248,22 +251,49 @@ internal fun TransactionInfo.toTransactionInfoViewData(
)
}
}

is TransactionInfo.Creation -> TransactionInfoViewData.Creation(
creator.value,
AddressInfoData.Remote(creator.name, creator.logoUri, creator.value.asEthereumAddressString()),
AddressInfoData.Remote(
creator.name,
creator.logoUri,
creator.value.asEthereumAddressString()
),
transactionHash,
implementation?.value,
AddressInfoData.Remote(implementation?.name, implementation?.logoUri, implementation?.value?.asEthereumAddressString()),
AddressInfoData.Remote(
implementation?.name,
implementation?.logoUri,
implementation?.value?.asEthereumAddressString()
),
factory?.value,
AddressInfoData.Remote(factory?.name, factory?.logoUri, factory?.value?.asEthereumAddressString())
AddressInfoData.Remote(
factory?.name,
factory?.logoUri,
factory?.value?.asEthereumAddressString()
)
)

is TransactionInfo.SettingsChange -> TransactionInfoViewData.SettingsChange(
dataDecoded,
settingsInfo.toSettingsInfoViewData(safes, owners = owners)
)
is TransactionInfo.SwapOrder -> TransactionInfoViewData.SwapOrder(uid, explorerUrl)
is TransactionInfo.SwapTransfer -> TransactionInfoViewData.SwapTransfer(uid, explorerUrl)
is TransactionInfo.TwapOrder -> TransactionInfoViewData.TwapOrder(status)

is TransactionInfo.SwapOrder -> {
val name = swapOrderDisplayname(this)
TransactionInfoViewData.SwapOrder(uid, explorerUrl, name)
}

is TransactionInfo.SwapTransfer -> {
val name = swapTransferDisplayName(this)
TransactionInfoViewData.SwapTransfer(uid, explorerUrl, name)
}

is TransactionInfo.TwapOrder -> {
val name = twapOrderDisplayName()
TransactionInfoViewData.TwapOrder(status, name)
}

is TransactionInfo.Transfer -> {
val addressInfoData =
if (direction == TransactionDirection.OUTGOING) {
Expand All @@ -289,9 +319,32 @@ internal fun TransactionInfo.toTransactionInfoViewData(
direction = direction
)
}

is TransactionInfo.Unknown -> TransactionInfoViewData.Unknown
}

internal fun twapOrderDisplayName(): String {
return "Twap order"
}

internal fun swapOrderDisplayname(info: TransactionInfo.SwapOrder): String {
val orderClass = info.fullAppData?.metadata?.orderClass?.orderClass ?: "market"
val name = if (orderClass == "limit") "Limit order" else "Swap order"
return name
}

internal fun swapTransferDisplayName(info: TransactionInfo.SwapTransfer): String {
val orderClass = info.fullAppData?.metadata?.orderClass?.orderClass ?: "market"
val name = when (orderClass) {
"limit" -> "Limit order settlement"
"twap" -> "TWAP order settlement"
"liquidity" -> "Liquidity order settlement"
"market" -> "Swap order settlement"
else -> "Swap order settlement"
}
return name
}

@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
internal fun SettingsInfo?.toSettingsInfoViewData(
safes: List<Safe>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ class TxReviewFragment : BaseViewBindingFragment<FragmentTxReviewBinding>() {
actionInfoItems = listOf<ActionInfoItem>(
ActionInfoItem.Value(
itemLabel = R.string.tx_status_type_custom,
value = "Swap order"))
value = txInfo.displayDescription))
)
orderLink.visible(true)
actionDivider.visible(true)
Expand All @@ -414,7 +414,7 @@ class TxReviewFragment : BaseViewBindingFragment<FragmentTxReviewBinding>() {
actionInfoItems = listOf<ActionInfoItem>(
ActionInfoItem.Value(
itemLabel = R.string.tx_status_type_custom,
value = "Swap transfer"))
value = txInfo.displayDescription))
)
orderLink.visible(true)
actionDivider.visible(true)
Expand All @@ -440,7 +440,7 @@ class TxReviewFragment : BaseViewBindingFragment<FragmentTxReviewBinding>() {
actionInfoItems = listOf<ActionInfoItem>(
ActionInfoItem.Value(
itemLabel = R.string.tx_status_type_custom,
value = "Twap order"))
value = txInfo.displayDescription))
)
orderLink.visible(false)
actionDivider.visible(false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,15 @@ sealed class TransactionInfo(
@JsonClass(generateAdapter = true)
data class SwapOrder(
@Json(name = "uid") val uid: String,
@Json(name = "explorerUrl") val explorerUrl: String
@Json(name = "explorerUrl") val explorerUrl: String,
@Json(name = "fullAppData") val fullAppData: AppData? = null
) : TransactionInfo(TransactionType.SwapOrder)

@JsonClass(generateAdapter = true)
data class SwapTransfer(
@Json(name = "uid") val uid: String,
@Json(name = "explorerUrl") val explorerUrl: String
@Json(name = "explorerUrl") val explorerUrl: String,
@Json(name = "fullAppData") val fullAppData: AppData? = null
) : TransactionInfo(TransactionType.SwapTransfer)

@JsonClass(generateAdapter = true)
Expand All @@ -71,3 +73,21 @@ enum class TransactionDirection {
@Json(name = "UNKNOWN")
UNKNOWN
}

@JsonClass(generateAdapter = true)
data class AppData (
@Json(name = "metadata")
val metadata: Metadata? = null
)

@JsonClass(generateAdapter = true)
data class Metadata (
@Json(name = "orderClass")
val orderClass: OrderClass? = null
)

@JsonClass(generateAdapter = true)
data class OrderClass (
@Json(name = "orderClass")
val orderClass: String? = "market"
)

0 comments on commit 2f0045b

Please sign in to comment.