Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
24028e4
Bump chromedriver from 143.0.2 to 143.0.3 in /packages/e2e-tests
dependabot[bot] Dec 26, 2025
6f890d1
Merge pull request #4480 from Emurgo/dependabot/npm_and_yarn/packages…
Nebyt Dec 26, 2025
ba54699
chore: YW-440 Implement Cardano card popup
loxator Dec 30, 2025
f2815c0
fix: ignore flow lint
loxator Dec 30, 2025
c4edb73
fix: prevent duplicate execution of Cardano card announcement modal
loxator Dec 30, 2025
793677f
minor UI tweaks
Nebyt Dec 30, 2025
7a210e8
fix cursor suggestion
Nebyt Dec 30, 2025
10512c9
hide the popup in tests
Nebyt Dec 30, 2025
9b66209
fix: increment count once per app open instead of once per component …
loxator Dec 30, 2025
7caa948
handle failed status from the thaw schedule endpoint
yushih Jan 5, 2026
7f0718f
fix
yushih Jan 5, 2026
2620ae5
fix second click on the Receive tab causing the infinite load of the …
yushih Jan 6, 2026
8304c16
fix NFT page layout to prevent image size change
yushih Jan 8, 2026
77dcdee
Bump chromedriver from 143.0.3 to 143.0.4 in /packages/e2e-tests
dependabot[bot] Jan 9, 2026
a3983d4
Merge pull request #4485 from Emurgo/dependabot/npm_and_yarn/packages…
Nebyt Jan 12, 2026
7c01b76
Merge branch 'develop' into chore/YW-440
Nebyt Jan 12, 2026
cda66c2
Merge pull request #4481 from Emurgo/chore/YW-440
Nebyt Jan 12, 2026
e4c8c86
Merge branch 'develop' into feat/YW-444/failed-thaw
Nebyt Jan 12, 2026
98f2a2d
Merge pull request #4482 from Emurgo/feat/YW-444/failed-thaw
Nebyt Jan 12, 2026
0521ec9
Merge branch 'develop' into fix/YW-26/receive-page-infinite-load
Nebyt Jan 12, 2026
04ac972
Merge pull request #4483 from Emurgo/fix/YW-26/receive-page-infinite-…
Nebyt Jan 12, 2026
93e8756
Merge branch 'develop' into fix/YW-332/nft-detail-layout
Nebyt Jan 12, 2026
3bcc64b
made changes to fit an image into the box
Nebyt Jan 12, 2026
c88a2ba
New translations en-us.json (ja-JP)
stackchain Jan 12, 2026
363fd1a
New translations en-us.json (fr-FR)
stackchain Jan 12, 2026
518d413
New translations en-us.json (Spanish)
stackchain Jan 12, 2026
3e36e06
New translations en-us.json (de-DE)
stackchain Jan 12, 2026
0f6f823
New translations en-us.json (ko-KR)
stackchain Jan 12, 2026
b6737b4
New translations en-us.json (ru-RU)
stackchain Jan 12, 2026
7be0a9f
New translations en-us.json (zh-Hans)
stackchain Jan 12, 2026
6f1f128
New translations en-us.json (Vietnamese)
stackchain Jan 12, 2026
f34bf8f
New translations en-us.json (Portuguese, Brazilian)
stackchain Jan 12, 2026
58521e3
New translations en-us.json (id-ID)
stackchain Jan 12, 2026
903c036
Merge branch 'develop' into l10n_develop
Nebyt Jan 12, 2026
c9589bf
fix format
Nebyt Jan 12, 2026
06867ea
Merge pull request #4486 from Emurgo/l10n_develop
Nebyt Jan 12, 2026
faff1fd
Merge branch 'develop' into fix/YW-332/nft-detail-layout
Nebyt Jan 12, 2026
d8f8045
fit image only on Details page
Nebyt Jan 13, 2026
61cd91b
Merge pull request #4484 from Emurgo/fix/YW-332/nft-detail-layout
Nebyt Jan 13, 2026
aa4e2d6
use portfolioPercentage instead of percentage
Nebyt Jan 13, 2026
cc34a5a
fix percentage sorting order and improve readability
Nebyt Jan 13, 2026
c69f1ec
fix some TS notes
Nebyt Jan 13, 2026
724577c
return test for precentage sorting
Nebyt Jan 13, 2026
14d779c
add more optional chaining
Nebyt Jan 14, 2026
3e89ccc
removed repeated parts
Nebyt Jan 14, 2026
af40022
process case when both tokens are special and have no percentage
Nebyt Jan 14, 2026
7f455f3
Merge pull request #4487 from Emurgo/fix/YW-333/percentage-sorting
Nebyt Jan 14, 2026
e06aa33
new scheme for selecting redemption utxos
yushih Jan 15, 2026
765602d
lint
yushih Jan 15, 2026
cc9fd6c
Merge pull request #4488 from Emurgo/refactor/YW-447/redemption-tx-utxos
Nebyt Jan 15, 2026
d336551
fix a send blocker
yushih Jan 19, 2026
ba75dbe
add ada handles request
SorinC6 Jan 20, 2026
5add0bc
Merge branch 'develop' into YW-164/ada-handles
Nebyt Jan 20, 2026
06b241a
Merge pull request #4489 from Emurgo/fix/YW-295
Nebyt Jan 20, 2026
81ff5f1
add strings
SorinC6 Jan 20, 2026
870808b
Merge branch 'develop' into YW-164/ada-handles
Nebyt Jan 20, 2026
8eb977d
fix format
Nebyt Jan 20, 2026
532f485
Merge pull request #4490 from Emurgo/YW-164/ada-handles
Nebyt Jan 20, 2026
dd2a9a5
New translations en-us.json (ja-JP)
stackchain Jan 20, 2026
e08b367
New translations en-us.json (fr-FR)
stackchain Jan 20, 2026
847f5e0
New translations en-us.json (Spanish)
stackchain Jan 20, 2026
e4bb22a
New translations en-us.json (de-DE)
stackchain Jan 20, 2026
91a1898
New translations en-us.json (ko-KR)
stackchain Jan 20, 2026
fd1b653
New translations en-us.json (ru-RU)
stackchain Jan 20, 2026
e54552e
New translations en-us.json (zh-Hans)
stackchain Jan 20, 2026
bdc5696
New translations en-us.json (Vietnamese)
stackchain Jan 20, 2026
32a3867
New translations en-us.json (Portuguese, Brazilian)
stackchain Jan 20, 2026
7c42963
New translations en-us.json (id-ID)
stackchain Jan 20, 2026
9d1443d
Merge branch 'develop' into l10n_develop
Nebyt Jan 20, 2026
6574bc0
Merge pull request #4491 from Emurgo/l10n_develop
Nebyt Jan 20, 2026
dd5c321
fix nft explorer url
Nebyt Jan 23, 2026
633f11d
Merge pull request #4494 from Emurgo/fix/wrong-token-link
Nebyt Jan 23, 2026
52f54e1
Version bump: 5.20.0.1 (nightly)
Nebyt Jan 23, 2026
b6d8406
Merge pull request #4495 from Emurgo/bump/release/5.21
Nebyt Jan 23, 2026
4de2b8e
update portfolio package
Nebyt Jan 26, 2026
cf55b30
Merge pull request #4496 from Emurgo/fix/update-portfolio-pkg
Nebyt Jan 26, 2026
ab958b2
Version bump: 5.20.0.2 (nightly)
Nebyt Jan 26, 2026
568133c
Merge pull request #4497 from Emurgo/bump/release/5.21
Nebyt Jan 26, 2026
23f5a99
chore: bump version to 5.21.0
loxator Jan 27, 2026
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: 1 addition & 1 deletion packages/e2e-tests/helpers/portfolioHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ export const Columns = Object.freeze({
Day: '24h',
Week: '1W',
Month: '1M',
Percentage: 'portfolioPercentage',
Total: 'totalAmount',
Percentage: 'portfolioPercents',
});
export const RedirectionButtons = Object.freeze({
Receive: 'receive',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@
"test-CURRENT_NETWORK_ID": "250",
"test-DREP_YOROI_BANNER": "{'1':2525115600000}",
"test-MIDNIGHT_BANNER_PHASE2_CLOSED": "true",
"SURVEY_DISMISSED": "true"
"SURVEY_DISMISSED": "true",
"APP_OPENED_COUNT": "10"
}
8 changes: 4 additions & 4 deletions packages/e2e-tests/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/e2e-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
"@emurgo/cardano-serialization-lib-nodejs": "13.2.1",
"bignumber.js": "^9.1.2",
"chai": "^4.3.10",
"chromedriver": "143.0.2",
"chromedriver": "143.0.4",
"cross-env": "^7.0.3",
"dockerode": "^4.0.5",
"json-server": "^0.17.4",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,6 @@ describe('Portfolio Sorting columns', function () {

for (const columnName in Columns) {
it(`Sort by column ${columnName} and check sorting`, async function () {
if (Columns[columnName] === Columns.Percentage) {
console.warn(
'Skipping sorting check on Percentage column until the issue https://emurgo.atlassian.net/browse/YOEXT-2289 is fixed'
);
this.skip();
}
await portfolioMainPage.sortBy(Columns[columnName]);
const arrowSortingDirection = await portfolioMainPage.getSortingArrowDirection(Columns[columnName]);
const columnsRawValues = await portfolioMainPage.getColumnValues(Columns[columnName]);
Expand Down
1 change: 1 addition & 0 deletions packages/yoroi-extension/app/UI/common/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ export enum BannerType {
export const SUPPORT_CRISP_CHATBOX_URL = 'https://emurgo.github.io/yoroi-crisp-support/';
export const MIDNIGHT_PHASE2_URL = 'https://www.midnight.gd/';
export const HIDDEN_AMOUNT = '******';
export const CARDANO_CARD_URL = 'https://cardanocard.io/';
20 changes: 20 additions & 0 deletions packages/yoroi-extension/app/UI/common/hooks/useStrings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,22 @@ export const messages = Object.freeze(
id: 'banners.rewards.button',
defaultMessage: '!!! Earn ADA',
},
cardanoCard: {
id: 'banners.cardanoCard.desc',
defaultMessage: '!!!Pay. Earn. Borrow. Stake. Access the new era of crypto spending. Activate your Cardano Card today.',
},
cardanoCardTitle: {
id: 'banners.cardanoCard.title',
defaultMessage: '!!!Cardano Card',
},
cardanoCardSubtitle: {
id: 'banners.cardanoCard.subtitle',
defaultMessage: '!!!Cardano Card Has Arrived',
},
cardanoCardGetTheCard: {
id: 'banners.cardanoCard.getTheCard',
defaultMessage: '!!!Get the card',
},
})
);

Expand Down Expand Up @@ -193,5 +209,9 @@ export const useStrings = () => {
earnRewards: intl.formatMessage(messages.earnRewards),
delegateRewards: intl.formatMessage(messages.delegateRewards),
rewardsButton: intl.formatMessage(messages.rewardsButton),
cardanoCard: intl.formatMessage(messages.cardanoCard),
cardanoCardTitle: intl.formatMessage(messages.cardanoCardTitle),
cardanoCardSubtitle: intl.formatMessage(messages.cardanoCardSubtitle),
cardanoCardGetTheCard: intl.formatMessage(messages.cardanoCardGetTheCard),
}).current;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
import { Typography, Button, Grid, Stack, Link } from '@mui/material';
import { styled } from '@mui/material/styles';
import { useModal } from '../modals/ModalContext';
import { useEffect } from 'react';
import CardanoCardImage from './CardanoCardImage.png';
import LocalStorageApi from '../../../api/localStorage/index';
import { useStrings } from '../../common/hooks/useStrings';
import { CARDANO_CARD_URL } from '../../common/constants';
import { useYoroiRemoteConfig } from '../../common/hooks/useYoroiRemoteConfig';

let hasProcessedThisSession = false;

export const CardanoCardDialog = () => {
const strings = useStrings();
const { openModal, closeModal } = useModal();
const { data } = useYoroiRemoteConfig();

useEffect(() => {
const checkModalState = async () => {
const localStorage = new LocalStorageApi();
const appOpenedCount = await localStorage.getAppOpenedCount();

if (!data?.popups?.cardanoCardAnnouncement?.display || hasProcessedThisSession) return;

// Mark as processed to prevent re-execution on data refetches and component remounts
hasProcessedThisSession = true;
if (appOpenedCount === undefined || appOpenedCount === null) {
localStorage.setAppOpenedCount('1');
} else {
localStorage.setAppOpenedCount(String(Number(appOpenedCount) + 1));
}

if (!appOpenedCount || appOpenedCount === '4') {
openModal({
title: strings.cardanoCardTitle,
height: '550px',
width: '612px',
content: (
<CardanoCardContent
onClose={() => {
closeModal();
}}
/>
),
modalId: 'cardanoCard',
onClose: () => {
closeModal();
},
});
}
};

checkModalState();
}, [data]);
Copy link

Choose a reason for hiding this comment

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

Missing cleanup for async operations in useEffect

Medium Severity

The useEffect runs an async function that performs localStorage operations and potentially calls openModal, but lacks a cleanup function to handle component unmount. If the component unmounts or data changes while the async operation is in progress, it will continue executing and attempt to call openModal and update the module-level hasProcessedThisSession variable after unmount, potentially causing memory leaks and unexpected modal behavior.

Fix in Cursor Fix in Web


return null;
};

const CardanoCardContent = ({ onClose }) => {
const strings = useStrings();
return (
<Stack>
<Stack direction="column" alignItems="center" justifyContent="center" pb="24px">
<Stack my={48}>
<img src={CardanoCardImage} alt="Cardano Card Illustration" />
</Stack>

<Typography variant="h5" color="ds.text_gray_medium" fontWeight={500} mb="8px">
{strings.cardanoCardSubtitle}
</Typography>
<Typography variant="body1" color="ds.text_gray_medium" textAlign="center" mx="24px" sx={{ whiteSpace: 'pre' }}>
{strings.cardanoCard}
</Typography>
</Stack>

<Grid justifyContent="space-between" direction="column" style={{ marginTop: 18 }}>
<Link href={CARDANO_CARD_URL} target="_blank" rel="noopener noreferrer" onClick={onClose}>
<CustomButton variant="contained" color="primary">
{strings.cardanoCardGetTheCard}
</CustomButton>
</Link>
</Grid>
</Stack>
);
};

const CustomButton = styled(Button)(() => ({
width: '100%',
fontSize: '16px',
lineHeight: '22px',
}));
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@ export const messages = Object.freeze(
id: 'airdrop.schedule.redeemed',
defaultMessage: '!!!Redeemed',
},
failed: {
id: 'airdrop.schedule.failed',
defaultMessage: '!!!Failed',
},
thawExplanation: {
id: 'airdrop.schedule.thawExplanation',
defaultMessage: '!!!Each thaw is 25% of your claimed NIGHT allocation',
Expand Down Expand Up @@ -279,6 +283,7 @@ export const useStrings = () => {
thawTitle: (index: number, total: number) => intl.formatMessage(messages.thawTitle, { index, total }),
notAvailable: intl.formatMessage(messages.notAvailable),
redeemed: intl.formatMessage(messages.redeemed),
failed: intl.formatMessage(messages.failed),
thawExplanation: intl.formatMessage(messages.thawExplanation),
statusLabel: intl.formatMessage(messages.statusLabel),
subTitle: intl.formatMessage(messages.subTitle),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,16 +158,17 @@ function formatDate(dateString: string, locale: string): string {
}

function getCurrentThawIndex(schedule: Schedule): number {
const redeemableIndex = schedule.thaws.findIndex(thaw => thaw.status === 'redeemable');
const redeemableIndex = schedule.thaws.findIndex(thaw => thaw.status === 'redeemable' || thaw.status === 'failed');
if (redeemableIndex >= 0) return redeemableIndex;
const upcomingIndex = schedule.thaws.findIndex(thaw => thaw.status === 'upcoming');
const upcomingIndex = schedule.thaws.findIndex(thaw => thaw.status === 'upcoming' || thaw.status === 'failed');
Copy link

Choose a reason for hiding this comment

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

Redundant failed status check in getCurrentThawIndex

Low Severity

The || thaw.status === 'failed' condition in the second findIndex call is redundant. If any thaw has status 'failed', it would already be found by the first findIndex on line 161, and the function would return before reaching line 163. This dead code adds unnecessary complexity.

Fix in Cursor Fix in Web

if (upcomingIndex >= 0) return upcomingIndex;
return 0;
}

type ThawStatus = 'redeemable' | 'confirmed' | 'upcoming';
type ThawStatus = 'redeemable' | 'confirmed' | 'upcoming' | 'failed';

function getThawStatusType(status: string): ThawStatus {
if (status === 'failed') return 'failed';
if (status === 'redeemable') return 'redeemable';
if (status === 'confirmed') return 'confirmed';
return 'upcoming';
Expand Down Expand Up @@ -202,6 +203,8 @@ function getStatusMessage(status: ThawStatus, strings: ReturnType<typeof useStri
return strings.redeemable;
case 'confirmed':
return strings.redeemed;
case 'failed':
return strings.failed;
default:
return strings.notAvailable;
}
Expand Down Expand Up @@ -238,6 +241,7 @@ function ScheduleCard({ schedule }: { schedule: Schedule }) {
const isCurrent = index === currentThawIndex;
const isPast = index < currentThawIndex;
const isLast = index === totalThaws - 1;
const isFailed = thaw.status === 'failed';

return (
<Box key={index} sx={{ flex: 1, position: 'relative' }}>
Expand All @@ -251,15 +255,30 @@ function ScheduleCard({ schedule }: { schedule: Schedule }) {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
backgroundColor: isPast ? 'ds.primary_300' : isCurrent ? 'ds.primary_500' : 'ds.gray_200',
backgroundColor: isFailed
? 'ds.gray_200'
: isPast
? 'ds.primary_300'
: isCurrent
? 'ds.primary_500'
: 'ds.gray_200',
color: isPast || isCurrent ? 'ds.white_static' : 'ds.text_gray_min',
fontSize: '12px',
fontWeight: 500,
zIndex: 1,
flexShrink: 0,
}}
>
{isPast ? (
{isFailed ? (
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 16 16" fill="none">
<path
fill-rule="evenodd"
clip-rule="evenodd"
Copy link

Choose a reason for hiding this comment

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

Inconsistent SVG attribute naming convention

Low Severity

The SVG path uses hyphenated attributes fill-rule and clip-rule (lines 275-276) while another SVG path in the same component uses camelCase fillRule and clipRule (lines 285-286). In React/JSX, SVG attributes should consistently use camelCase notation.

Fix in Cursor Fix in Web

d="M4.29289 4.29289C4.68342 3.90237 5.31658 3.90237 5.70711 4.29289L8 6.58579L10.2929 4.29289C10.6834 3.90237 11.3166 3.90237 11.7071 4.29289C12.0976 4.68342 12.0976 5.31658 11.7071 5.70711L9.41421 8L11.7071 10.2929C12.0976 10.6834 12.0976 11.3166 11.7071 11.7071C11.3166 12.0976 10.6834 12.0976 10.2929 11.7071L8 9.41421L5.70711 11.7071C5.31658 12.0976 4.68342 12.0976 4.29289 11.7071C3.90237 11.3166 3.90237 10.6834 4.29289 10.2929L6.58579 8L4.29289 5.70711C3.90237 5.31658 3.90237 4.68342 4.29289 4.29289Z"
fill="#FF0000"
/>
</svg>
) : isPast ? (
<Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 16 16" fill="none">
<path
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Dialog from '../../../../components/widgets/Dialog';
import { Typography, Box, Button } from '@mui/material';
import { useEffect, useState, useRef } from 'react';
import { getCollateralUtxos, getRedemptionTransaction } from '../../../../api/ada/midnight';
import { getRedemptionUtxos, getRedemptionTransaction } from '../../../../api/ada/midnight';
import { useStrings } from '../common/hooks/useStrings';
import LoadingSpinner from '../../../../components/widgets/LoadingSpinner';
import { formatNumberExactly } from '../../../../api/ada/midnightRedemption';
Expand All @@ -23,7 +23,7 @@ export default function Redeem(props: {
const abort = useRef(false);

const updateCollateralUtxos = async (reorgTxId?: string) => {
const result = await getCollateralUtxos(props.wallet);
const result = await getRedemptionUtxos(props.wallet);
setGetCollateralUtxosResult(result);
if (result.state === 'exist') {
// we just submitted the re-org tx, wait for it to be confirmed
Expand All @@ -44,8 +44,8 @@ export default function Redeem(props: {
props.address,
props.endpoint,
result.fundingUtxoAddr,
result.collateralUtxos,
[result.fundingUtxo]
[],
result.fundingUtxos
Copy link

Choose a reason for hiding this comment

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

Dead code after midnight API refactoring

Medium Severity

The getRedemptionUtxos function (renamed from getCollateralUtxos) now only returns states 'exist' or 'not-enough', but Redeem.tsx still contains handling for the removed 'need-reorg' and 'error' states. This creates unreachable code branches including a UI button, and renders the isWaitingForReorgTxToConfirm state variable useless since it can only be set to true in the dead need-reorg branch.

Additional Locations (1)

Fix in Cursor Fix in Web

);
if (abort.current) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export default function NftCard({ ipfsUrl, name, onClick, nftPathId }: NftCardPr
id={`${nftPathId}-component-button`}
>
<Box sx={{ borderRadius: '4px', overflow: 'hidden', flex: '1 1 auto' }}>
<NftImage imageUrl={ipfsUrl} name={name} width="100%" height="100%" nftPathId={nftPathId} />
<NftImage imageUrl={ipfsUrl} name={name} width="100%" height="100%" nftPathId={nftPathId} fillBox={true} />
</Box>
<Box>
<Typography
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,26 @@ interface NftImageProps {
maxWidth?: string;
maxHeight?: string;
contentHeight?: string;
contentWidth?: string;
nftPathId: string;
imageSx?: SxProps;
onClickHandler?: () => void;
cursor?: string;
fillBox?: boolean;
}

export default function NftImage({
imageUrl,
name,
contentHeight,
contentWidth,
nftPathId,
width = 'auto',
height = 'auto',
imageSx = {},
onClickHandler,
cursor = 'default',
fillBox = false,
}: NftImageProps) {
const [loading, setLoading] = useState(true);
const [error, setError] = useState(false);
Expand All @@ -50,7 +54,7 @@ export default function NftImage({

if (error || url === null)
return (
<SvgWrapper height={contentHeight ? contentHeight : '100%'} id={`${nftPathId}-image-component`}>
<SvgWrapper height={contentHeight ?? '100%'} width={contentWidth ?? '100%'} id={`${nftPathId}-image-component`}>
<DefaultNft />
</SvgWrapper>
);
Expand All @@ -63,7 +67,7 @@ export default function NftImage({
sx={{
width,
height,
objectFit: 'cover',
objectFit: fillBox ? 'cover' : 'contain',
display: 'inline-block',
cursor,
...imageSx,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export const useNfts = () => {
const params = useParams<{ nftId: string | undefined }>();
const network = getNetworkById(selectedWallet?.networkId);
const isHaskell = isCardanoHaskell(network);
const networkUrl: NetworkUrl = isHaskell ? getNetworkUrl(network) : null;
const networkUrl: NetworkUrl = isHaskell ? getNetworkUrl(selectedWallet?.networkId) : null;

useEffect(() => {
if (spendableBalance == null) {
Expand Down
Loading
Loading