Ship LNURL mint pages, indexing UI, and reviews rewrite.
Add lnurl list/detail routes, OG fixtures, i18n strings, and the write/ index client flows so the site surfaces the new mint type end to end. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* The edge cases the template must survive, as synthetic API payloads.
|
||||
*
|
||||
* Run through the same cashuModel/fedimintModel derivation as real data — a fixture
|
||||
* Run through the same cashuModel/fedimintModel/lnurlModel derivation as real data — a fixture
|
||||
* that bypassed the model would test a card no build can produce. `NOW` is pinned so
|
||||
* the rendered PNGs under og-fixtures/ are byte-stable and can live in the repo as
|
||||
* eyeball snapshots.
|
||||
@@ -32,6 +32,31 @@ const base = {
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* The shared shape of an LNURL row's detail payload, as `GET /api/mints/:host` returns
|
||||
* it: the ecosystem fields flattened across the top level, millisatoshi on the wire.
|
||||
*/
|
||||
const lnurlBase = {
|
||||
type: 'lnurl',
|
||||
status: 'online',
|
||||
last_online: NOW - 300,
|
||||
last_probe: NOW - 300,
|
||||
first_seen: NOW - 200 * 86400,
|
||||
review_count: 9,
|
||||
rating_avg: 4.4,
|
||||
rating_distribution: dist(6, 2, 1),
|
||||
last_review_at: NOW - 20 * 86400,
|
||||
features: ['mint', 'melt', 'rotate', 'split', 'merge', 'lud06', 'lud03', 'lud16', 'signed-notes'],
|
||||
network: 'mainnet',
|
||||
mint_pubkey: '021ab89df9cbd28cdab8c71d228ca40deba1eaebd827f24849ec4f3e919c023555',
|
||||
funding_available: true,
|
||||
invalid_reason: null,
|
||||
min_withdrawable_msat: 5_000,
|
||||
max_withdrawable_msat: 999_899_000,
|
||||
lightning_address: 'mint@lnurl.example',
|
||||
};
|
||||
|
||||
export const FIXTURES = [
|
||||
{
|
||||
// A name at the 30-character mark: must step down, never clip.
|
||||
@@ -109,4 +134,42 @@ export const FIXTURES = [
|
||||
network: 'mainnet',
|
||||
status_source: null,
|
||||
},
|
||||
{
|
||||
// The healthy LNURL card: blue glow, LNURL badge, a withdraw range in the third
|
||||
// cell, and the lightning address under it.
|
||||
...lnurlBase,
|
||||
host: 'fixture-lnurl-online',
|
||||
url: 'lnurl:https://lnurl.example',
|
||||
base_url: 'https://lnurl.example',
|
||||
name: null,
|
||||
icon: null,
|
||||
},
|
||||
{
|
||||
// Offline 20 days: red glow beats the blue one, warning cell replaces the range.
|
||||
// The blue badge stays, because which ecosystem it is has not changed.
|
||||
...lnurlBase,
|
||||
host: 'fixture-lnurl-offline',
|
||||
url: 'lnurl:https://lnurl.gone.example',
|
||||
base_url: 'https://lnurl.gone.example',
|
||||
name: 'Departed Notes',
|
||||
icon: null,
|
||||
status: 'offline',
|
||||
last_online: NOW - 20 * 86400,
|
||||
rating_avg: 2.1,
|
||||
rating_distribution: dist(0, 1, 1, 3, 5),
|
||||
review_count: 10,
|
||||
},
|
||||
{
|
||||
// A withdraw ceiling of zero, while ONLINE: green status chip stays, and the
|
||||
// critical warning cell appears anyway. The one card that must never print
|
||||
// "max 0 sat" as though it were a limit.
|
||||
...lnurlBase,
|
||||
host: 'fixture-lnurl-no-withdrawals',
|
||||
url: 'lnurl:https://lnurl.locked.example',
|
||||
base_url: 'https://lnurl.locked.example',
|
||||
name: 'Locked Notes Mint',
|
||||
icon: null,
|
||||
min_withdrawable_msat: 0,
|
||||
max_withdrawable_msat: 0,
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user