Skip to content
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
2 changes: 2 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ NEXT_PUBLIC_FIAT_ON_RAMP=true
NEXT_PUBLIC_IS_CYPRESS_ENABLED=false
NEXT_PUBLIC_AMPLITUDE_API_KEY=6b28cb736c53d59f0951a50f59597aae
NEXT_PUBLIC_PRIVATE_RPC_ENABLED=false
# e.g. 0xabc...,proto_base_v3:0xdef...
NEXT_PUBLIC_HIDDEN_RESERVES=



Expand Down
14 changes: 14 additions & 0 deletions pages/reserve-overview.page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
import { AssetCapsProvider } from 'src/hooks/useAssetCaps';
import { AssetCapsProviderSDK } from 'src/hooks/useAssetCapsSDK';
import { MainLayout } from 'src/layouts/MainLayout';
import { isAssetHidden } from 'src/modules/dashboard/lists/constants';
import { ReserveActions } from 'src/modules/reserve-overview/ReserveActions';
import { ReserveConfigurationWrapper } from 'src/modules/reserve-overview/ReserveConfigurationWrapper';
import { ReserveTopDetailsWrapper } from 'src/modules/reserve-overview/ReserveTopDetailsWrapper';
Expand Down Expand Up @@ -51,6 +52,15 @@ export default function ReserveOverview() {

const [mode, setMode] = useState<'overview' | 'actions' | ''>('overview');
const trackEvent = useRootStore((store) => store.trackEvent);
const currentMarket = useRootStore((store) => store.currentMarket);

const reserveHidden = !!underlyingAsset && isAssetHidden(currentMarket, underlyingAsset);

useEffect(() => {
if (router.isReady && reserveHidden) {
router.replace('/markets');
}
}, [router, reserveHidden]);

//With SDK
const reserve = supplyReserves.find((reserve) => {
Expand All @@ -76,6 +86,10 @@ export default function ReserveOverview() {

const isOverview = mode === 'overview';

if (reserveHidden) {
return null;
}

return (
<AssetCapsProviderSDK asset={reserve}>
<ReserveTopDetailsWrapper underlyingAsset={underlyingAsset} />
Expand Down
38 changes: 37 additions & 1 deletion src/modules/dashboard/lists/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,45 @@ import { CustomMarket } from 'src/ui-config/marketsConfig';
export const HIDDEN_ASSETS: Partial<Record<CustomMarket, string[]>> = {
[CustomMarket.proto_horizon_v3]: [
'0x17418038ecf73ba4026c4f428547bf099706f27b'.toLowerCase(), // aCRED
'0x7433806912Eae67919e66aea853d46Fa0aef98A8'.toLowerCase(),
],
};

const parseHiddenReservesEnv = () => {
const global = new Set<string>();
const byMarket: Partial<Record<CustomMarket, Set<string>>> = {};

const raw = process.env.NEXT_PUBLIC_HIDDEN_RESERVES;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should add typed env vars as in v4 in a separated pr ofc

if (!raw) {
return { global, byMarket };
}

raw
.split(',')
.map((entry) => entry.trim())
.filter(Boolean)
.forEach((entry) => {
const [first, second] = entry.split(':').map((part) => part.trim());
if (second) {
const market = first as CustomMarket;
const address = second.toLowerCase();
if (!address) return;
(byMarket[market] ??= new Set<string>()).add(address);
} else if (first) {
global.add(first.toLowerCase());
}
});

return { global, byMarket };
};

const { global: ENV_HIDDEN_GLOBAL, byMarket: ENV_HIDDEN_BY_MARKET } = parseHiddenReservesEnv();

export const isAssetHidden = (market: CustomMarket, underlyingAsset: string) => {
return HIDDEN_ASSETS[market]?.includes(underlyingAsset.toLowerCase());
const address = underlyingAsset.toLowerCase();
return Boolean(
HIDDEN_ASSETS[market]?.includes(address) ||
ENV_HIDDEN_GLOBAL.has(address) ||
ENV_HIDDEN_BY_MARKET[market]?.has(address)
);
};
Loading