diff --git a/android/blockchain/src/main/kotlin/com/gemwallet/android/blockchain/services/SignService.kt b/android/blockchain/src/main/kotlin/com/gemwallet/android/blockchain/services/SignService.kt index 931faad2b..f78debb29 100644 --- a/android/blockchain/src/main/kotlin/com/gemwallet/android/blockchain/services/SignService.kt +++ b/android/blockchain/src/main/kotlin/com/gemwallet/android/blockchain/services/SignService.kt @@ -305,7 +305,7 @@ class SignService : SignClient { finalAmount = finalAmount, fee = fee, ) - return listOf(getSigner(params).signWithdrawal(data, privateKey).toByteArray()) + return getSigner(params).signStake(data, privateKey).map { it.toByteArray() } } override fun supported(chain: Chain): Boolean { return when (chain.toChainType()) { diff --git a/android/features/earn/delegation/viewmodels/src/main/kotlin/com/gemwallet/android/features/earn/delegation/viewmodels/DelegationViewModel.kt b/android/features/earn/delegation/viewmodels/src/main/kotlin/com/gemwallet/android/features/earn/delegation/viewmodels/DelegationViewModel.kt index cf9c706c1..e2f8b9af2 100644 --- a/android/features/earn/delegation/viewmodels/src/main/kotlin/com/gemwallet/android/features/earn/delegation/viewmodels/DelegationViewModel.kt +++ b/android/features/earn/delegation/viewmodels/src/main/kotlin/com/gemwallet/android/features/earn/delegation/viewmodels/DelegationViewModel.kt @@ -171,14 +171,14 @@ class DelegationViewModel @Inject constructor( .stateIn(viewModelScope, SharingStarted.Eagerly, null) fun onStake(call: AmountTransactionAction) { - call(buildStake(TransactionType.StakeDelegate)) + buildStake(TransactionType.StakeDelegate)?.let { call(it) } } fun onUnstake(amountCall: AmountTransactionAction, confirmCall: ConfirmTransactionAction) { val assetInfo = assetInfo.value ?: return val delegation = delegation.value ?: return if (assetInfo.chain.changeAmountOnUnstake) { - amountCall(buildStake(TransactionType.StakeUndelegate)) + buildStake(TransactionType.StakeUndelegate)?.let { amountCall(it) } return } val from = assetInfo.owner ?: return @@ -189,7 +189,7 @@ class DelegationViewModel @Inject constructor( } fun onRedelegate(call: AmountTransactionAction) { - call(buildStake(TransactionType.StakeRedelegate)) + buildStake(TransactionType.StakeRedelegate)?.let { call(it) } } fun onWithdraw(call: ConfirmTransactionAction) { @@ -216,12 +216,14 @@ class DelegationViewModel @Inject constructor( ) } - private fun buildStake(type: TransactionType): AmountParams { + private fun buildStake(type: TransactionType): AmountParams? { + val assetId = assetInfo.value?.asset?.id ?: return null + val delegation = delegation.value ?: return null return AmountParams.buildStake( - assetId = assetInfo.value?.asset?.id!!, + assetId = assetId, txType = type, - validatorId = delegation.value?.validator?.id, - delegationId = delegation.value?.base?.delegationId!! + validatorId = delegation.validator.id, + delegationId = delegation.base.delegationId, ) } } \ No newline at end of file diff --git a/android/features/earn/stake/presents/src/main/kotlin/com/gemwallet/android/features/stake/presents/components/StakeActions.kt b/android/features/earn/stake/presents/src/main/kotlin/com/gemwallet/android/features/stake/presents/components/StakeActions.kt index e4368d2d4..08ccaff23 100644 --- a/android/features/earn/stake/presents/src/main/kotlin/com/gemwallet/android/features/stake/presents/components/StakeActions.kt +++ b/android/features/earn/stake/presents/src/main/kotlin/com/gemwallet/android/features/stake/presents/components/StakeActions.kt @@ -22,6 +22,9 @@ internal fun LazyListScope.stakeActions( amountAction: AmountTransactionAction, onRewards: () -> Unit ) { + if (actions.isEmpty()) { + return + } item { SubheaderItem(R.string.common_manage) } diff --git a/android/features/earn/stake/viewmodels/src/main/kotlin/com/gemwallet/android/features/stake/viewmodels/StakeViewModel.kt b/android/features/earn/stake/viewmodels/src/main/kotlin/com/gemwallet/android/features/stake/viewmodels/StakeViewModel.kt index 8aad12d55..e7e638b8b 100644 --- a/android/features/earn/stake/viewmodels/src/main/kotlin/com/gemwallet/android/features/stake/viewmodels/StakeViewModel.kt +++ b/android/features/earn/stake/viewmodels/src/main/kotlin/com/gemwallet/android/features/stake/viewmodels/StakeViewModel.kt @@ -30,6 +30,7 @@ import com.wallet.core.primitives.Delegation import com.wallet.core.primitives.DelegationState import com.wallet.core.primitives.TransactionType import com.wallet.core.primitives.WalletType +import com.gemwallet.android.ext.isViewOnly import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -158,7 +159,7 @@ class StakeViewModel @Inject constructor( onOpenDetail: (String, String) -> Unit, onConfirm: ConfirmTransactionAction, ) { - if (delegation.base.state != DelegationState.AwaitingWithdrawal) { + if (walletType.value?.isViewOnly == true || delegation.base.state != DelegationState.AwaitingWithdrawal) { onOpenDetail(delegation.validator.id, delegation.base.delegationId) return } diff --git a/android/gemcore/src/main/kotlin/com/gemwallet/android/ext/Wallet.kt b/android/gemcore/src/main/kotlin/com/gemwallet/android/ext/Wallet.kt index b55606a1b..017c6db70 100644 --- a/android/gemcore/src/main/kotlin/com/gemwallet/android/ext/Wallet.kt +++ b/android/gemcore/src/main/kotlin/com/gemwallet/android/ext/Wallet.kt @@ -4,9 +4,13 @@ import com.wallet.core.primitives.Account import com.wallet.core.primitives.AssetId import com.wallet.core.primitives.Chain import com.wallet.core.primitives.Wallet +import com.wallet.core.primitives.WalletType fun Wallet.getAccount(chain: Chain): Account? { return accounts.firstOrNull { it.chain == chain } } -fun Wallet.getAccount(assetId: AssetId): Account? = getAccount(assetId.chain) \ No newline at end of file +fun Wallet.getAccount(assetId: AssetId): Account? = getAccount(assetId.chain) + +val WalletType.isViewOnly: Boolean get() = this == WalletType.View +val WalletType.canSign: Boolean get() = !isViewOnly \ No newline at end of file diff --git a/core b/core index 02788bb89..180efdb33 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 02788bb894bc50f9616d6201bd82032e54093a8f +Subproject commit 180efdb33ea58f5437131005a65035bf110ff867