Skip to content

Commit

Permalink
Merge pull request #1521 from novasamatech/rc/7.12.2
Browse files Browse the repository at this point in the history
Rc/7.12.2
  • Loading branch information
valentunn committed May 21, 2024
2 parents 09e7510 + c7c334c commit e452250
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 13 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
buildscript {
ext {
// App version
versionName = '7.12.1'
versionCode = 133
versionName = '7.12.2'
versionCode = 134

applicationId = "io.novafoundation.nova"
releaseApplicationSuffix = "market"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ import io.novafoundation.nova.feature_account_api.data.repository.OnChainIdentit
import io.novafoundation.nova.feature_account_impl.data.network.blockchain.bindings.bindIdentity
import io.novafoundation.nova.feature_account_impl.data.network.blockchain.bindings.bindSuperOf
import io.novafoundation.nova.runtime.ext.accountIdOf
import io.novafoundation.nova.runtime.multiNetwork.ChainRegistry
import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain
import io.novafoundation.nova.runtime.multiNetwork.chain.model.ChainId
import io.novafoundation.nova.runtime.multiNetwork.getChainOrNull
import io.novafoundation.nova.runtime.storage.source.StorageDataSource
import io.novafoundation.nova.runtime.storage.source.query.StorageQueryContext
import io.novasama.substrate_sdk_android.extensions.fromHex
Expand All @@ -30,6 +32,7 @@ import kotlinx.coroutines.withContext

class RealOnChainIdentityRepository(
private val storageDataSource: StorageDataSource,
private val chainRegistry: ChainRegistry
) : OnChainIdentityRepository {

override suspend fun getIdentitiesFromIdsHex(
Expand All @@ -45,9 +48,10 @@ class RealOnChainIdentityRepository(
accountIds: Collection<AccountId>,
chainId: ChainId
): AccountIdKeyMap<OnChainIdentity?> = withContext(Dispatchers.Default) {
val identityChainId = findIdentityChain(chainId)
val distinctKeys = accountIds.mapToSet(::AccountIdKey)

storageDataSource.query(chainId) {
storageDataSource.query(identityChainId) {
if (!runtime.metadata.hasModule(Modules.IDENTITY)) {
return@query emptyMap()
}
Expand Down Expand Up @@ -80,7 +84,9 @@ class RealOnChainIdentityRepository(
chainId: ChainId,
accountId: AccountId
): OnChainIdentity? = withContext(Dispatchers.Default) {
storageDataSource.query(chainId) {
val identityChainId = findIdentityChain(chainId)

storageDataSource.query(identityChainId) {
if (!runtime.metadata.hasModule(Modules.IDENTITY)) {
return@query null
}
Expand Down Expand Up @@ -123,4 +129,11 @@ class RealOnChainIdentityRepository(
return runtime.metadata.module("Identity").storage("IdentityOf")
.query(accountId, binding = ::bindIdentity)
}

private suspend fun findIdentityChain(identitiesRequestedOn: ChainId): ChainId {
val requestedChain = chainRegistry.getChain(identitiesRequestedOn)
val identityChain = requestedChain.additional?.identityChain?.let { chainRegistry.getChainOrNull(it) }

return identityChain?.id ?: requestedChain.id
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,16 @@ import io.novafoundation.nova.core_db.dao.AccountDao
import io.novafoundation.nova.core_db.dao.MetaAccountDao
import io.novafoundation.nova.core_db.dao.NodeDao
import io.novafoundation.nova.feature_account_api.data.ethereum.transaction.EvmTransactionService
import io.novafoundation.nova.feature_account_api.data.events.MetaAccountChangesEventBus
import io.novafoundation.nova.feature_account_api.data.extrinsic.ExtrinsicService
import io.novafoundation.nova.feature_account_api.data.proxy.MetaAccountsUpdatesRegistry
import io.novafoundation.nova.feature_account_api.data.proxy.ProxySyncService
import io.novafoundation.nova.feature_account_api.data.repository.OnChainIdentityRepository
import io.novafoundation.nova.feature_account_api.data.repository.addAccount.proxied.ProxiedAddAccountRepository
import io.novafoundation.nova.feature_account_api.data.signer.SignerProvider
import io.novafoundation.nova.feature_account_api.domain.account.common.EncryptionDefaults
import io.novafoundation.nova.feature_account_api.domain.account.identity.IdentityProvider
import io.novafoundation.nova.feature_account_api.domain.account.identity.OnChainIdentity
import io.novafoundation.nova.feature_account_api.domain.interfaces.AccountInteractor
import io.novafoundation.nova.feature_account_api.domain.interfaces.AccountRepository
import io.novafoundation.nova.feature_account_api.domain.interfaces.MetaAccountGroupingInteractor
Expand All @@ -46,6 +50,8 @@ import io.novafoundation.nova.feature_account_api.presenatation.mixin.addressInp
import io.novafoundation.nova.feature_account_api.presenatation.mixin.identity.IdentityMixin
import io.novafoundation.nova.feature_account_api.presenatation.mixin.importType.ImportTypeChooserMixin
import io.novafoundation.nova.feature_account_api.presenatation.mixin.importType.ImportTypeChooserProvider
import io.novafoundation.nova.feature_account_api.presenatation.mixin.selectAddress.SelectAddressCommunicator
import io.novafoundation.nova.feature_account_api.presenatation.mixin.selectAddress.SelectAddressMixin
import io.novafoundation.nova.feature_account_api.presenatation.mixin.selectWallet.SelectWalletCommunicator
import io.novafoundation.nova.feature_account_api.presenatation.mixin.selectWallet.SelectWalletMixin
import io.novafoundation.nova.feature_account_impl.BuildConfig
Expand Down Expand Up @@ -76,12 +82,6 @@ import io.novafoundation.nova.feature_account_impl.domain.MetaAccountGroupingInt
import io.novafoundation.nova.feature_account_impl.domain.NodeHostValidator
import io.novafoundation.nova.feature_account_impl.domain.account.add.AddAccountInteractor
import io.novafoundation.nova.feature_account_impl.domain.account.advancedEncryption.AdvancedEncryptionInteractor
import io.novafoundation.nova.feature_account_api.domain.account.common.EncryptionDefaults
import io.novafoundation.nova.feature_account_api.domain.account.identity.IdentityProvider
import io.novafoundation.nova.feature_account_api.domain.account.identity.OnChainIdentity
import io.novafoundation.nova.feature_account_api.presenatation.mixin.selectAddress.SelectAddressCommunicator
import io.novafoundation.nova.feature_account_api.presenatation.mixin.selectAddress.SelectAddressMixin
import io.novafoundation.nova.feature_account_api.data.events.MetaAccountChangesEventBus
import io.novafoundation.nova.feature_account_impl.domain.account.details.WalletDetailsInteractor
import io.novafoundation.nova.feature_account_impl.presentation.AccountRouter
import io.novafoundation.nova.feature_account_impl.presentation.account.common.listing.DelegatedMetaAccountUpdatesListingMixinFactory
Expand Down Expand Up @@ -427,8 +427,9 @@ class AccountFeatureModule {
@Provides
@FeatureScope
fun provideIdentityRepository(
@Named(REMOTE_STORAGE_SOURCE) remoteStorageSource: StorageDataSource
): OnChainIdentityRepository = RealOnChainIdentityRepository(remoteStorageSource)
@Named(REMOTE_STORAGE_SOURCE) remoteStorageSource: StorageDataSource,
chainRegistry: ChainRegistry
): OnChainIdentityRepository = RealOnChainIdentityRepository(remoteStorageSource, chainRegistry)

@Provides
@FeatureScope
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import io.novafoundation.nova.core_db.model.chain.ChainLocal.ConnectionStateLoca
import io.novafoundation.nova.core_db.model.chain.ChainLocal.NodeSelectionStrategyLocal
import io.novafoundation.nova.core_db.model.chain.ChainNodeLocal
import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain
import io.novafoundation.nova.runtime.multiNetwork.chain.model.ChainId
import io.novafoundation.nova.runtime.multiNetwork.chain.remote.model.ChainAssetRemote
import io.novafoundation.nova.runtime.multiNetwork.chain.remote.model.ChainRemote

Expand All @@ -34,6 +35,7 @@ private const val DEFAULT_BLOCK_TIME = "defaultBlockTime"
private const val RELAYCHAIN_AS_NATIVE = "relaychainAsNative"
private const val MAX_ELECTING_VOTES = "stakingMaxElectingVoters"
private const val FEE_VIA_RUNTIME_CALL = "feeViaRuntimeCall"
private const val IDENTITY_CHAIN = "identityChain"

fun mapRemoteChainToLocal(
chainRemote: ChainRemote,
Expand All @@ -55,7 +57,8 @@ fun mapRemoteChainToLocal(
defaultBlockTimeMillis = it[DEFAULT_BLOCK_TIME].asGsonParsedLongOrNull(),
relaychainAsNative = it[RELAYCHAIN_AS_NATIVE] as? Boolean,
stakingMaxElectingVoters = it[MAX_ELECTING_VOTES].asGsonParsedIntOrNull(),
feeViaRuntimeCall = it[FEE_VIA_RUNTIME_CALL] as? Boolean
feeViaRuntimeCall = it[FEE_VIA_RUNTIME_CALL] as? Boolean,
identityChain = it[IDENTITY_CHAIN] as? ChainId
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ data class Chain(
val relaychainAsNative: Boolean?,
val stakingMaxElectingVoters: Int?,
val feeViaRuntimeCall: Boolean?,
val identityChain: ChainId?
)

data class Types(
Expand Down

0 comments on commit e452250

Please sign in to comment.