Skip to content

Commit 825ff5a

Browse files
committed
✨ bump lumen
1 parent 78c634a commit 825ff5a

15 files changed

Lines changed: 605 additions & 238 deletions

.github/workflows/verify.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ jobs:
3535
- name: Install dependencies
3636
run: pnpm install
3737

38+
- name: Knip
39+
run: pnpm knip
40+
3841
- name: Lint
3942
run: pnpm lint
4043

lib/__mocks__/lumen-ui-react.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ type MediaImageProps = {
55
size?: number;
66
shape?: string;
77
alt?: string;
8+
loading?: boolean;
9+
fallback?: string;
10+
imgLoading?: string;
811
} & ComponentPropsWithRef<'div'>;
912

1013
type DotSymbolProps = {
@@ -18,8 +21,19 @@ type SkeletonProps = {
1821
component?: string;
1922
} & ComponentPropsWithRef<'div'>;
2023

21-
export const MediaImage = ({ src, alt }: MediaImageProps) =>
22-
src ? <img src={src} alt={alt} role="img" /> : <div role="img" />;
24+
export const MediaImage = ({ src, alt, loading, fallback }: MediaImageProps) => {
25+
if (loading) {
26+
return (
27+
<div role="img">
28+
<Skeleton />
29+
</div>
30+
);
31+
}
32+
if (src) {
33+
return <img src={src} alt={alt} role="img" />;
34+
}
35+
return <div role="img">{fallback ? fallback[0]?.toUpperCase() : null}</div>;
36+
};
2337

2438
export const DotSymbol = ({ children, src }: DotSymbolProps) => (
2539
<div>

lib/__tests__/CryptoIcon.test.tsx

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,8 @@ describe('CryptoIcon', () => {
2828
render(<CryptoIcon ledgerId="bitcoin" ticker="BTC" />);
2929

3030
await waitFor(() => {
31-
expect(screen.getByRole('img')).toBeInTheDocument();
31+
expect(screen.getByRole('img')).toHaveAttribute('src', `${CRYPTO_ICONS_CDN_BASE}/BTC.png`);
3232
});
33-
34-
expect(screen.getByRole('img')).toHaveAttribute('src', `${CRYPTO_ICONS_CDN_BASE}/BTC.png`);
3533
});
3634
});
3735

@@ -46,26 +44,22 @@ describe('CryptoIcon', () => {
4644
render(<CryptoIcon ledgerId="bitcoin" ticker="BTC" />);
4745

4846
await waitFor(() => {
49-
expect(screen.getByRole('img')).toBeInTheDocument();
47+
expect(screen.getByRole('img')).toHaveAttribute(
48+
'src',
49+
coinGeckoMock?.find((i) => i.ledgerId === 'bitcoin')?.data.img
50+
);
5051
});
51-
52-
expect(screen.getByRole('img')).toHaveAttribute(
53-
'src',
54-
coinGeckoMock?.find((i) => i.ledgerId === 'bitcoin')?.data.img
55-
);
5652
});
5753

5854
it('renders CoinGecko icon when ledgerId not in CDN', async () => {
5955
render(<CryptoIcon ledgerId="decred" ticker="DCR" />);
6056

6157
await waitFor(() => {
62-
expect(screen.getByRole('img')).toBeInTheDocument();
58+
expect(screen.getByRole('img')).toHaveAttribute(
59+
'src',
60+
coinGeckoMock?.find((i) => i.ledgerId === 'decred')?.data.img
61+
);
6362
});
64-
65-
expect(screen.getByRole('img')).toHaveAttribute(
66-
'src',
67-
coinGeckoMock?.find((i) => i.ledgerId === 'decred')?.data.img
68-
);
6963
});
7064
});
7165

@@ -83,10 +77,8 @@ describe('CryptoIcon', () => {
8377
render(<CryptoIcon ledgerId="bitcoin" ticker="BTC" />);
8478

8579
await waitFor(() => {
86-
expect(screen.getByRole('img')).toBeInTheDocument();
80+
expect(screen.getByRole('img')).toHaveTextContent('B');
8781
});
88-
89-
expect(screen.getByRole('img')).toHaveTextContent('B');
9082
});
9183

9284
it('renders ? when ticker is empty', async () => {
@@ -102,10 +94,8 @@ describe('CryptoIcon', () => {
10294
render(<CryptoIcon ledgerId="bitcoin" ticker="" />);
10395

10496
await waitFor(() => {
105-
expect(screen.getByRole('img')).toBeInTheDocument();
97+
expect(screen.getByRole('img')).toHaveTextContent('?');
10698
});
107-
108-
expect(screen.getByRole('img')).toHaveTextContent('?');
10999
});
110100
});
111101

lib/knip.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"$schema": "https://unpkg.com/knip@6/schema.json",
3+
"entry": ["src/index.native.ts", "scripts/*.{ts,js}"],
4+
"project": ["src/**/*.{ts,tsx}"],
5+
"ignoreDependencies": [
6+
"@storybook/addon-controls",
7+
"@storybook/addon-react-native-web",
8+
"@typescript-eslint/parser",
9+
"babel-loader",
10+
"css-loader",
11+
"postcss-loader",
12+
"react-native-web",
13+
"style-loader",
14+
"zopflipng-bin"
15+
],
16+
"ignoreBinaries": ["sb-rn-get-stories"],
17+
"rules": {
18+
"optionalPeerDependencies": "off"
19+
}
20+
}

lib/package.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"compress": "bash ../compress/compress.sh",
3838
"generate:index:help": "echo \"Generates the index.json file from the '_record.json' file\"",
3939
"generate:index": "tsx scripts/generate_index.ts",
40+
"knip": "knip",
4041
"lint:fix": "eslint 'src/**/*.{ts,tsx}' --fix",
4142
"lint": "eslint 'src/**/*.{ts,tsx}'",
4243
"storybook-generate": "sb-rn-get-stories",
@@ -46,9 +47,9 @@
4647
"test": "jest"
4748
},
4849
"devDependencies": {
49-
"@ledgerhq/lumen-design-core": "^0.1.11",
50-
"@ledgerhq/lumen-ui-react": "^0.1.24",
51-
"@ledgerhq/lumen-ui-rnative": "^0.1.25",
50+
"@ledgerhq/lumen-design-core": "^0.1.13",
51+
"@ledgerhq/lumen-ui-react": "^0.1.31",
52+
"@ledgerhq/lumen-ui-rnative": "^0.1.32",
5253
"@ledgerhq/wallet-api-client": "^1.5.9",
5354
"@rollup/plugin-commonjs": "^26.0.1",
5455
"@rollup/plugin-node-resolve": "^15.2.3",
@@ -80,6 +81,7 @@
8081
"jest": "^29.7.0",
8182
"jest-environment-jsdom": "^29.7.0",
8283
"jsonfile": "^6.2.0",
84+
"knip": "^6.12.2",
8385
"msw": "1.3.3",
8486
"postcss": "^8.4.0",
8587
"postcss-loader": "^8.0.0",

0 commit comments

Comments
 (0)