isPagedExposuresUsed() called storageCache.getEntry() which suspends
forever if the entry doesn't exist. The flag is only written by
ValidatorExposureUpdater (staking detail flow), so the dashboard
would hang indefinitely waiting for it.
Check cache first with isFullKeyInCache() and default to paged
exposures when the flag is absent. Also remove debug log statements.
When neither paged nor legacy exposures exist for the current era,
ValidatorExposureUpdater returned early without saving the
PagedExposuresUsed flag. This caused storageCache.getEntry() to
suspend indefinitely, blocking the staking setup screen.
Save the flag as false for UNCERTAIN state so downstream code
can proceed with empty exposure data instead of hanging.
- Replace assets.getValue() with safe access in addPricesToDashboard
to prevent NoSuchElementException crash that kills the entire
dashboard flow when any chain asset is missing from the DB
- Log exception details in chain updater catch blocks (was only
logging chain name, swallowing the actual error)
- Add diagnostic logging to track dashboard item counts and missing
assets for debugging
- Add maxAttempts parameter to retryUntilDone (default unlimited for
backward compat), use 5 retries for staking stats fetch
- Catch fetchStakingStats failure in dashboard update system and
fallback to empty stats instead of hanging forever
- Restore stale scope detection in ComputationalCache so cancelled
aggregate scopes are recreated instead of returning stale entries
- Restore staking module to Nova upstream (fix Polkadot ACTIVE/shimmer)
- Add USDT(DOT) <-> USDT(HEZ) bridge option to Buy/Sell screen
- Dashboard card: add telegram_welcome image, info text, Non-Citizen role
- Add non-citizen info text to all 12 locale files
- Simplify ComputationalCache (remove stale scope recreation)
ValidatorProvider, DirectStakingProperties, and DirectStakingRecommendation
were querying Asset Hub chainId for staking data (validators, exposures,
minStake, maxNominations) but these live on the relay chain. Added
chain.parentId resolution so parachain staking correctly routes to relay.
Also:
- Add VoterBagsList pallet support (Pezkuwi naming)
- Wrap BagListRepository queries in runCatching for binding compat
- Remove debug logging
- StakeSummary and Alerts interactors now query elected exposures from
relay chain (parentId) instead of parachain for correct staking status
- Pending rewards flow catches missing NominationPoolsApi and emits zero
- Update Telegram link to @pezkuwichainBot
- Use remote RPC instead of local storage for era/exposure queries
- Resolve relay chain via parentId for exposure, totalIssuance, and parachains
- Remove StorageCache dependency, detect paged exposures via runtime metadata
- Add StakingRepository to NominationPoolRewardCalculatorFactory for direct queries
- Use storageOrNull for null-safety on chains without Paras pallet