bug: hidden reserves are still offered as collateral swap targets
Les mainteneurs répondent en général sous 1 jour
@shivam-V8 y travaille déjà.
Depuis le 11/10/2026.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 88/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- react, typescript
Piste de recherche
Lis getTokensTo dans src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx et compare son filtre avec ceux de src/modules/dashboard/lists/SupplyAssetsList/SupplyAssetsList.tsx et de src/modules/dashboard/lists/Swap/modals/request/DebtSwapModalContent.tsx. Vérifie comment isAssetHidden reçoit le marché actuel, puis vérifie que les réserves masquées sont exclues des destinations du swap de collatéral, tandis que les règles existantes concernant les actifs gelés et en pause, ainsi que GHO, restent appliquées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
Reserves hidden via HIDDEN_ASSETS or the NEXT_PUBLIC_HIDDEN_RESERVES environment variable are still offered as destination assets in the collateral swap modal. Every other asset list in the app filters them out, including the neighbouring debt-swap modal, so this one list is the outlier.
getTokensTo in src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx:217-221 filters only on frozen/paused and the GHO rule:
const tokensToSupply = reserves.filter(
(reserve: ComputedReserveData) =>
!(reserve.isFrozen || reserve.isPaused) &&
!displayGhoForMintableMarket({ symbol: reserve.symbol, currentMarket: currentMarket })
);
The supply list applies the same predicate plus the hidden check (src/modules/dashboard/lists/SupplyAssetsList/SupplyAssetsList.tsx:85-91):
const tokensToSupply = reserves
.filter(
(reserve: ComputedReserveData) =>
!(reserve.isFrozen || reserve.isPaused) &&
!displayGhoForMintableMarket({ symbol: reserve.symbol, currentMarket }) &&
!isAssetHidden(currentMarketData.market, reserve.underlyingAsset)
)
isAssetHidden is defined at src/modules/dashboard/lists/constants.ts:39 and is applied consistently elsewhere — BorrowAssetsList.tsx:104, BorrowedPositionsList.tsx:111, SuppliedPositionsList.tsx:101, MarketAssetsListContainer.tsx:90, and Swap/modals/request/DebtSwapModalContent.tsx:173. Only the collateral-swap target list omits it.
To Reproduce
Steps to reproduce the behavior:
- Deploy (or run locally) with a reserve address listed in
NEXT_PUBLIC_HIDDEN_RESERVES, or use a market with an entry inHIDDEN_ASSETS(e.g. aCRED on Horizon) - Confirm the reserve is correctly absent from "Assets to supply" on the Dashboard
- Open a supplied position's Swap (collateral swap) modal
- Open the destination token selector
- The hidden reserve is listed and can be selected as the swap target
Expected behavior
A reserve hidden by HIDDEN_ASSETS or NEXT_PUBLIC_HIDDEN_RESERVES should not be offered as a collateral-swap destination, matching the supply list and the debt-swap modal.
Screenshots
n/a — reproducible from the source as described above.
Desktop (please complete the following information):
- OS: any
- Browser: any (not browser-specific)
- Version:
main@ 32cc548b9
Smartphone (please complete the following information):
- Device: any
- OS: any
- Browser: any (same code path)
- Version:
main@ 32cc548b9
Additional context
The fix is to add !isAssetHidden(currentMarket, reserve.underlyingAsset) to that filter, mirroring DebtSwapModalContent. One detail: getTokensTo's currentMarket parameter is currently typed string while isAssetHidden takes a CustomMarket; the value passed in is store.currentMarket, which is already a CustomMarket, so the parameter type can simply be narrowed — again matching the debt-swap modal, which types it CustomMarket. Happy to open a PR.
- Langage dominant
- TypeScript
- Étoiles
- 537
- Forks
- 495
- Merge moyen
- 1 j 18 h
- PR mergées (30 j)
- 15
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de aave/interface
-
bug: the current market is missing from the market switcher when it is a legacy marketPeut-être pris @shivam-V8 l’a pris il y a 6 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
Les mainteneurs répondent en général sous 1 jour
-
bug: market switcher search reports "No markets found" for legacy marketsPeut-être pris @shivam-V8 l’a pris il y a 6 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
Staking: "Claim all" Umbrella rewards button removed by v3 upliftPeut-être pris @MrMichou l’a pris il y a 7 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 1 jour
-
Typo: Principle Tokens -> Principal TokensPeut-être pris @Shivamd0608 l’a pris il y a 145 jours. Ouvertebug new issue
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
aave/interface#2861 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
app.aave.com/governance - UI - False 'Payload Executed' Text StampPeut-être pris @shivam-V8 l’a pris il y a 6 jours. Ouvertebug new issue
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
aave/interface#2480 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de aave/interface
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
polarsource/polar#15580 ·
Les mainteneurs répondent en général sous 1 jour
-
accepted bug via-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 69/100
pingdotgg/t3code#20931 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug/1-unconfirmed kind/bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 83/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
ranxianglei/billion-context#3583 ·
Les mainteneurs répondent en général sous 1 jour