From c6ac0020bbbf166e01eb09e142aaa2beb0dbc2e7 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Fri, 17 Jan 2025 10:13:40 +0100 Subject: [PATCH 1/7] Supported new ledger devices --- .../sdk/connection/ble/LedgerBleManager.kt | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/feature-ledger-impl/src/main/java/io/novafoundation/nova/feature_ledger_impl/sdk/connection/ble/LedgerBleManager.kt b/feature-ledger-impl/src/main/java/io/novafoundation/nova/feature_ledger_impl/sdk/connection/ble/LedgerBleManager.kt index 85c7fe8964..cf026d8e5c 100644 --- a/feature-ledger-impl/src/main/java/io/novafoundation/nova/feature_ledger_impl/sdk/connection/ble/LedgerBleManager.kt +++ b/feature-ledger-impl/src/main/java/io/novafoundation/nova/feature_ledger_impl/sdk/connection/ble/LedgerBleManager.kt @@ -26,13 +26,27 @@ class LedgerBleManager( contextManager: ContextManager ) : BleManager(contextManager.getApplicationContext()), DataReceivedCallback { + // You can find this and new devices here: https://github.com/LedgerHQ/device-sdk-ts/blob/develop/packages/device-management-kit/src/api/device-model/data/StaticDeviceModelDataSource.ts companion object { val supportedLedgerDevices by lazy { listOf( + // Nano X SupportedBleDevice( - serviceUuid = "13D63400-2C97-0004-0000-4C6564676572".toUuid(), - writeUuid = "13D63400-2C97-0004-0002-4C6564676572".toUuid(), - notifyUuid = "13D63400-2C97-0004-0001-4C6564676572".toUuid() + serviceUuid = "13d63400-2c97-0004-0000-4c6564676572".toUuid(), + notifyUuid = "13d63400-2c97-0004-0001-4c6564676572".toUuid(), + writeUuid = "13d63400-2c97-0004-0002-4c6564676572".toUuid() + ), + // Stax + SupportedBleDevice( + serviceUuid = "13d63400-2c97-6004-0000-4c6564676572".toUuid(), + notifyUuid = "13d63400-2c97-6004-0001-4c6564676572".toUuid(), + writeUuid = "13d63400-2c97-6004-0002-4c6564676572".toUuid() + ), + // Flex + SupportedBleDevice( + serviceUuid = "13d63400-2c97-3004-0000-4c6564676572".toUuid(), + notifyUuid = "13d63400-2c97-3004-0001-4c6564676572".toUuid(), + writeUuid = "13d63400-2c97-3004-0002-4c6564676572".toUuid() ) ) } From c962040901f1fa2140ab8e040eda1a0a8f52a50c Mon Sep 17 00:00:00 2001 From: David Wood Date: Mon, 20 Jan 2025 16:39:49 +0900 Subject: [PATCH 2/7] chore: fix some typos in comment (#1769) Signed-off-by: davidwoood --- .../data/fee/types/hydra/HydrationFeeInjector.kt | 2 +- .../nova/feature_dapp_impl/web3/states/BaseState.kt | 2 +- .../handling/handlers/WalletConnectPairDeeplinkHandler.kt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/fee/types/hydra/HydrationFeeInjector.kt b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/fee/types/hydra/HydrationFeeInjector.kt index f3adcf526b..db1384853f 100644 --- a/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/fee/types/hydra/HydrationFeeInjector.kt +++ b/feature-account-api/src/main/java/io/novafoundation/nova/feature_account_api/data/fee/types/hydra/HydrationFeeInjector.kt @@ -32,7 +32,7 @@ interface HydrationFeeInjector { object ToNative : ResetMode() /** - * Resets the the fee to the native one only the current fee payment asset is different + * Resets the fee to the native one only the current fee payment asset is different */ class ToNativeLazily(val feeAssetBeforeTransaction: BigInteger) : ResetMode() } diff --git a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/web3/states/BaseState.kt b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/web3/states/BaseState.kt index c084069189..90475566aa 100644 --- a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/web3/states/BaseState.kt +++ b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/web3/states/BaseState.kt @@ -33,7 +33,7 @@ abstract class BaseState, S>( Web3Session.Authorization.State.ALLOWED -> true // first time dapp request authorization during this session Web3Session.Authorization.State.NONE -> authorizePageWithConfirmation() - // user rejected this dapp previosuly - ask for authorization one more time + // user rejected this dapp previously - ask for authorization one more time Web3Session.Authorization.State.REJECTED -> authorizePageWithConfirmation() } } diff --git a/feature-deep-linking/src/main/java/io/novafoundation/nova/feature_deep_linking/presentation/handling/handlers/WalletConnectPairDeeplinkHandler.kt b/feature-deep-linking/src/main/java/io/novafoundation/nova/feature_deep_linking/presentation/handling/handlers/WalletConnectPairDeeplinkHandler.kt index 88af80e1bf..e0325f3c0f 100644 --- a/feature-deep-linking/src/main/java/io/novafoundation/nova/feature_deep_linking/presentation/handling/handlers/WalletConnectPairDeeplinkHandler.kt +++ b/feature-deep-linking/src/main/java/io/novafoundation/nova/feature_deep_linking/presentation/handling/handlers/WalletConnectPairDeeplinkHandler.kt @@ -18,7 +18,7 @@ class WalletConnectPairDeeplinkHandler( override suspend fun matches(data: Uri): Boolean { val newLinkMatch = data.scheme == "novawallet" && data.host == "wc" - // Older version of wc send both pair and sign requests through `wc:` deeplink so we additionaly check for `symKey` which is only present in pairing url + // Older version of wc send both pair and sign requests through `wc:` deeplink so we additionally check for `symKey` which is only present in pairing url val oldLinkMatch = data.scheme == "wc" && "symKey" in data.toString() return newLinkMatch || oldLinkMatch From cae54e2e551c6e3ec1eee22344d7ef81673268b1 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Mon, 20 Jan 2025 17:06:24 +0100 Subject: [PATCH 3/7] Fixed dapp entry points --- .../app/di/app/navigation/GovernanceNavigationModule.kt | 6 ++++-- .../navigation/staking/RelayStakingNavigationModule.kt | 6 ++++-- .../navigators/governance/GovernanceNavigator.kt | 9 ++++----- .../staking/relaychain/RelayStakingNavigator.kt | 7 +++---- app/src/main/res/navigation/referendum_details_graph.xml | 8 -------- app/src/main/res/navigation/root_nav_graph.xml | 8 -------- 6 files changed, 15 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/io/novafoundation/nova/app/di/app/navigation/GovernanceNavigationModule.kt b/app/src/main/java/io/novafoundation/nova/app/di/app/navigation/GovernanceNavigationModule.kt index 7334ef1e45..6baa54624d 100644 --- a/app/src/main/java/io/novafoundation/nova/app/di/app/navigation/GovernanceNavigationModule.kt +++ b/app/src/main/java/io/novafoundation/nova/app/di/app/navigation/GovernanceNavigationModule.kt @@ -10,6 +10,7 @@ import io.novafoundation.nova.app.root.navigation.navigators.governance.TinderGo import io.novafoundation.nova.common.di.scope.ApplicationScope import io.novafoundation.nova.common.resources.ContextManager import io.novafoundation.nova.feature_account_api.presenatation.account.wallet.list.SelectTracksCommunicator +import io.novafoundation.nova.feature_dapp_impl.presentation.DAppRouter import io.novafoundation.nova.feature_governance_impl.presentation.GovernanceRouter import io.novafoundation.nova.feature_governance_impl.presentation.referenda.vote.setup.tindergov.TinderGovVoteCommunicator @@ -21,8 +22,9 @@ class GovernanceNavigationModule { fun provideRouter( navigationHoldersRegistry: NavigationHoldersRegistry, commonNavigator: Navigator, - contextManager: ContextManager - ): GovernanceRouter = GovernanceNavigator(navigationHoldersRegistry, commonNavigator, contextManager) + contextManager: ContextManager, + dAppRouter: DAppRouter + ): GovernanceRouter = GovernanceNavigator(navigationHoldersRegistry, commonNavigator, contextManager, dAppRouter) @Provides @ApplicationScope diff --git a/app/src/main/java/io/novafoundation/nova/app/di/app/navigation/staking/RelayStakingNavigationModule.kt b/app/src/main/java/io/novafoundation/nova/app/di/app/navigation/staking/RelayStakingNavigationModule.kt index c0fc20e345..9f3d598595 100644 --- a/app/src/main/java/io/novafoundation/nova/app/di/app/navigation/staking/RelayStakingNavigationModule.kt +++ b/app/src/main/java/io/novafoundation/nova/app/di/app/navigation/staking/RelayStakingNavigationModule.kt @@ -6,6 +6,7 @@ import io.novafoundation.nova.app.root.navigation.navigators.NavigationHoldersRe import io.novafoundation.nova.app.root.navigation.navigators.Navigator import io.novafoundation.nova.app.root.navigation.navigators.staking.relaychain.RelayStakingNavigator import io.novafoundation.nova.common.di.scope.ApplicationScope +import io.novafoundation.nova.feature_dapp_impl.presentation.DAppRouter import io.novafoundation.nova.feature_staking_impl.presentation.StakingDashboardRouter import io.novafoundation.nova.feature_staking_impl.presentation.StakingRouter @@ -17,8 +18,9 @@ class RelayStakingNavigationModule { fun provideRelayStakingRouter( navigationHoldersRegistry: NavigationHoldersRegistry, navigator: Navigator, - dashboardRouter: StakingDashboardRouter + dashboardRouter: StakingDashboardRouter, + dAppRouter: DAppRouter ): StakingRouter { - return RelayStakingNavigator(navigationHoldersRegistry, navigator, dashboardRouter) + return RelayStakingNavigator(navigationHoldersRegistry, navigator, dashboardRouter, dAppRouter) } } diff --git a/app/src/main/java/io/novafoundation/nova/app/root/navigation/navigators/governance/GovernanceNavigator.kt b/app/src/main/java/io/novafoundation/nova/app/root/navigation/navigators/governance/GovernanceNavigator.kt index 8147529bf8..53b1fca502 100644 --- a/app/src/main/java/io/novafoundation/nova/app/root/navigation/navigators/governance/GovernanceNavigator.kt +++ b/app/src/main/java/io/novafoundation/nova/app/root/navigation/navigators/governance/GovernanceNavigator.kt @@ -8,7 +8,7 @@ import io.novafoundation.nova.app.root.navigation.navigators.Navigator import io.novafoundation.nova.common.resources.ContextManager import io.novafoundation.nova.common.utils.showBrowser import io.novafoundation.nova.feature_dapp_api.presentation.browser.main.DAppBrowserPayload -import io.novafoundation.nova.feature_dapp_impl.presentation.browser.main.DAppBrowserFragment +import io.novafoundation.nova.feature_dapp_impl.presentation.DAppRouter import io.novafoundation.nova.feature_governance_impl.BuildConfig import io.novafoundation.nova.feature_governance_impl.presentation.GovernanceRouter import io.novafoundation.nova.feature_governance_impl.presentation.common.description.DescriptionFragment @@ -47,7 +47,8 @@ import io.novafoundation.nova.feature_governance_impl.presentation.referenda.vot class GovernanceNavigator( navigationHoldersRegistry: NavigationHoldersRegistry, private val commonNavigator: Navigator, - private val contextManager: ContextManager + private val contextManager: ContextManager, + private val dAppRouter: DAppRouter ) : BaseNavigator(navigationHoldersRegistry), GovernanceRouter { override fun openReferendum(payload: ReferendumDetailsPayload) { @@ -235,9 +236,7 @@ class GovernanceNavigator( } override fun openDAppBrowser(url: String) { - navigationBuilder().action(R.id.action_referendumDetailsFragment_to_DAppBrowserGraph) - .setArgs(DAppBrowserFragment.getBundle(DAppBrowserPayload.Address(url))) - .navigateInFirstAttachedContext() + dAppRouter.openDAppBrowser(DAppBrowserPayload.Address(url)) } override fun openReferendumDescription(payload: DescriptionPayload) { diff --git a/app/src/main/java/io/novafoundation/nova/app/root/navigation/navigators/staking/relaychain/RelayStakingNavigator.kt b/app/src/main/java/io/novafoundation/nova/app/root/navigation/navigators/staking/relaychain/RelayStakingNavigator.kt index 53c1d7ad81..9407fd8adb 100644 --- a/app/src/main/java/io/novafoundation/nova/app/root/navigation/navigators/staking/relaychain/RelayStakingNavigator.kt +++ b/app/src/main/java/io/novafoundation/nova/app/root/navigation/navigators/staking/relaychain/RelayStakingNavigator.kt @@ -5,7 +5,7 @@ import io.novafoundation.nova.app.root.navigation.navigators.BaseNavigator import io.novafoundation.nova.app.root.navigation.navigators.NavigationHoldersRegistry import io.novafoundation.nova.app.root.navigation.navigators.Navigator import io.novafoundation.nova.feature_dapp_api.presentation.browser.main.DAppBrowserPayload -import io.novafoundation.nova.feature_dapp_impl.presentation.browser.main.DAppBrowserFragment +import io.novafoundation.nova.feature_dapp_impl.presentation.DAppRouter import io.novafoundation.nova.feature_staking_impl.domain.staking.redeem.RedeemConsequences import io.novafoundation.nova.feature_staking_impl.presentation.StakingDashboardRouter import io.novafoundation.nova.feature_staking_impl.presentation.StakingRouter @@ -47,6 +47,7 @@ class RelayStakingNavigator( navigationHoldersRegistry: NavigationHoldersRegistry, private val commonNavigator: Navigator, private val stakingDashboardRouter: StakingDashboardRouter, + private val dAppRouter: DAppRouter ) : BaseNavigator(navigationHoldersRegistry), StakingRouter { override fun returnToStakingMain() { @@ -286,8 +287,6 @@ class RelayStakingNavigator( } override fun openDAppBrowser(url: String) { - navigationBuilder().action(R.id.action_open_dappBrowser) - .setArgs(DAppBrowserFragment.getBundle(DAppBrowserPayload.Address(url))) - .navigateInFirstAttachedContext() + dAppRouter.openDAppBrowser(DAppBrowserPayload.Address(url)) } } diff --git a/app/src/main/res/navigation/referendum_details_graph.xml b/app/src/main/res/navigation/referendum_details_graph.xml index a2f4eb2114..03d3d74b9d 100644 --- a/app/src/main/res/navigation/referendum_details_graph.xml +++ b/app/src/main/res/navigation/referendum_details_graph.xml @@ -21,14 +21,6 @@ app:popUpTo="@id/referendumDetailsFragment" app:popUpToInclusive="true" /> - - - - Date: Mon, 20 Jan 2025 17:07:31 +0100 Subject: [PATCH 4/7] Bump version code --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 3b059030ce..306013f0a9 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ buildscript { ext { // App version - versionName = '9.2.0' - versionCode = 168 + versionName = '9.2.1' + versionCode = 169 applicationId = "io.novafoundation.nova" releaseApplicationSuffix = "market" From 014e0bf1e52a563dddd07a756c722c731bf824db Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Tue, 21 Jan 2025 06:48:27 +0100 Subject: [PATCH 5/7] Fixed empty url field --- build.gradle | 2 +- .../data/repository/DAppMetadataRepository.kt | 10 +++++++ .../repository/RealDAppMetadataRepository.kt | 4 +++ .../tabs/RealBrowserTabRepository.kt | 4 +-- .../utils/tabs/RealBrowserTabService.kt | 30 +++++++++++-------- 5 files changed, 35 insertions(+), 15 deletions(-) diff --git a/build.gradle b/build.gradle index 306013f0a9..f21ba67b79 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ buildscript { ext { // App version versionName = '9.2.1' - versionCode = 169 + versionCode = 170 applicationId = "io.novafoundation.nova" releaseApplicationSuffix = "market" diff --git a/feature-dapp-api/src/main/java/io/novafoundation/nova/feature_dapp_api/data/repository/DAppMetadataRepository.kt b/feature-dapp-api/src/main/java/io/novafoundation/nova/feature_dapp_api/data/repository/DAppMetadataRepository.kt index cda9c60fff..33ae1ebfb1 100644 --- a/feature-dapp-api/src/main/java/io/novafoundation/nova/feature_dapp_api/data/repository/DAppMetadataRepository.kt +++ b/feature-dapp-api/src/main/java/io/novafoundation/nova/feature_dapp_api/data/repository/DAppMetadataRepository.kt @@ -6,6 +6,8 @@ import kotlinx.coroutines.flow.Flow interface DAppMetadataRepository { + suspend fun isDAppsSynced(): Boolean + suspend fun syncDAppMetadatas() suspend fun syncAndGetDapp(baseUrl: String): DappMetadata? @@ -20,3 +22,11 @@ interface DAppMetadataRepository { fun observeDAppCatalog(): Flow } + +suspend fun DAppMetadataRepository.getDAppIfSyncedOrSync(baseUrl: String): DappMetadata? { + return if (isDAppsSynced()) { + getDAppMetadata(baseUrl) + } else { + syncAndGetDapp(baseUrl) + } +} diff --git a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/RealDAppMetadataRepository.kt b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/RealDAppMetadataRepository.kt index 6064711a70..e977695b15 100644 --- a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/RealDAppMetadataRepository.kt +++ b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/RealDAppMetadataRepository.kt @@ -24,6 +24,10 @@ class RealDAppMetadataRepository( private val dappMetadatasFlow = MutableSharedFlow(replay = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST) + override suspend fun isDAppsSynced(): Boolean { + return dappMetadatasFlow.first().dApps.isNotEmpty() + } + override suspend fun syncDAppMetadatas() { val response = retryUntilDone { dappMetadataApi.getParachainMetadata(remoteApiUrl) } val dappMetadatas = mapDAppMetadataResponseToDAppMetadatas(response) diff --git a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/tabs/RealBrowserTabRepository.kt b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/tabs/RealBrowserTabRepository.kt index 372109b757..f64c320e5c 100644 --- a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/tabs/RealBrowserTabRepository.kt +++ b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/tabs/RealBrowserTabRepository.kt @@ -52,11 +52,11 @@ class RealBrowserTabRepository( } override suspend fun changeCurrentUrl(tabId: String, url: String) { - browserTabsDao.updateCurrentUrl(tabId, url) + withContext(Dispatchers.Default) { browserTabsDao.updateCurrentUrl(tabId, url) } } override suspend fun changeKnownDAppMetadata(tabId: String, dappIconUrl: String?) { - browserTabsDao.updateKnownDAppMetadata(tabId, dappIconUrl) + withContext(Dispatchers.Default) { browserTabsDao.updateKnownDAppMetadata(tabId, dappIconUrl) } } } diff --git a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/utils/tabs/RealBrowserTabService.kt b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/utils/tabs/RealBrowserTabService.kt index bf1943e836..08bd6523f6 100644 --- a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/utils/tabs/RealBrowserTabService.kt +++ b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/utils/tabs/RealBrowserTabService.kt @@ -5,6 +5,7 @@ import io.novafoundation.nova.common.utils.Urls import io.novafoundation.nova.common.utils.coroutines.RootScope import io.novafoundation.nova.feature_account_api.domain.interfaces.AccountRepository import io.novafoundation.nova.feature_dapp_api.data.repository.DAppMetadataRepository +import io.novafoundation.nova.feature_dapp_api.data.repository.getDAppIfSyncedOrSync import io.novafoundation.nova.feature_dapp_impl.data.repository.tabs.BrowserTabInternalRepository import io.novafoundation.nova.feature_dapp_impl.utils.tabs.models.BrowserTab import io.novafoundation.nova.feature_dapp_impl.utils.tabs.models.CurrentTabState @@ -23,7 +24,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class RealBrowserTabService( private val dAppMetadataRepository: DAppMetadataRepository, @@ -47,9 +47,8 @@ class RealBrowserTabService( override val tabStateFlow = combine( selectedTabIdFlow, - accountRepository.selectedMetaAccountFlow(), allTabsFlow - ) { selectedTabId, metaAccount, allTabs -> + ) { selectedTabId, allTabs -> TabsState( tabs = allTabs.values.toList(), selectedTab = currentTabState(selectedTabId, allTabs) @@ -82,12 +81,14 @@ class RealBrowserTabService( metaId = accountRepository.getSelectedMetaAccount().id, pageSnapshot = PageSnapshot.fromName(Urls.domainOf(url)), currentUrl = url, - knownDAppMetadata = getKnownDappMetadata(url), + knownDAppMetadata = null, creationTime = Date() ) browserTabInternalRepository.saveTab(tab) + syncKnownDAppMetadata(tab.id, url) + return tab } @@ -144,14 +145,11 @@ class RealBrowserTabService( if (url == null) return launch { - withContext(Dispatchers.Default) { - activeSessions[tabId].currentUrl = url - browserTabInternalRepository.changeCurrentUrl(tabId, url) - - val metadata = getKnownDappMetadata(url) - browserTabInternalRepository.changeKnownDAppMetadata(tabId, metadata?.iconLink) - } + activeSessions[tabId].currentUrl = url + browserTabInternalRepository.changeCurrentUrl(tabId, url) } + + syncKnownDAppMetadata(tabId, url) } private fun makeTabSnapshot(tabId: String) { @@ -166,8 +164,16 @@ class RealBrowserTabService( } } + private fun syncKnownDAppMetadata(tabId: String, url: String) { + launch { + getKnownDappMetadata(url)?.let { + browserTabInternalRepository.changeKnownDAppMetadata(tabId, it.iconLink) + } + } + } + private suspend fun getKnownDappMetadata(url: String): BrowserTab.KnownDAppMetadata? { - return dAppMetadataRepository.getDAppMetadata(Urls.normalizeUrl(url))?.let { + return dAppMetadataRepository.getDAppIfSyncedOrSync(Urls.normalizeUrl(url))?.let { BrowserTab.KnownDAppMetadata(it.iconLink) } } From 07590a96d4ae9e72acc9452b9f66ba5af53a5623 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Tue, 21 Jan 2025 08:17:35 +0100 Subject: [PATCH 6/7] Fixed pr notes --- .../data/repository/RealDAppMetadataRepository.kt | 2 +- .../feature_dapp_impl/utils/tabs/RealBrowserTabService.kt | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/RealDAppMetadataRepository.kt b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/RealDAppMetadataRepository.kt index e977695b15..8c999fc981 100644 --- a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/RealDAppMetadataRepository.kt +++ b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/data/repository/RealDAppMetadataRepository.kt @@ -25,7 +25,7 @@ class RealDAppMetadataRepository( private val dappMetadatasFlow = MutableSharedFlow(replay = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST) override suspend fun isDAppsSynced(): Boolean { - return dappMetadatasFlow.first().dApps.isNotEmpty() + return dappMetadatasFlow.replayCache.isNotEmpty() } override suspend fun syncDAppMetadatas() { diff --git a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/utils/tabs/RealBrowserTabService.kt b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/utils/tabs/RealBrowserTabService.kt index 08bd6523f6..7fc9e2381b 100644 --- a/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/utils/tabs/RealBrowserTabService.kt +++ b/feature-dapp-impl/src/main/java/io/novafoundation/nova/feature_dapp_impl/utils/tabs/RealBrowserTabService.kt @@ -75,6 +75,8 @@ class RealBrowserTabService( selectTab(null) } + // Create a new browser tab and save it to persistent storage + // Then we sync dapp metadata for this tab asynchronously to not block tab creation override suspend fun createNewTab(url: String): BrowserTab { val tab = BrowserTab( id = UUID.randomUUID().toString(), @@ -87,7 +89,7 @@ class RealBrowserTabService( browserTabInternalRepository.saveTab(tab) - syncKnownDAppMetadata(tab.id, url) + deferredSyncKnownDAppMetadata(tab.id, url) return tab } @@ -149,7 +151,7 @@ class RealBrowserTabService( browserTabInternalRepository.changeCurrentUrl(tabId, url) } - syncKnownDAppMetadata(tabId, url) + deferredSyncKnownDAppMetadata(tabId, url) } private fun makeTabSnapshot(tabId: String) { @@ -164,7 +166,7 @@ class RealBrowserTabService( } } - private fun syncKnownDAppMetadata(tabId: String, url: String) { + private fun deferredSyncKnownDAppMetadata(tabId: String, url: String) { launch { getKnownDappMetadata(url)?.let { browserTabInternalRepository.changeKnownDAppMetadata(tabId, it.iconLink) From 7e4cf5f5cb714cf8593ccf8cb4aac9b607e9eea6 Mon Sep 17 00:00:00 2001 From: antonijzelinskij Date: Tue, 21 Jan 2025 10:24:32 +0100 Subject: [PATCH 7/7] Update build.gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f21ba67b79..7de2d946fd 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ buildscript { ext { // App version versionName = '9.2.1' - versionCode = 170 + versionCode = 171 applicationId = "io.novafoundation.nova" releaseApplicationSuffix = "market"