Skip to content

Feature/app main hyuk dev #681

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Jun 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion app/src/main/java/wannabit/io/cosmostaion/chain/BaseChain.kt
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ import wannabit.io.cosmostaion.chain.cosmosClass.ChainTeritori
import wannabit.io.cosmostaion.chain.cosmosClass.ChainTerra
import wannabit.io.cosmostaion.chain.cosmosClass.ChainThorchain
import wannabit.io.cosmostaion.chain.cosmosClass.ChainUnification
import wannabit.io.cosmostaion.chain.cosmosClass.ChainUnion
import wannabit.io.cosmostaion.chain.cosmosClass.ChainUx
import wannabit.io.cosmostaion.chain.cosmosClass.ChainXion
import wannabit.io.cosmostaion.chain.cosmosClass.ChainXpla
Expand Down Expand Up @@ -167,10 +168,12 @@ import wannabit.io.cosmostaion.chain.testnetClass.ChainMantraTestnet
import wannabit.io.cosmostaion.chain.testnetClass.ChainMonadTestnet
import wannabit.io.cosmostaion.chain.testnetClass.ChainNeutronTestnet
import wannabit.io.cosmostaion.chain.testnetClass.ChainNillionTestnet
import wannabit.io.cosmostaion.chain.testnetClass.ChainSaharaAiEvmTestnet
import wannabit.io.cosmostaion.chain.testnetClass.ChainSelfTestnet
import wannabit.io.cosmostaion.chain.testnetClass.ChainTabichainTestnet
import wannabit.io.cosmostaion.chain.testnetClass.ChainXionTestnet
import wannabit.io.cosmostaion.chain.testnetClass.ChainXrplEvmTestnet
import wannabit.io.cosmostaion.chain.testnetClass.ChainZeroGravityEvmTestnet
import wannabit.io.cosmostaion.chain.testnetClass.ChainZkcloudTestnet
import wannabit.io.cosmostaion.common.BaseConstant
import wannabit.io.cosmostaion.common.BaseData
Expand Down Expand Up @@ -317,6 +320,14 @@ open class BaseChain : Parcelable {
}
}

fun getChainName(): String? {
return if (getChainListParam()?.has("chain_name") == true) {
getChainListParam()?.get("chain_name")?.asString
} else {
name
}
}

fun chainLogo(): String {
return if (isTestnet) {
getChainListParam()?.get("chain_image")?.asString ?: ""
Expand Down Expand Up @@ -703,7 +714,6 @@ fun allChains(): MutableList<BaseChain> {
chains.add(ChainForma())
chains.add(ChainFxcoreEvm())
chains.add(ChainGgezchain())
chains.add(ChainGovgen())
chains.add(ChainGravityBridge())
chains.add(ChainHaqqEvm())
chains.add(ChainHippocrat())
Expand Down Expand Up @@ -785,6 +795,7 @@ fun allChains(): MutableList<BaseChain> {
chains.add(ChainTerra())
chains.add(ChainThorchain())
chains.add(ChainUnification())
chains.add(ChainUnion())
chains.add(ChainUx())
chains.add(ChainXion())
chains.add(ChainXplaEvm())
Expand All @@ -807,11 +818,13 @@ fun allChains(): MutableList<BaseChain> {
chains.add(ChainMonadTestnet())
chains.add(ChainNeutronTestnet())
chains.add(ChainNillionTestnet())
chains.add(ChainSaharaAiEvmTestnet())
chains.add(ChainSelfTestnet())
// chains.add(ChainStroyTestnet())
chains.add(ChainTabichainTestnet())
chains.add(ChainXionTestnet())
chains.add(ChainXrplEvmTestnet())
chains.add(ChainZeroGravityEvmTestnet())
chains.add(ChainZkcloudTestnet())

chains.forEach { chain ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ class ChainPaloma : BaseChain(), Parcelable {
override var stakeDenom: String = "ugrain"
override var accountPrefix: String = "paloma"
override var grpcHost: String = "paloma.grpc.kjnodes.com"
override var lcdUrl: String = "https://paloma.api.kjnodes.com/"
override var lcdUrl: String = "https://api-1.paloma.nodes.guru/"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package wannabit.io.cosmostaion.chain.cosmosClass

import android.os.Parcelable
import com.google.common.collect.ImmutableList
import kotlinx.parcelize.Parcelize
import org.bitcoinj.crypto.ChildNumber
import wannabit.io.cosmostaion.chain.AccountKeyType
import wannabit.io.cosmostaion.chain.BaseChain
import wannabit.io.cosmostaion.chain.CosmosEndPointType
import wannabit.io.cosmostaion.chain.PubKeyType

@Parcelize
class ChainUnion : BaseChain(), Parcelable {

override var name: String = "Union"
override var tag: String = "union118"
override var apiName: String = "union"

override var accountKeyType = AccountKeyType(PubKeyType.COSMOS_SECP256K1, "m/44'/118'/0'/0/X")
override var setParentPath: List<ChildNumber> = ImmutableList.of(
ChildNumber(44, true), ChildNumber(118, true), ChildNumber.ZERO_HARDENED, ChildNumber.ZERO
)

override var cosmosEndPointType: CosmosEndPointType? = CosmosEndPointType.USE_LCD
override var stakeDenom: String = "upoa"
override var accountPrefix: String = "union"
override var grpcHost: String = "grpc.rpc-node.union-1.union.build"
override var lcdUrl: String = "https://api.rpc-node.union-1.union.build/"
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import android.os.Parcelable
import com.google.common.collect.ImmutableList
import kotlinx.parcelize.Parcelize
import org.bitcoinj.crypto.ChildNumber
import wannabit.io.cosmostaion.R
import wannabit.io.cosmostaion.chain.AccountKeyType
import wannabit.io.cosmostaion.chain.BaseChain
import wannabit.io.cosmostaion.chain.PubKeyType
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package wannabit.io.cosmostaion.chain.evmClass

import android.os.Parcelable
import com.google.common.collect.ImmutableList
import kotlinx.parcelize.Parcelize
import org.bitcoinj.crypto.ChildNumber
import wannabit.io.cosmostaion.chain.AccountKeyType
import wannabit.io.cosmostaion.chain.BaseChain
import wannabit.io.cosmostaion.chain.CosmosEndPointType
import wannabit.io.cosmostaion.chain.PubKeyType

@Parcelize
open class ChainSaharaAiEvm : BaseChain(), Parcelable {

override var name: String = "Sahara AI"
override var tag: String = "saharaai60"
override var apiName: String = "saharaai"

override var accountKeyType = AccountKeyType(PubKeyType.ETH_KECCAK256, "m/44'/60'/0'/0/X")
override var setParentPath: List<ChildNumber> = ImmutableList.of(
ChildNumber(44, true), ChildNumber(60, true), ChildNumber.ZERO_HARDENED, ChildNumber.ZERO
)

override var cosmosEndPointType: CosmosEndPointType? = CosmosEndPointType.USE_LCD
override var stakeDenom: String = ""
override var accountPrefix: String = "sah"
override var grpcHost: String = ""
override var lcdUrl: String = ""

override var supportEvm: Boolean = true
override var coinSymbol: String = "SAH"
override var evmRpcURL: String = ""
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package wannabit.io.cosmostaion.chain.evmClass

import android.os.Parcelable
import com.google.common.collect.ImmutableList
import kotlinx.parcelize.Parcelize
import org.bitcoinj.crypto.ChildNumber
import wannabit.io.cosmostaion.chain.AccountKeyType
import wannabit.io.cosmostaion.chain.BaseChain
import wannabit.io.cosmostaion.chain.PubKeyType

@Parcelize
open class ChainZeroGravity : BaseChain(), Parcelable {

override var name: String = "0G"
override var tag: String = "zero-gravity60"
override var apiName: String = "zero-gravity"

override var supportEvm: Boolean = true
override var coinSymbol: String = "0G"

override var accountKeyType = AccountKeyType(PubKeyType.ETH_KECCAK256, "m/44'/60'/0'/0/X")
override var setParentPath: List<ChildNumber> = ImmutableList.of(
ChildNumber(44, true), ChildNumber(60, true), ChildNumber.ZERO_HARDENED, ChildNumber.ZERO
)

override var evmRpcURL: String = ""
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package wannabit.io.cosmostaion.chain.testnetClass

import android.os.Parcelable
import com.google.common.collect.ImmutableList
import kotlinx.parcelize.Parcelize
import org.bitcoinj.crypto.ChildNumber
import wannabit.io.cosmostaion.chain.AccountKeyType
import wannabit.io.cosmostaion.chain.CosmosEndPointType
import wannabit.io.cosmostaion.chain.PubKeyType
import wannabit.io.cosmostaion.chain.evmClass.ChainSaharaAiEvm

@Parcelize
class ChainSaharaAiEvmTestnet : ChainSaharaAiEvm(), Parcelable {

override var name: String = "Sahara AI Testnet"
override var tag: String = "saharaai60_T"
override var isTestnet: Boolean = true
override var apiName: String = "saharaai-testnet"

override var accountKeyType = AccountKeyType(PubKeyType.ETH_KECCAK256, "m/44'/60'/0'/0/X")
override var setParentPath: List<ChildNumber> = ImmutableList.of(
ChildNumber(44, true), ChildNumber(60, true), ChildNumber.ZERO_HARDENED, ChildNumber.ZERO
)

override var cosmosEndPointType: CosmosEndPointType? = CosmosEndPointType.USE_LCD
override var stakeDenom: String = "usah"
override var grpcHost: String = ""
override var lcdUrl: String = "https://sahara-api.testnet.moonlet.cloud/public/"

override var evmRpcURL: String = "https://testnet.saharalabs.ai"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package wannabit.io.cosmostaion.chain.testnetClass

import android.os.Parcelable
import com.google.common.collect.ImmutableList
import kotlinx.parcelize.Parcelize
import org.bitcoinj.crypto.ChildNumber
import wannabit.io.cosmostaion.chain.AccountKeyType
import wannabit.io.cosmostaion.chain.PubKeyType
import wannabit.io.cosmostaion.chain.evmClass.ChainZeroGravity

@Parcelize
class ChainZeroGravityEvmTestnet : ChainZeroGravity(), Parcelable {

override var name: String = "0G Testnet"
override var tag: String = "zero-gravity60_T"
override var isTestnet: Boolean = true
override var apiName: String = "zero-gravity-testnet"

override var supportEvm: Boolean = true
override var coinSymbol: String = "0G"

override var accountKeyType = AccountKeyType(PubKeyType.ETH_KECCAK256, "m/44'/60'/0'/0/X")
override var setParentPath: List<ChildNumber> = ImmutableList.of(
ChildNumber(44, true), ChildNumber(60, true), ChildNumber.ZERO_HARDENED, ChildNumber.ZERO
)

override var evmRpcURL: String = "https://evmrpc-testnet.0g.ai/"
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class WalletSelectViewHolder(
) {
binding.apply {
chainImg.setChainLogo(chain)
chainName.text = chain.name
chainName.text = chain.getChainName()

if (chain.isEvmCosmos()) {
chainAddress.text = chain.address
Expand Down Expand Up @@ -269,7 +269,7 @@ class WalletSelectViewHolder(
) {
binding.apply {
chainImg.setChainLogo(chain)
chainName.text = chain.name
chainName.text = chain.getChainName()
chainTypeBadge.visibility = View.GONE

if (chain.isEvmCosmos()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ class ChainEditFragment : BaseTxFragment() {
mainnetChains
} else {
mainnetChains.filter { chain ->
chain.name.contains(searchTxt.toString(), ignoreCase = true)
chain.getChainName()?.contains(searchTxt.toString(), ignoreCase = true) == true
}
})

Expand All @@ -78,7 +78,7 @@ class ChainEditFragment : BaseTxFragment() {
testnetChains
} else {
testnetChains.filter { chain ->
chain.name.contains(searchTxt.toString(), ignoreCase = true)
chain.getChainName()?.contains(searchTxt.toString(), ignoreCase = true) == true
}
})

Expand Down Expand Up @@ -239,7 +239,7 @@ class ChainEditFragment : BaseTxFragment() {
mainnetChains
} else {
mainnetChains.filter { chain ->
chain.name.contains(searchTxt.toString(), ignoreCase = true)
chain.getChainName()?.contains(searchTxt.toString(), ignoreCase = true) == true
}
})

Expand All @@ -248,7 +248,7 @@ class ChainEditFragment : BaseTxFragment() {
testnetChains
} else {
testnetChains.filter { chain ->
chain.name.contains(searchTxt.toString(), ignoreCase = true)
chain.getChainName()?.contains(searchTxt.toString(), ignoreCase = true) == true
}
})
}
Expand Down Expand Up @@ -290,15 +290,15 @@ class ChainEditFragment : BaseTxFragment() {
} else {
newText?.let { searchTxt ->
searchMainnetChains.addAll(account.allChains.filter { chain ->
chain.name.contains(
chain.getChainName()?.contains(
searchTxt, ignoreCase = true
) && !chain.isTestnet
) == true && !chain.isTestnet
})

searchTestnetChains.addAll(account.allChains.filter { chain ->
chain.name.contains(
chain.getChainName()?.contains(
searchTxt, ignoreCase = true
) && chain.isTestnet
) == true && chain.isTestnet
})
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class ChainEditViewHolder(
binding.apply {
updateView(chain, displayChains)
chainImg.setChainLogo(chain)
chainName.text = chain.name
chainName.text = chain.getChainName()
skeletonChainValue.visibility = View.VISIBLE
skeletonAssetCnt.visibility = View.VISIBLE
respondLayout.visibility = View.GONE
Expand Down Expand Up @@ -118,7 +118,7 @@ class ChainEditViewHolder(
} else {
chainAddress.text = if (chain.supportCosmos()) {
chain.address
} else if (chain.isSupportErc20()) {
} else if (chain.supportEvm) {
chain.evmAddress
} else {
chain.mainAddress
Expand Down Expand Up @@ -174,7 +174,7 @@ class ChainEditViewHolder(
binding.apply {
updateView(chain, displayChains)
chainImg.setChainLogo(chain)
chainName.text = chain.name
chainName.text = chain.getChainName()

if (chain is ChainBitCoin86) {
chainLegacy.visibility = View.VISIBLE
Expand Down Expand Up @@ -238,7 +238,7 @@ class ChainEditViewHolder(
} else {
chainAddress.text = if (chain is ChainBitCoin86) {
chain.mainAddress
} else if (chain.isSupportErc20()) {
} else if (chain.supportEvm) {
chain.evmAddress
} else {
chain.address
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import wannabit.io.cosmostaion.chain.BaseChain
import wannabit.io.cosmostaion.chain.FetchState
import wannabit.io.cosmostaion.database.Prefs
import wannabit.io.cosmostaion.databinding.ItemDashBinding
import wannabit.io.cosmostaion.databinding.ItemHeaderBinding
import wannabit.io.cosmostaion.databinding.ItemDefaultBottomHeaderBinding
import wannabit.io.cosmostaion.ui.qr.QrDialog
import wannabit.io.cosmostaion.ui.qr.QrEvmDialog

Expand All @@ -30,7 +30,7 @@ class DashboardAdapter(
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return when (viewType) {
VIEW_TYPE_MAINNET_HEADER, VIEW_TYPE_TESTNET_HEADER -> {
val binding = ItemHeaderBinding.inflate(
val binding = ItemDefaultBottomHeaderBinding.inflate(
LayoutInflater.from(parent.context), parent, false
)
DashboardHeaderViewHolder(binding)
Expand Down Expand Up @@ -157,7 +157,7 @@ class DashboardAdapter(
}

inner class DashboardHeaderViewHolder(
private val binding: ItemHeaderBinding
private val binding: ItemDefaultBottomHeaderBinding
) : RecyclerView.ViewHolder(binding.root) {

fun bind(position: Int) {
Expand Down
Loading