chore: cleanup / yarn sdks
This commit is contained in:
parent
e8bcba129e
commit
7c8fff97ce
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -15,5 +15,5 @@
|
||||
"typescript.tsdk": ".yarn/sdks/typescript/lib",
|
||||
"typescript.enablePromptUseWorkspaceTsdk": true,
|
||||
"eslint.nodePath": ".yarn/sdks",
|
||||
"prettier.prettierPath": ".yarn/sdks/prettier/index.js"
|
||||
"prettier.prettierPath": ".yarn/sdks/prettier/index.cjs"
|
||||
}
|
||||
|
20
.yarn/sdks/eslint/lib/unsupported-api.js
vendored
Normal file
20
.yarn/sdks/eslint/lib/unsupported-api.js
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const {existsSync} = require(`fs`);
|
||||
const {createRequire} = require(`module`);
|
||||
const {resolve} = require(`path`);
|
||||
|
||||
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||
|
||||
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||
const absRequire = createRequire(absPnpApiPath);
|
||||
|
||||
if (existsSync(absPnpApiPath)) {
|
||||
if (!process.versions.pnp) {
|
||||
// Setup the environment to be able to require eslint/use-at-your-own-risk
|
||||
require(absPnpApiPath).setup();
|
||||
}
|
||||
}
|
||||
|
||||
// Defer to the real eslint/use-at-your-own-risk your application uses
|
||||
module.exports = absRequire(`eslint/use-at-your-own-risk`);
|
12
.yarn/sdks/eslint/package.json
vendored
12
.yarn/sdks/eslint/package.json
vendored
@ -1,6 +1,14 @@
|
||||
{
|
||||
"name": "eslint",
|
||||
"version": "8.48.0-sdk",
|
||||
"version": "8.53.0-sdk",
|
||||
"main": "./lib/api.js",
|
||||
"type": "commonjs"
|
||||
"type": "commonjs",
|
||||
"bin": {
|
||||
"eslint": "./bin/eslint.js"
|
||||
},
|
||||
"exports": {
|
||||
"./package.json": "./package.json",
|
||||
".": "./lib/api.js",
|
||||
"./use-at-your-own-risk": "./lib/unsupported-api.js"
|
||||
}
|
||||
}
|
||||
|
20
.yarn/sdks/prettier/bin/prettier.cjs
vendored
Executable file
20
.yarn/sdks/prettier/bin/prettier.cjs
vendored
Executable file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const {existsSync} = require(`fs`);
|
||||
const {createRequire} = require(`module`);
|
||||
const {resolve} = require(`path`);
|
||||
|
||||
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||
|
||||
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||
const absRequire = createRequire(absPnpApiPath);
|
||||
|
||||
if (existsSync(absPnpApiPath)) {
|
||||
if (!process.versions.pnp) {
|
||||
// Setup the environment to be able to require prettier/bin/prettier.cjs
|
||||
require(absPnpApiPath).setup();
|
||||
}
|
||||
}
|
||||
|
||||
// Defer to the real prettier/bin/prettier.cjs your application uses
|
||||
module.exports = absRequire(`prettier/bin/prettier.cjs`);
|
0
.yarn/sdks/prettier/index.js → .yarn/sdks/prettier/index.cjs
vendored
Executable file → Normal file
0
.yarn/sdks/prettier/index.js → .yarn/sdks/prettier/index.cjs
vendored
Executable file → Normal file
7
.yarn/sdks/prettier/package.json
vendored
7
.yarn/sdks/prettier/package.json
vendored
@ -1,6 +1,7 @@
|
||||
{
|
||||
"name": "prettier",
|
||||
"version": "3.0.3-sdk",
|
||||
"main": "./index.js",
|
||||
"type": "commonjs"
|
||||
"version": "3.1.0-sdk",
|
||||
"main": "./index.cjs",
|
||||
"type": "commonjs",
|
||||
"bin": "./bin/prettier.cjs"
|
||||
}
|
||||
|
6
.yarn/sdks/typescript/lib/typescript.js
vendored
6
.yarn/sdks/typescript/lib/typescript.js
vendored
@ -11,10 +11,10 @@ const absRequire = createRequire(absPnpApiPath);
|
||||
|
||||
if (existsSync(absPnpApiPath)) {
|
||||
if (!process.versions.pnp) {
|
||||
// Setup the environment to be able to require typescript/lib/typescript.js
|
||||
// Setup the environment to be able to require typescript
|
||||
require(absPnpApiPath).setup();
|
||||
}
|
||||
}
|
||||
|
||||
// Defer to the real typescript/lib/typescript.js your application uses
|
||||
module.exports = absRequire(`typescript/lib/typescript.js`);
|
||||
// Defer to the real typescript your application uses
|
||||
module.exports = absRequire(`typescript`);
|
||||
|
6
.yarn/sdks/typescript/package.json
vendored
6
.yarn/sdks/typescript/package.json
vendored
@ -2,5 +2,9 @@
|
||||
"name": "typescript",
|
||||
"version": "5.2.2-sdk",
|
||||
"main": "./lib/typescript.js",
|
||||
"type": "commonjs"
|
||||
"type": "commonjs",
|
||||
"bin": {
|
||||
"tsc": "./bin/tsc",
|
||||
"tsserver": "./bin/tsserver"
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,9 @@ module.exports = {
|
||||
"formatjs/enforce-id": [
|
||||
"error",
|
||||
{
|
||||
"idInterpolationPattern": "[sha512:contenthash:base64:6]"
|
||||
}
|
||||
]
|
||||
idInterpolationPattern: "[sha512:contenthash:base64:6]",
|
||||
},
|
||||
],
|
||||
},
|
||||
root: true,
|
||||
ignorePatterns: ["build/", "*.test.ts", "*.js"],
|
||||
|
@ -5,7 +5,9 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta name="description" content="Feature packed nostr client" />
|
||||
<meta name="keywords" content="nostr snort fast decentralized social media censorship resistant open source software" />
|
||||
<meta
|
||||
name="keywords"
|
||||
content="nostr snort fast decentralized social media censorship resistant open source software" />
|
||||
<link rel="preconnect" href="https://imgproxy.snort.social" />
|
||||
<link rel="apple-touch-icon" href="" />
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
|
@ -107,7 +107,8 @@ export default function CashuNuts({ token }: { token: string }) {
|
||||
</defs>
|
||||
</svg>
|
||||
<FormattedMessage
|
||||
defaultMessage="<h1>{n}</h1> Cashu sats" id="6/SF6e"
|
||||
defaultMessage="<h1>{n}</h1> Cashu sats"
|
||||
id="6/SF6e"
|
||||
values={{
|
||||
h1: c => <h1>{c}</h1>,
|
||||
n: <FormattedNumber value={amount} />,
|
||||
@ -116,7 +117,8 @@ export default function CashuNuts({ token }: { token: string }) {
|
||||
</div>
|
||||
<small className="xs w-max">
|
||||
<FormattedMessage
|
||||
defaultMessage="<b>Mint:</b> {url}" id="zwb6LR"
|
||||
defaultMessage="<b>Mint:</b> {url}"
|
||||
id="zwb6LR"
|
||||
values={{
|
||||
b: c => <b>{c}</b>,
|
||||
url: new URL(cashu.token[0].mint).hostname,
|
||||
|
@ -42,7 +42,8 @@ export default function PubkeyList({ ev, className }: { ev: NostrEvent; classNam
|
||||
Toastore.push({
|
||||
element: (
|
||||
<FormattedMessage
|
||||
defaultMessage="Sent {n} sats to {name}" id="Ig9/a1"
|
||||
defaultMessage="Sent {n} sats to {name}"
|
||||
id="Ig9/a1"
|
||||
values={{
|
||||
n: amtSend,
|
||||
name: getDisplayName(profile, pk),
|
||||
@ -70,7 +71,8 @@ export default function PubkeyList({ ev, className }: { ev: NostrEvent; classNam
|
||||
<>
|
||||
<AsyncButton className="mr5 secondary" onClick={() => zapAll()}>
|
||||
<FormattedMessage
|
||||
defaultMessage="Zap all {n} sats" id="IVbtTS"
|
||||
defaultMessage="Zap all {n} sats"
|
||||
id="IVbtTS"
|
||||
values={{
|
||||
n: <FormattedNumber value={login.appData.item.preferences.defaultZapAmount * ids.length} />,
|
||||
}}
|
||||
|
@ -93,7 +93,8 @@ export function LongFormText(props: LongFormTextProps) {
|
||||
<div className="flex g8">
|
||||
<div>
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} mins to read" id="zm6qS1"
|
||||
defaultMessage="{n} mins to read"
|
||||
id="zm6qS1"
|
||||
values={{
|
||||
n: <FormattedNumber value={readTime().mins} />,
|
||||
}}
|
||||
|
@ -26,7 +26,10 @@ export function NostrFileElement({ ev }: { ev: NostrEvent }) {
|
||||
|
||||
if (u && m) {
|
||||
return (
|
||||
<Reveal message={<FormattedMessage defaultMessage="Click to load content from {link}" id="lsNFM1" values={{ link: u }} />}>
|
||||
<Reveal
|
||||
message={
|
||||
<FormattedMessage defaultMessage="Click to load content from {link}" id="lsNFM1" values={{ link: u }} />
|
||||
}>
|
||||
<MediaElement mime={m} url={u} sha256={x} magnet={magnet} blurHash={blurHash} />
|
||||
</Reveal>
|
||||
);
|
||||
|
@ -91,7 +91,8 @@ export function NoteBroadcaster({
|
||||
onClick={() => retryPublish(r)}
|
||||
className="p4 br-compact flex items-center secondary"
|
||||
title={formatMessage({
|
||||
defaultMessage: "Retry publishing", id: '9kSari',
|
||||
defaultMessage: "Retry publishing",
|
||||
id: "9kSari",
|
||||
})}>
|
||||
<Icon name="refresh-ccw-01" />
|
||||
</AsyncButton>
|
||||
@ -99,7 +100,8 @@ export function NoteBroadcaster({
|
||||
onClick={() => removeRelayFromResult(r)}
|
||||
className="p4 br-compact flex items-center secondary"
|
||||
title={formatMessage({
|
||||
defaultMessage: "Remove from my relays", id: 'UJTWqI',
|
||||
defaultMessage: "Remove from my relays",
|
||||
id: "UJTWqI",
|
||||
})}>
|
||||
<Icon name="trash-01" className="trash-icon" />
|
||||
</AsyncButton>
|
||||
|
@ -52,7 +52,8 @@ export function NoteCreator() {
|
||||
throw new Error(
|
||||
formatMessage(
|
||||
{
|
||||
defaultMessage: "Failed to parse zap split: {input}", id: 'sZQzjQ',
|
||||
defaultMessage: "Failed to parse zap split: {input}",
|
||||
id: "sZQzjQ",
|
||||
},
|
||||
{
|
||||
input: s.value,
|
||||
@ -69,7 +70,8 @@ export function NoteCreator() {
|
||||
throw new Error(
|
||||
formatMessage(
|
||||
{
|
||||
defaultMessage: "Failed to parse zap split: {input}", id: 'sZQzjQ',
|
||||
defaultMessage: "Failed to parse zap split: {input}",
|
||||
id: "sZQzjQ",
|
||||
},
|
||||
{
|
||||
input: s.value,
|
||||
@ -81,7 +83,8 @@ export function NoteCreator() {
|
||||
throw new Error(
|
||||
formatMessage(
|
||||
{
|
||||
defaultMessage: "Invalid zap split: {input}", id: '8Y6bZQ',
|
||||
defaultMessage: "Invalid zap split: {input}",
|
||||
id: "8Y6bZQ",
|
||||
},
|
||||
{
|
||||
input: s.value,
|
||||
@ -380,7 +383,7 @@ export function NoteCreator() {
|
||||
v => (v.zapSplits = arr.map((vv, ii) => (ii === i ? { ...vv, value: e.target.value } : vv))),
|
||||
)
|
||||
}
|
||||
placeholder={formatMessage({ defaultMessage: "npub / nprofile / nostr address", id: 'WvGmZT' })}
|
||||
placeholder={formatMessage({ defaultMessage: "npub / nprofile / nostr address", id: "WvGmZT" })}
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-col f-1 g4">
|
||||
@ -419,14 +422,20 @@ export function NoteCreator() {
|
||||
</button>
|
||||
</div>
|
||||
<span className="warning">
|
||||
<FormattedMessage defaultMessage="Not all clients support this, you may still receive some zaps as if zap splits was not configured" id="6bgpn+" />
|
||||
<FormattedMessage
|
||||
defaultMessage="Not all clients support this, you may still receive some zaps as if zap splits was not configured"
|
||||
id="6bgpn+"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex flex-col g8">
|
||||
<h4>
|
||||
<FormattedMessage defaultMessage="Sensitive Content" id="bQdA2k" />
|
||||
</h4>
|
||||
<FormattedMessage defaultMessage="Users must accept the content warning to show the content of your note." id="UUPFlt" />
|
||||
<FormattedMessage
|
||||
defaultMessage="Users must accept the content warning to show the content of your note."
|
||||
id="UUPFlt"
|
||||
/>
|
||||
<input
|
||||
className="w-max"
|
||||
type="text"
|
||||
@ -435,7 +444,8 @@ export function NoteCreator() {
|
||||
maxLength={50}
|
||||
minLength={1}
|
||||
placeholder={formatMessage({
|
||||
defaultMessage: "Reason", id: 'AkCxS/',
|
||||
defaultMessage: "Reason",
|
||||
id: "AkCxS/",
|
||||
})}
|
||||
/>
|
||||
<span className="warning">
|
||||
@ -486,7 +496,11 @@ export function NoteCreator() {
|
||||
<FormattedMessage defaultMessage="Cancel" id="47FYwb" />
|
||||
</button>
|
||||
<AsyncButton onClick={onSubmit} className="primary">
|
||||
{note.replyTo ? <FormattedMessage defaultMessage="Reply" id="9HU8vw" /> : <FormattedMessage defaultMessage="Send" id="9WRlF4" />}
|
||||
{note.replyTo ? (
|
||||
<FormattedMessage defaultMessage="Reply" id="9HU8vw" />
|
||||
) : (
|
||||
<FormattedMessage defaultMessage="Send" id="9WRlF4" />
|
||||
)}
|
||||
</AsyncButton>
|
||||
</div>
|
||||
</div>
|
||||
@ -597,7 +611,8 @@ export function NoteCreator() {
|
||||
value={note.hashTags}
|
||||
onChange={e => note.update(s => (s.hashTags = e))}
|
||||
placeHolder={formatMessage({
|
||||
defaultMessage: "Add up to 4 hashtags", id: 'AIgmDy',
|
||||
defaultMessage: "Add up to 4 hashtags",
|
||||
id: "AIgmDy",
|
||||
})}
|
||||
separators={["Enter", ","]}
|
||||
/>
|
||||
|
@ -187,7 +187,11 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
const pow = findTag(ev, "nonce") ? countLeadingZeros(ev.id) : undefined;
|
||||
if (pow) {
|
||||
return (
|
||||
<AsyncFooterIcon title={formatMessage({ defaultMessage: "Proof of Work", id: 'grQ+mI' })} iconName="diamond" value={pow} />
|
||||
<AsyncFooterIcon
|
||||
title={formatMessage({ defaultMessage: "Proof of Work", id: "grQ+mI" })}
|
||||
iconName="diamond"
|
||||
value={pow}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -199,7 +203,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
<AsyncFooterIcon
|
||||
className={didZap ? "reacted text-nostr-orange" : "hover:text-nostr-orange"}
|
||||
{...longPress()}
|
||||
title={formatMessage({ defaultMessage: "Zap", id: 'fBI91o' })}
|
||||
title={formatMessage({ defaultMessage: "Zap", id: "fBI91o" })}
|
||||
iconName={canFastZap ? "zapFast" : "zap"}
|
||||
value={zapTotal}
|
||||
onClick={e => fastZap(e)}
|
||||
@ -217,7 +221,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
<AsyncFooterIcon
|
||||
className={hasReposted() ? "reacted text-nostr-blue" : "hover:text-nostr-blue"}
|
||||
iconName="repeat"
|
||||
title={formatMessage({ defaultMessage: "Repost", id: 'JeoS4y' })}
|
||||
title={formatMessage({ defaultMessage: "Repost", id: "JeoS4y" })}
|
||||
value={reposts.length}
|
||||
/>
|
||||
}
|
||||
@ -258,7 +262,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
<AsyncFooterIcon
|
||||
className={reacted ? "reacted text-nostr-red" : "hover:text-nostr-red"}
|
||||
iconName={reacted ? "heart-solid" : "heart"}
|
||||
title={formatMessage({ defaultMessage: "Like", id: 'qtWLmt' })}
|
||||
title={formatMessage({ defaultMessage: "Like", id: "qtWLmt" })}
|
||||
value={positive.length}
|
||||
onClick={async () => {
|
||||
if (readonly) return;
|
||||
@ -274,7 +278,7 @@ export default function NoteFooter(props: NoteFooterProps) {
|
||||
<AsyncFooterIcon
|
||||
className={note.show ? "reacted text-nostr-purple" : "hover:text-nostr-purple"}
|
||||
iconName="reply"
|
||||
title={formatMessage({ defaultMessage: "Reply", id: '9HU8vw' })}
|
||||
title={formatMessage({ defaultMessage: "Reply", id: "9HU8vw" })}
|
||||
value={props.replies ?? 0}
|
||||
onClick={async () => handleReplyButtonClick()}
|
||||
/>
|
||||
|
@ -118,7 +118,8 @@ export function NoteInner(props: NoteProps) {
|
||||
message={
|
||||
<>
|
||||
<FormattedMessage
|
||||
defaultMessage="The author has marked this note as a <i>sensitive topic</i>" id="StKzTE"
|
||||
defaultMessage="The author has marked this note as a <i>sensitive topic</i>"
|
||||
id="StKzTE"
|
||||
values={{
|
||||
i: c => <i>{c}</i>,
|
||||
}}
|
||||
@ -127,7 +128,8 @@ export function NoteInner(props: NoteProps) {
|
||||
<>
|
||||
|
||||
<FormattedMessage
|
||||
defaultMessage="Reason: <i>{reason}</i>" id="6OSOXl"
|
||||
defaultMessage="Reason: <i>{reason}</i>"
|
||||
id="6OSOXl"
|
||||
values={{
|
||||
i: c => <i>{c}</i>,
|
||||
reason: contentWarning[1],
|
||||
|
@ -79,7 +79,8 @@ export default function NoteReaction(props: NoteReactionProps) {
|
||||
<div className="flex g4">
|
||||
<Icon name="repeat" size={18} />
|
||||
<FormattedMessage
|
||||
defaultMessage="{name} reposted" id="+xliwN"
|
||||
defaultMessage="{name} reposted"
|
||||
id="+xliwN"
|
||||
values={{
|
||||
name: getDisplayName(profile, ev.pubkey),
|
||||
}}
|
||||
|
@ -51,7 +51,8 @@ export default function Poll(props: PollProps) {
|
||||
throw new Error(
|
||||
formatMessage(
|
||||
{
|
||||
defaultMessage: "Can't vote with {amount} sats, please set a different default zap amount", id: 'NepkXH',
|
||||
defaultMessage: "Can't vote with {amount} sats, please set a different default zap amount",
|
||||
id: "NepkXH",
|
||||
},
|
||||
{
|
||||
amount,
|
||||
@ -75,7 +76,8 @@ export default function Poll(props: PollProps) {
|
||||
if (!svc.canZap) {
|
||||
throw new Error(
|
||||
formatMessage({
|
||||
defaultMessage: "Can't vote because LNURL service does not support zaps", id: 'fOksnD',
|
||||
defaultMessage: "Can't vote because LNURL service does not support zaps",
|
||||
id: "fOksnD",
|
||||
}),
|
||||
);
|
||||
}
|
||||
@ -92,7 +94,8 @@ export default function Poll(props: PollProps) {
|
||||
} else {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Failed to send vote", id: 'g985Wp',
|
||||
defaultMessage: "Failed to send vote",
|
||||
id: "g985Wp",
|
||||
}),
|
||||
);
|
||||
}
|
||||
@ -115,7 +118,8 @@ export default function Poll(props: PollProps) {
|
||||
<div className="flex justify-between p">
|
||||
<small>
|
||||
<FormattedMessage
|
||||
defaultMessage="You are voting with {amount} sats" id="3qnJlS"
|
||||
defaultMessage="You are voting with {amount} sats"
|
||||
id="3qnJlS"
|
||||
values={{
|
||||
amount: formatShort(prefs.defaultZapAmount),
|
||||
}}
|
||||
@ -123,7 +127,8 @@ export default function Poll(props: PollProps) {
|
||||
</small>
|
||||
<button type="button" onClick={() => setTallyBy(s => (s !== "zaps" ? "zaps" : "pubkeys"))}>
|
||||
<FormattedMessage
|
||||
defaultMessage="Votes by {type}" id="xIcAOU"
|
||||
defaultMessage="Votes by {type}"
|
||||
id="xIcAOU"
|
||||
values={{
|
||||
type:
|
||||
tallyBy === "zaps" ? (
|
||||
|
@ -105,7 +105,9 @@ const Reactions = ({ show, setShow, positive, negative, reposts, zaps }: Reactio
|
||||
pubkey={z.anonZap ? "" : z.sender}
|
||||
subHeader={<div title={z.content}>{z.content}</div>}
|
||||
link={z.anonZap ? "" : undefined}
|
||||
overrideUsername={z.anonZap ? formatMessage({ defaultMessage: "Anonymous", id: 'LXxsbk' }) : undefined}
|
||||
overrideUsername={
|
||||
z.anonZap ? formatMessage({ defaultMessage: "Anonymous", id: "LXxsbk" }) : undefined
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
|
@ -57,7 +57,8 @@ export default function RevealMedia(props: RevealMediaProps) {
|
||||
<Reveal
|
||||
message={
|
||||
<FormattedMessage
|
||||
defaultMessage="You don't follow this person, click here to load media from <i>{link}</i>, or update <a><i>your preferences</i></a> to always load media from everybody." id="HhcAVH"
|
||||
defaultMessage="You don't follow this person, click here to load media from <i>{link}</i>, or update <a><i>your preferences</i></a> to always load media from everybody."
|
||||
id="HhcAVH"
|
||||
values={{
|
||||
i: i => <i>{i}</i>,
|
||||
a: a => <Link to="/settings/preferences">{a}</Link>,
|
||||
|
@ -303,11 +303,13 @@ export function Thread(props: { onBack?: () => void; disableSpotlight?: boolean
|
||||
}
|
||||
|
||||
const parentText = formatMessage({
|
||||
defaultMessage: "Parent", id: 'ADmfQT',
|
||||
defaultMessage: "Parent",
|
||||
id: "ADmfQT",
|
||||
description: "Link to parent note in thread",
|
||||
});
|
||||
const backText = formatMessage({
|
||||
defaultMessage: "Back", id: 'jfV8Wr',
|
||||
defaultMessage: "Back",
|
||||
id: "jfV8Wr",
|
||||
description: "Navigate back button on threads view",
|
||||
});
|
||||
|
||||
|
@ -60,7 +60,7 @@ export const ZapsSummary = ({ zaps }: ZapsSummaryProps) => {
|
||||
<ProfileImage
|
||||
pubkey={anonZap ? "" : sender}
|
||||
showFollowDistance={false}
|
||||
overrideUsername={anonZap ? formatMessage({ defaultMessage: "Anonymous", id: 'LXxsbk' }) : undefined}
|
||||
overrideUsername={anonZap ? formatMessage({ defaultMessage: "Anonymous", id: "LXxsbk" }) : undefined}
|
||||
/>
|
||||
)}
|
||||
{restZaps.length > 0 ? (
|
||||
|
@ -39,7 +39,8 @@ export function TimelineRenderer(props: TimelineRendererProps) {
|
||||
return <ProfileImage pubkey={p} showUsername={false} link={""} showFollowDistance={false} />;
|
||||
})}
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} new {n, plural, =1 {note} other {notes}}" id="3t3kok"
|
||||
defaultMessage="{n} new {n, plural, =1 {note} other {notes}}"
|
||||
id="3t3kok"
|
||||
values={{ n: props.latest.length }}
|
||||
/>
|
||||
<Icon name="arrowUp" />
|
||||
@ -52,7 +53,8 @@ export function TimelineRenderer(props: TimelineRendererProps) {
|
||||
return <ProfileImage pubkey={p} showUsername={false} link={""} showFollowDistance={false} />;
|
||||
})}
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} new {n, plural, =1 {note} other {notes}}" id="3t3kok"
|
||||
defaultMessage="{n} new {n, plural, =1 {note} other {notes}}"
|
||||
id="3t3kok"
|
||||
values={{ n: props.latest.length }}
|
||||
/>
|
||||
<Icon name="arrowUp" />
|
||||
|
@ -6,7 +6,8 @@ export default function ReservedAccount({ name = "", enableReserved = () => {},
|
||||
<div>
|
||||
<p className="success">
|
||||
<FormattedMessage
|
||||
defaultMessage="Username iris.to/<b>{name}</b> is reserved for you!" id="Zff6lu"
|
||||
defaultMessage="Username iris.to/<b>{name}</b> is reserved for you!"
|
||||
id="Zff6lu"
|
||||
values={{ name, b: s => <b>{s}</b> }}
|
||||
/>
|
||||
</p>
|
||||
|
@ -29,7 +29,8 @@ export function PinPrompt({
|
||||
if (pin.length < 4) {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Pin too short", id: 'LR1XjT',
|
||||
defaultMessage: "Pin too short",
|
||||
id: "LR1XjT",
|
||||
}),
|
||||
);
|
||||
return;
|
||||
@ -43,7 +44,8 @@ export function PinPrompt({
|
||||
if (e instanceof InvalidPinError) {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Incorrect pin", id: 'qz9fty',
|
||||
defaultMessage: "Incorrect pin",
|
||||
id: "qz9fty",
|
||||
}),
|
||||
);
|
||||
} else if (e instanceof Error) {
|
||||
@ -143,7 +145,8 @@ export function LoginUnlock() {
|
||||
subTitle={
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="Enter a pin to encrypt your private key, you must enter this pin every time you open {site}." id="SLZGPn"
|
||||
defaultMessage="Enter a pin to encrypt your private key, you must enter this pin every time you open {site}."
|
||||
id="SLZGPn"
|
||||
values={{
|
||||
site: CONFIG.appNameCapitalized,
|
||||
}}
|
||||
|
@ -24,7 +24,8 @@ export const ProxyImg = (props: ProxyImgProps) => {
|
||||
setBypass(true);
|
||||
}}>
|
||||
<FormattedMessage
|
||||
defaultMessage="Failed to proxy image from {host}, click here to load directly" id="65BmHb"
|
||||
defaultMessage="Failed to proxy image from {host}, click here to load directly"
|
||||
id="65BmHb"
|
||||
values={{
|
||||
host: getUrlHostname(props.src),
|
||||
}}
|
||||
|
@ -116,7 +116,7 @@ export default function SearchBox() {
|
||||
<div className="search relative">
|
||||
<input
|
||||
type="text"
|
||||
placeholder={formatMessage({ defaultMessage: "Search", id: 'xmcVZ0' })}
|
||||
placeholder={formatMessage({ defaultMessage: "Search", id: "xmcVZ0" })}
|
||||
className="w-max"
|
||||
value={search}
|
||||
onChange={handleChange}
|
||||
|
@ -368,7 +368,8 @@ function SendSatsZapTypeSelector({ zapType, setZapType }: { zapType: ZapType; se
|
||||
<FormattedMessage defaultMessage="Zap Type" id="+aZY2h" />
|
||||
</h3>
|
||||
<div className="flex g8">
|
||||
{!readonly && makeTab(ZapType.PublicZap, <FormattedMessage defaultMessage="Public" id="/PCavi" description="Public Zap" />)}
|
||||
{!readonly &&
|
||||
makeTab(ZapType.PublicZap, <FormattedMessage defaultMessage="Public" id="/PCavi" description="Public Zap" />)}
|
||||
{/*makeTab(ZapType.PrivateZap, "Private")*/}
|
||||
{makeTab(ZapType.AnonZap, <FormattedMessage defaultMessage="Anon" id="wWLwvh" description="Anonymous Zap" />)}
|
||||
{makeTab(
|
||||
|
@ -55,7 +55,8 @@ export default function BadgeList({ badges }: { badges: TaggedNostrEvent[] }) {
|
||||
<p>{description}</p>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="By: {author}" id="RfhLwC"
|
||||
defaultMessage="By: {author}"
|
||||
id="RfhLwC"
|
||||
values={{ author: <Username pubkey={pubkey} onLinkVisit={() => setShowModal(false)} /> }}
|
||||
/>
|
||||
</p>
|
||||
|
@ -1,103 +1,104 @@
|
||||
import { defineMessages } from "react-intl";
|
||||
|
||||
export default defineMessages({
|
||||
Cancel: { defaultMessage: "Cancel", id: '47FYwb' },
|
||||
Reply: { defaultMessage: "Reply", id: '9HU8vw' },
|
||||
Send: { defaultMessage: "Send", id: '9WRlF4' },
|
||||
NotePlaceholder: { defaultMessage: "What's on your mind?", id: 'flnGvv' },
|
||||
Back: { defaultMessage: "Back", id: 'cyR7Kh' },
|
||||
Block: { defaultMessage: "Block", id: 'Up5U7K' },
|
||||
Unblock: { defaultMessage: "Unblock", id: 'nDejmx' },
|
||||
MuteCount: { defaultMessage: "{n} muted", id: 'VlJkSk' },
|
||||
Mute: { defaultMessage: "Mute", id: 'x82IOl' },
|
||||
MutedAuthor: { defaultMessage: "This author has been muted", id: 'ASRK0S' },
|
||||
Others: { defaultMessage: ` & {n} {n, plural, =1 {other} other {others}}`, id: 'egib+2' },
|
||||
Show: { defaultMessage: "Show", id: 'K7AkdL' },
|
||||
Delete: { defaultMessage: "Delete", id: 'K3r6DQ' },
|
||||
Deleted: { defaultMessage: "Deleted", id: 'KQvWvD' },
|
||||
Unmute: { defaultMessage: "Unmute", id: 'W9355R' },
|
||||
MuteAll: { defaultMessage: "Mute all", id: 'cWx9t8' },
|
||||
BlockCount: { defaultMessage: "{n} blocked", id: 'nwZXeh' },
|
||||
JustNow: { defaultMessage: "Just now", id: 'bxv59V' },
|
||||
Follow: { defaultMessage: "Follow", id: 'ieGrWo' },
|
||||
FollowAll: { defaultMessage: "Follow all", id: 'mKAr6h' },
|
||||
Unfollow: { defaultMessage: "Unfollow", id: 'izWS4J' },
|
||||
FollowerCount: { defaultMessage: "{n} followers", id: 'o7e+nJ' },
|
||||
FollowingCount: { defaultMessage: "Follows {n}", id: '9SvQep' },
|
||||
FollowsYou: { defaultMessage: "follows you", id: 'FmXUJg' },
|
||||
Invoice: { defaultMessage: "Lightning Invoice", id: '9wO4wJ' },
|
||||
PayInvoice: { defaultMessage: "Pay Invoice", id: 'lvlPhZ' },
|
||||
Expired: { defaultMessage: "Expired", id: 'RahCRH' },
|
||||
Pay: { defaultMessage: "Pay", id: 'lD3+8a' },
|
||||
Loading: { defaultMessage: "Loading...", id: 'gjBiyj' },
|
||||
Logout: { defaultMessage: "Logout", id: 'C81/uG' },
|
||||
ShowMore: { defaultMessage: "Show more", id: 'aWpBzj' },
|
||||
TranslateTo: { defaultMessage: "Translate to {lang}", id: 'Ebl/B2' },
|
||||
TranslatedFrom: { defaultMessage: "Translated from {lang}", id: 'Cu/K85' },
|
||||
TranslationFailed: { defaultMessage: "Translation failed", id: 'qmJ8kD' },
|
||||
UnknownEventKind: { defaultMessage: "Unknown event kind: {kind}", id: 'KahimY' },
|
||||
ConfirmDeletion: { defaultMessage: `Are you sure you want to delete {id}`, id: 'RhDAoS' },
|
||||
ConfirmRepost: { defaultMessage: `Are you sure you want to repost: {id}`, id: '+D82kt' },
|
||||
Reactions: { defaultMessage: "Reactions", id: 'XgWvGA' },
|
||||
ReactionsCount: { defaultMessage: "Reactions ({n})", id: 'iCqGww' },
|
||||
Share: { defaultMessage: "Share", id: 'OKhRC6' },
|
||||
CopyID: { defaultMessage: "Copy ID", id: 'wtLjP6' },
|
||||
CopyJSON: { defaultMessage: "Copy Event JSON", id: 'P61BTu' },
|
||||
Dislike: { defaultMessage: "{n} Dislike", id: 'GspYR7' },
|
||||
DislikeAction: { defaultMessage: "Dislike", id: '4OB335' },
|
||||
Sats: { defaultMessage: `{n} {n, plural, =1 {sat} other {sats}}`, id: 'jA3OE/' },
|
||||
Zapped: { defaultMessage: "zapped", id: 'B6+XJy' },
|
||||
OthersZapped: { defaultMessage: `{n, plural, =0 {} =1 {zapped} other {zapped}}`, id: 'mKhgP9' },
|
||||
Likes: { defaultMessage: "Likes ({n})", id: '6ewQqw' },
|
||||
Zaps: { defaultMessage: "Zaps ({n})", id: 'JHEHCk' },
|
||||
Dislikes: { defaultMessage: "Dislikes ({n})", id: '2k0Cv+' },
|
||||
Reposts: { defaultMessage: "Reposts ({n})", id: '8/vBbP' },
|
||||
NoteToSelf: { defaultMessage: "Note to Self", id: '4rYCjn' },
|
||||
Read: { defaultMessage: "Read", id: 'filwqD' },
|
||||
Write: { defaultMessage: "Write", id: 'k2veDA' },
|
||||
Seconds: { defaultMessage: "{n} secs", id: '0yO7wF' },
|
||||
Milliseconds: { defaultMessage: "{n} ms", id: '/n5KSF' },
|
||||
ShowLatest: { defaultMessage: "Show latest {n} notes", id: 'DZzCem' },
|
||||
LNURLFail: { defaultMessage: "Failed to load LNURL service", id: 'zonsdq' },
|
||||
InvalidLNURL: { defaultMessage: "Invalid LNURL", id: '0jOEtS' },
|
||||
InvoiceFail: { defaultMessage: "Failed to load invoice", id: 'CHTbO3' },
|
||||
Custom: { defaultMessage: "Custom", id: 'Sjo1P4' },
|
||||
Confirm: { defaultMessage: "Confirm", id: 'N2IrpM' },
|
||||
Comment: { defaultMessage: "Comment", id: 'LgbKvU' },
|
||||
SendZap: { defaultMessage: "Send zap", id: '5ykRmX' },
|
||||
ShowReplies: { defaultMessage: "Show replies", id: 'hicxcO' },
|
||||
TooShort: { defaultMessage: "name too short", id: 'B4C47Y' },
|
||||
TooLong: { defaultMessage: "name too long", id: '8g2vyB' },
|
||||
Regex: { defaultMessage: "name has disallowed characters", id: '0mch2Y' },
|
||||
Registered: { defaultMessage: "name is registered", id: 'cuV2gK' },
|
||||
Disallowed: { defaultMessage: "name is blocked", id: 'wih7iJ' },
|
||||
DisalledLater: { defaultMessage: "name will be available later", id: 'HFls6j' },
|
||||
BuyNow: { defaultMessage: "Buy Now", id: 'lCILNz' },
|
||||
NotAvailable: { defaultMessage: "Not available:", id: 'MI2jkA' },
|
||||
Buying: { defaultMessage: "Buying {item}", id: 'MzRYWH' },
|
||||
OrderPaid: { defaultMessage: "Order Paid!", id: 'H6/kLh' },
|
||||
NewNip: { defaultMessage: "Your new NIP-05 handle is:", id: '4L2vUY' },
|
||||
ActivateNow: { defaultMessage: "Activate Now", id: 'ZKORll' },
|
||||
AddToProfile: { defaultMessage: "Add to Profile", id: 'qkvYUb' },
|
||||
AccountPage: { defaultMessage: "account page", id: 'lgg1KN' },
|
||||
AccountSupport: { defaultMessage: "Account Support", id: '/JE/X+' },
|
||||
GoTo: { defaultMessage: "Go to", id: 'xIoGG9' },
|
||||
FindMore: { defaultMessage: "Find out more info about {service} at {link}", id: 'wqyN/i' },
|
||||
Cancel: { defaultMessage: "Cancel", id: "47FYwb" },
|
||||
Reply: { defaultMessage: "Reply", id: "9HU8vw" },
|
||||
Send: { defaultMessage: "Send", id: "9WRlF4" },
|
||||
NotePlaceholder: { defaultMessage: "What's on your mind?", id: "flnGvv" },
|
||||
Back: { defaultMessage: "Back", id: "cyR7Kh" },
|
||||
Block: { defaultMessage: "Block", id: "Up5U7K" },
|
||||
Unblock: { defaultMessage: "Unblock", id: "nDejmx" },
|
||||
MuteCount: { defaultMessage: "{n} muted", id: "VlJkSk" },
|
||||
Mute: { defaultMessage: "Mute", id: "x82IOl" },
|
||||
MutedAuthor: { defaultMessage: "This author has been muted", id: "ASRK0S" },
|
||||
Others: { defaultMessage: ` & {n} {n, plural, =1 {other} other {others}}`, id: "egib+2" },
|
||||
Show: { defaultMessage: "Show", id: "K7AkdL" },
|
||||
Delete: { defaultMessage: "Delete", id: "K3r6DQ" },
|
||||
Deleted: { defaultMessage: "Deleted", id: "KQvWvD" },
|
||||
Unmute: { defaultMessage: "Unmute", id: "W9355R" },
|
||||
MuteAll: { defaultMessage: "Mute all", id: "cWx9t8" },
|
||||
BlockCount: { defaultMessage: "{n} blocked", id: "nwZXeh" },
|
||||
JustNow: { defaultMessage: "Just now", id: "bxv59V" },
|
||||
Follow: { defaultMessage: "Follow", id: "ieGrWo" },
|
||||
FollowAll: { defaultMessage: "Follow all", id: "mKAr6h" },
|
||||
Unfollow: { defaultMessage: "Unfollow", id: "izWS4J" },
|
||||
FollowerCount: { defaultMessage: "{n} followers", id: "o7e+nJ" },
|
||||
FollowingCount: { defaultMessage: "Follows {n}", id: "9SvQep" },
|
||||
FollowsYou: { defaultMessage: "follows you", id: "FmXUJg" },
|
||||
Invoice: { defaultMessage: "Lightning Invoice", id: "9wO4wJ" },
|
||||
PayInvoice: { defaultMessage: "Pay Invoice", id: "lvlPhZ" },
|
||||
Expired: { defaultMessage: "Expired", id: "RahCRH" },
|
||||
Pay: { defaultMessage: "Pay", id: "lD3+8a" },
|
||||
Loading: { defaultMessage: "Loading...", id: "gjBiyj" },
|
||||
Logout: { defaultMessage: "Logout", id: "C81/uG" },
|
||||
ShowMore: { defaultMessage: "Show more", id: "aWpBzj" },
|
||||
TranslateTo: { defaultMessage: "Translate to {lang}", id: "Ebl/B2" },
|
||||
TranslatedFrom: { defaultMessage: "Translated from {lang}", id: "Cu/K85" },
|
||||
TranslationFailed: { defaultMessage: "Translation failed", id: "qmJ8kD" },
|
||||
UnknownEventKind: { defaultMessage: "Unknown event kind: {kind}", id: "KahimY" },
|
||||
ConfirmDeletion: { defaultMessage: `Are you sure you want to delete {id}`, id: "RhDAoS" },
|
||||
ConfirmRepost: { defaultMessage: `Are you sure you want to repost: {id}`, id: "+D82kt" },
|
||||
Reactions: { defaultMessage: "Reactions", id: "XgWvGA" },
|
||||
ReactionsCount: { defaultMessage: "Reactions ({n})", id: "iCqGww" },
|
||||
Share: { defaultMessage: "Share", id: "OKhRC6" },
|
||||
CopyID: { defaultMessage: "Copy ID", id: "wtLjP6" },
|
||||
CopyJSON: { defaultMessage: "Copy Event JSON", id: "P61BTu" },
|
||||
Dislike: { defaultMessage: "{n} Dislike", id: "GspYR7" },
|
||||
DislikeAction: { defaultMessage: "Dislike", id: "4OB335" },
|
||||
Sats: { defaultMessage: `{n} {n, plural, =1 {sat} other {sats}}`, id: "jA3OE/" },
|
||||
Zapped: { defaultMessage: "zapped", id: "B6+XJy" },
|
||||
OthersZapped: { defaultMessage: `{n, plural, =0 {} =1 {zapped} other {zapped}}`, id: "mKhgP9" },
|
||||
Likes: { defaultMessage: "Likes ({n})", id: "6ewQqw" },
|
||||
Zaps: { defaultMessage: "Zaps ({n})", id: "JHEHCk" },
|
||||
Dislikes: { defaultMessage: "Dislikes ({n})", id: "2k0Cv+" },
|
||||
Reposts: { defaultMessage: "Reposts ({n})", id: "8/vBbP" },
|
||||
NoteToSelf: { defaultMessage: "Note to Self", id: "4rYCjn" },
|
||||
Read: { defaultMessage: "Read", id: "filwqD" },
|
||||
Write: { defaultMessage: "Write", id: "k2veDA" },
|
||||
Seconds: { defaultMessage: "{n} secs", id: "0yO7wF" },
|
||||
Milliseconds: { defaultMessage: "{n} ms", id: "/n5KSF" },
|
||||
ShowLatest: { defaultMessage: "Show latest {n} notes", id: "DZzCem" },
|
||||
LNURLFail: { defaultMessage: "Failed to load LNURL service", id: "zonsdq" },
|
||||
InvalidLNURL: { defaultMessage: "Invalid LNURL", id: "0jOEtS" },
|
||||
InvoiceFail: { defaultMessage: "Failed to load invoice", id: "CHTbO3" },
|
||||
Custom: { defaultMessage: "Custom", id: "Sjo1P4" },
|
||||
Confirm: { defaultMessage: "Confirm", id: "N2IrpM" },
|
||||
Comment: { defaultMessage: "Comment", id: "LgbKvU" },
|
||||
SendZap: { defaultMessage: "Send zap", id: "5ykRmX" },
|
||||
ShowReplies: { defaultMessage: "Show replies", id: "hicxcO" },
|
||||
TooShort: { defaultMessage: "name too short", id: "B4C47Y" },
|
||||
TooLong: { defaultMessage: "name too long", id: "8g2vyB" },
|
||||
Regex: { defaultMessage: "name has disallowed characters", id: "0mch2Y" },
|
||||
Registered: { defaultMessage: "name is registered", id: "cuV2gK" },
|
||||
Disallowed: { defaultMessage: "name is blocked", id: "wih7iJ" },
|
||||
DisalledLater: { defaultMessage: "name will be available later", id: "HFls6j" },
|
||||
BuyNow: { defaultMessage: "Buy Now", id: "lCILNz" },
|
||||
NotAvailable: { defaultMessage: "Not available:", id: "MI2jkA" },
|
||||
Buying: { defaultMessage: "Buying {item}", id: "MzRYWH" },
|
||||
OrderPaid: { defaultMessage: "Order Paid!", id: "H6/kLh" },
|
||||
NewNip: { defaultMessage: "Your new NIP-05 handle is:", id: "4L2vUY" },
|
||||
ActivateNow: { defaultMessage: "Activate Now", id: "ZKORll" },
|
||||
AddToProfile: { defaultMessage: "Add to Profile", id: "qkvYUb" },
|
||||
AccountPage: { defaultMessage: "account page", id: "lgg1KN" },
|
||||
AccountSupport: { defaultMessage: "Account Support", id: "/JE/X+" },
|
||||
GoTo: { defaultMessage: "Go to", id: "xIoGG9" },
|
||||
FindMore: { defaultMessage: "Find out more info about {service} at {link}", id: "wqyN/i" },
|
||||
SavePassword: {
|
||||
defaultMessage: "Please make sure to save the following password in order to manage your handle in the future", id: '+vIQlC',
|
||||
defaultMessage: "Please make sure to save the following password in order to manage your handle in the future",
|
||||
id: "+vIQlC",
|
||||
},
|
||||
Handle: { defaultMessage: "Handle", id: 'iNWbVV' },
|
||||
Pin: { defaultMessage: "Pin", id: 'puLNUJ' },
|
||||
Pinned: { defaultMessage: "Pinned", id: 'fWZYP5' },
|
||||
Bookmark: { defaultMessage: "Bookmark", id: 'Rs4kCE' },
|
||||
Bookmarks: { defaultMessage: "Bookmarks", id: 'nGBrvw' },
|
||||
BookmarksCount: { defaultMessage: "Bookmarks ({n})", id: 'GL8aXW' },
|
||||
Bookmarked: { defaultMessage: "Saved", id: 'fsB/4p' },
|
||||
All: { defaultMessage: "All", id: 'zQvVDJ' },
|
||||
ConfirmUnbookmark: { defaultMessage: "Are you sure you want to remove this note from bookmarks?", id: '1Mo59U' },
|
||||
ConfirmUnpin: { defaultMessage: "Are you sure you want to unpin this note?", id: 'IEwZvs' },
|
||||
ReactionsLink: { defaultMessage: "{n} Reactions", id: 'jzgQ2z' },
|
||||
ReBroadcast: { defaultMessage: "Broadcast Again", id: 'c3g2hL' },
|
||||
IrisUserNameLengthError: { defaultMessage: "Name must be between 1 and 32 characters", id: '4MBtMa' },
|
||||
IrisUserNameFormatError: { defaultMessage: "Username must only contain lowercase letters and numbers", id: 'RSr2uB' },
|
||||
Handle: { defaultMessage: "Handle", id: "iNWbVV" },
|
||||
Pin: { defaultMessage: "Pin", id: "puLNUJ" },
|
||||
Pinned: { defaultMessage: "Pinned", id: "fWZYP5" },
|
||||
Bookmark: { defaultMessage: "Bookmark", id: "Rs4kCE" },
|
||||
Bookmarks: { defaultMessage: "Bookmarks", id: "nGBrvw" },
|
||||
BookmarksCount: { defaultMessage: "Bookmarks ({n})", id: "GL8aXW" },
|
||||
Bookmarked: { defaultMessage: "Saved", id: "fsB/4p" },
|
||||
All: { defaultMessage: "All", id: "zQvVDJ" },
|
||||
ConfirmUnbookmark: { defaultMessage: "Are you sure you want to remove this note from bookmarks?", id: "1Mo59U" },
|
||||
ConfirmUnpin: { defaultMessage: "Are you sure you want to unpin this note?", id: "IEwZvs" },
|
||||
ReactionsLink: { defaultMessage: "{n} Reactions", id: "jzgQ2z" },
|
||||
ReBroadcast: { defaultMessage: "Broadcast Again", id: "c3g2hL" },
|
||||
IrisUserNameLengthError: { defaultMessage: "Name must be between 1 and 32 characters", id: "4MBtMa" },
|
||||
IrisUserNameFormatError: { defaultMessage: "Username must only contain lowercase letters and numbers", id: "RSr2uB" },
|
||||
});
|
||||
|
@ -14,7 +14,8 @@ export default function useLoginHandler() {
|
||||
async function doLogin(key: string, pin: (key: string) => Promise<KeyStorage>) {
|
||||
const insecureMsg = formatMessage({
|
||||
defaultMessage:
|
||||
"Can't login with private key on an insecure connection, please use a Nostr key manager extension instead", id: 'iXPL0Z',
|
||||
"Can't login with private key on an insecure connection, please use a Nostr key manager extension instead",
|
||||
id: "iXPL0Z",
|
||||
});
|
||||
// private key logins
|
||||
if (key.startsWith("nsec")) {
|
||||
|
@ -9,9 +9,9 @@ export default function Discover() {
|
||||
const { formatMessage } = useIntl();
|
||||
// tabs
|
||||
const Tabs = {
|
||||
Follows: { text: formatMessage({ defaultMessage: "Suggested Follows", id: 'C8HhVE' }), value: 0 },
|
||||
Posts: { text: formatMessage({ defaultMessage: "Trending Notes", id: 'Ix8l+B' }), value: 1 },
|
||||
Profiles: { text: formatMessage({ defaultMessage: "Trending People", id: 'CVWeJ6' }), value: 2 },
|
||||
Follows: { text: formatMessage({ defaultMessage: "Suggested Follows", id: "C8HhVE" }), value: 0 },
|
||||
Posts: { text: formatMessage({ defaultMessage: "Trending Notes", id: "Ix8l+B" }), value: 1 },
|
||||
Profiles: { text: formatMessage({ defaultMessage: "Trending People", id: "CVWeJ6" }), value: 2 },
|
||||
};
|
||||
const [tab, setTab] = useState<Tab>(Tabs.Follows);
|
||||
|
||||
|
@ -87,13 +87,15 @@ const DonatePage = () => {
|
||||
<div className="main-content p">
|
||||
<h2>
|
||||
<FormattedMessage
|
||||
defaultMessage="Help fund the development of {site}" id="yNBPJp"
|
||||
defaultMessage="Help fund the development of {site}"
|
||||
id="yNBPJp"
|
||||
values={{ site: CONFIG.appNameCapitalized }}
|
||||
/>
|
||||
</h2>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="{site} is an open source project built by passionate people in their free time" id="6TfgXX"
|
||||
defaultMessage="{site} is an open source project built by passionate people in their free time"
|
||||
id="6TfgXX"
|
||||
values={{ site: CONFIG.appNameCapitalized }}
|
||||
/>
|
||||
</p>
|
||||
@ -102,7 +104,8 @@ const DonatePage = () => {
|
||||
</p>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="Check out the code here: {link}" id="u4bHcR"
|
||||
defaultMessage="Check out the code here: {link}"
|
||||
id="u4bHcR"
|
||||
values={{
|
||||
link: (
|
||||
<a className="highlight" href="https://git.v0l.io/Kieran/snort" rel="noreferrer" target="_blank">
|
||||
@ -113,7 +116,10 @@ const DonatePage = () => {
|
||||
/>
|
||||
</p>
|
||||
<p>
|
||||
<FormattedMessage defaultMessage="Each contributor will get paid a percentage of all donations and NIP-05 orders, you can see the split amounts below" id="mH91FY" />
|
||||
<FormattedMessage
|
||||
defaultMessage="Each contributor will get paid a percentage of all donations and NIP-05 orders, you can see the split amounts below"
|
||||
id="mH91FY"
|
||||
/>
|
||||
</p>
|
||||
<div className="flex flex-col g12">
|
||||
<div className="b br p">
|
||||
@ -126,7 +132,8 @@ const DonatePage = () => {
|
||||
{today && (
|
||||
<small>
|
||||
<FormattedMessage
|
||||
defaultMessage="Total today (UTC): {amount} sats" id="P7nJT9"
|
||||
defaultMessage="Total today (UTC): {amount} sats"
|
||||
id="P7nJT9"
|
||||
values={{ amount: today.donations.toLocaleString() }}
|
||||
/>
|
||||
</small>
|
||||
|
@ -71,7 +71,8 @@ export function HashTagHeader({ tag, events, className }: { tag: string; events?
|
||||
{events && (
|
||||
<small>
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} notes" id="un1nGw"
|
||||
defaultMessage="{n} notes"
|
||||
id="un1nGw"
|
||||
values={{
|
||||
n: formatShort(events),
|
||||
}}
|
||||
|
@ -12,7 +12,8 @@ export default function HelpPage() {
|
||||
</h2>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="If you have an enquiry about your NIP-05 order please DM {link}" id="c35bj2"
|
||||
defaultMessage="If you have an enquiry about your NIP-05 order please DM {link}"
|
||||
id="c35bj2"
|
||||
values={{
|
||||
link: (
|
||||
<Link
|
||||
|
@ -88,7 +88,10 @@ export default function MessagesPage() {
|
||||
{conversationIdent(cx)}
|
||||
<div className="nowrap">
|
||||
<small>
|
||||
<NoteTime from={cx.lastMessage * 1000} fallback={formatMessage({ defaultMessage: "Just now", id: 'bxv59V' })} />
|
||||
<NoteTime
|
||||
from={cx.lastMessage * 1000}
|
||||
fallback={formatMessage({ defaultMessage: "Just now", id: "bxv59V" })}
|
||||
/>
|
||||
</small>
|
||||
{cx.unread > 0 && <UnreadCount unread={cx.unread} />}
|
||||
</div>
|
||||
@ -161,7 +164,11 @@ function ProfileDmActions({ id }: { id: string }) {
|
||||
|
||||
<div className="settings-row" onClick={() => (blocked ? unblock(pubkey) : block(pubkey))}>
|
||||
<Icon name="block" />
|
||||
{blocked ? <FormattedMessage defaultMessage="Unblock" id="nDejmx" /> : <FormattedMessage defaultMessage="Block" id="Up5U7K" />}
|
||||
{blocked ? (
|
||||
<FormattedMessage defaultMessage="Unblock" id="nDejmx" />
|
||||
) : (
|
||||
<FormattedMessage defaultMessage="Block" id="Up5U7K" />
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
|
@ -8,25 +8,10 @@ import { FormattedMessage, useIntl } from "react-intl";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { Bar, BarChart, Tooltip, XAxis, YAxis } from "recharts";
|
||||
|
||||
<<<<<<< HEAD
|
||||
import useLogin from "Hooks/useLogin";
|
||||
import { markNotificationsRead } from "Login";
|
||||
import { Notifications } from "Cache";
|
||||
import { dedupe, orderAscending, orderDescending, getDisplayName } from "SnortUtils";
|
||||
import Icon from "Icons/Icon";
|
||||
import ProfileImage from "Element/User/ProfileImage";
|
||||
import useModeration from "Hooks/useModeration";
|
||||
import Text from "Element/Text";
|
||||
import { formatShort } from "Number";
|
||||
import { LiveEvent } from "Element/LiveEvent";
|
||||
import ProfilePreview from "Element/User/ProfilePreview";
|
||||
import { Day } from "Const";
|
||||
import Tabs, { Tab } from "Element/Tabs";
|
||||
=======
|
||||
import useLogin from "@/Hooks/useLogin";
|
||||
import { markNotificationsRead } from "@/Login";
|
||||
import { Notifications } from "@/Cache";
|
||||
import { dedupe, findTag, orderAscending, orderDescending, getDisplayName } from "@/SnortUtils";
|
||||
import { dedupe, orderAscending, orderDescending, getDisplayName } from "@/SnortUtils";
|
||||
import Icon from "@/Icons/Icon";
|
||||
import ProfileImage from "@/Element/User/ProfileImage";
|
||||
import useModeration from "@/Hooks/useModeration";
|
||||
@ -36,7 +21,6 @@ import { LiveEvent } from "@/Element/LiveEvent";
|
||||
import ProfilePreview from "@/Element/User/ProfilePreview";
|
||||
import { Day } from "@/Const";
|
||||
import Tabs, { Tab } from "@/Element/Tabs";
|
||||
>>>>>>> 7ec02f9b (wip vite)
|
||||
import classNames from "classnames";
|
||||
import { AsyncIcon } from "@/Element/AsyncIcon";
|
||||
import { ShowMoreInView } from "@/Element/Event/ShowMore";
|
||||
@ -345,7 +329,8 @@ function NotificationGroup({ evs, onClick }: { evs: Array<TaggedNostrEvent>; onC
|
||||
case EventKind.Reaction: {
|
||||
return (
|
||||
<FormattedMessage
|
||||
defaultMessage="{n,plural,=0{{name} liked} other{{name} & {n} others liked}}" id="kuPHYE"
|
||||
defaultMessage="{n,plural,=0{{name} liked} other{{name} & {n} others liked}}"
|
||||
id="kuPHYE"
|
||||
values={{
|
||||
n,
|
||||
name,
|
||||
@ -356,7 +341,8 @@ function NotificationGroup({ evs, onClick }: { evs: Array<TaggedNostrEvent>; onC
|
||||
case EventKind.Repost: {
|
||||
return (
|
||||
<FormattedMessage
|
||||
defaultMessage="{n,plural,=0{{name} reposted} other{{name} & {n} others reposted}}" id="kJYo0u"
|
||||
defaultMessage="{n,plural,=0{{name} reposted} other{{name} & {n} others reposted}}"
|
||||
id="kJYo0u"
|
||||
values={{
|
||||
n,
|
||||
name,
|
||||
@ -367,7 +353,8 @@ function NotificationGroup({ evs, onClick }: { evs: Array<TaggedNostrEvent>; onC
|
||||
case EventKind.ZapReceipt: {
|
||||
return (
|
||||
<FormattedMessage
|
||||
defaultMessage="{n,plural,=0{{name} zapped} other{{name} & {n} others zapped}}" id="Lw+I+J"
|
||||
defaultMessage="{n,plural,=0{{name} zapped} other{{name} & {n} others zapped}}"
|
||||
id="Lw+I+J"
|
||||
values={{
|
||||
n,
|
||||
name,
|
||||
@ -400,7 +387,7 @@ function NotificationGroup({ evs, onClick }: { evs: Array<TaggedNostrEvent>; onC
|
||||
showUsername={kind === EventKind.TextNote}
|
||||
pubkey={v}
|
||||
size={40}
|
||||
overrideUsername={v === "" ? formatMessage({ defaultMessage: "Anon", id: 'bfvyfs' }) : undefined}
|
||||
overrideUsername={v === "" ? formatMessage({ defaultMessage: "Anon", id: "bfvyfs" }) : undefined}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
@ -409,7 +396,7 @@ function NotificationGroup({ evs, onClick }: { evs: Array<TaggedNostrEvent>; onC
|
||||
{actionName(
|
||||
pubkeys.length - 1,
|
||||
firstPubkey === "anon"
|
||||
? formatMessage({ defaultMessage: "Anon", id: 'bfvyfs' })
|
||||
? formatMessage({ defaultMessage: "Anon", id: "bfvyfs" })
|
||||
: getDisplayName(firstPubkeyProfile, firstPubkey),
|
||||
)}
|
||||
</div>
|
||||
|
@ -75,7 +75,11 @@ export const GlobalTab = () => {
|
||||
return (
|
||||
<div className="flex items-center g8 justify-end nowrap">
|
||||
<h3>
|
||||
<FormattedMessage defaultMessage="Relay" id="KHK8B9" description="Label for reading global feed from specific relays" />
|
||||
<FormattedMessage
|
||||
defaultMessage="Relay"
|
||||
id="KHK8B9"
|
||||
description="Label for reading global feed from specific relays"
|
||||
/>
|
||||
</h3>
|
||||
<select
|
||||
className="f-ellipsis"
|
||||
|
@ -20,8 +20,8 @@ const SearchPage = () => {
|
||||
const [sortPopular, setSortPopular] = useState<boolean>(true);
|
||||
// tabs
|
||||
const SearchTab = [
|
||||
{ text: formatMessage({ defaultMessage: "Notes", id: '7+Domh' }), value: NOTES },
|
||||
{ text: formatMessage({ defaultMessage: "People", id: 'Tpy00S' }), value: PROFILES },
|
||||
{ text: formatMessage({ defaultMessage: "Notes", id: "7+Domh" }), value: NOTES },
|
||||
{ text: formatMessage({ defaultMessage: "People", id: "Tpy00S" }), value: PROFILES },
|
||||
];
|
||||
const [tab, setTab] = useState<Tab>(SearchTab[0]);
|
||||
|
||||
@ -95,7 +95,7 @@ const SearchPage = () => {
|
||||
<input
|
||||
type="text"
|
||||
className="w-max"
|
||||
placeholder={formatMessage({ defaultMessage: "Search...", id: '0BUTMv' })}
|
||||
placeholder={formatMessage({ defaultMessage: "Search...", id: "0BUTMv" })}
|
||||
value={search}
|
||||
onChange={e => setSearch(e.target.value)}
|
||||
autoFocus={true}
|
||||
|
@ -41,7 +41,7 @@ export default function WalletPage() {
|
||||
if (e instanceof Error) {
|
||||
setError((e as Error).message);
|
||||
} else {
|
||||
setError(formatMessage({ defaultMessage: "Unknown error", id: 'qDwvZ4' }));
|
||||
setError(formatMessage({ defaultMessage: "Unknown error", id: "qDwvZ4" }));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -90,7 +90,8 @@ export default function WalletPage() {
|
||||
<input
|
||||
type="password"
|
||||
placeholder={formatMessage({
|
||||
defaultMessage: "Wallet password", id: 'MP54GY',
|
||||
defaultMessage: "Wallet password",
|
||||
id: "MP54GY",
|
||||
description: "Wallet password input placeholder",
|
||||
})}
|
||||
className="w-max"
|
||||
@ -141,7 +142,7 @@ export default function WalletPage() {
|
||||
{history?.map(a => (
|
||||
<div className="card flex wallet-history-item" key={a.timestamp}>
|
||||
<div className="grow flex-col">
|
||||
<NoteTime from={a.timestamp * 1000} fallback={formatMessage({ defaultMessage: "now", id: 'kaaf1E' })} />
|
||||
<NoteTime from={a.timestamp * 1000} fallback={formatMessage({ defaultMessage: "now", id: "kaaf1E" })} />
|
||||
<div>{(a.memo ?? "").length === 0 ? <> </> : a.memo}</div>
|
||||
</div>
|
||||
<div
|
||||
@ -159,7 +160,8 @@ export default function WalletPage() {
|
||||
})()}`}>
|
||||
{stateIcon(a.state)}
|
||||
<FormattedMessage
|
||||
defaultMessage="{amount} sats" id="vrTOHJ"
|
||||
defaultMessage="{amount} sats"
|
||||
id="vrTOHJ"
|
||||
values={{
|
||||
amount: <FormattedNumber value={a.amount / 1e3} />,
|
||||
}}
|
||||
@ -176,7 +178,8 @@ export default function WalletPage() {
|
||||
return (
|
||||
<small>
|
||||
<FormattedMessage
|
||||
defaultMessage="Balance: {amount} sats" id="VN0+Fz"
|
||||
defaultMessage="Balance: {amount} sats"
|
||||
id="VN0+Fz"
|
||||
values={{
|
||||
amount: <FormattedNumber value={balance ?? 0} />,
|
||||
}}
|
||||
|
@ -96,14 +96,21 @@ export default function ZapPoolPage() {
|
||||
<FormattedMessage defaultMessage="Zap Pool" id="i/dBAR" />
|
||||
</h1>
|
||||
<p>
|
||||
<FormattedMessage defaultMessage="Fund the services that you use by splitting a portion of all your zaps into a pool of funds!" id="x/Fx2P" />
|
||||
</p>
|
||||
<p>
|
||||
<FormattedMessage defaultMessage="Zap Pool only works if you use one of the supported wallet connections (WebLN, LNC, LNDHub or Nostr Wallet Connect)" id="QWhotP" />
|
||||
<FormattedMessage
|
||||
defaultMessage="Fund the services that you use by splitting a portion of all your zaps into a pool of funds!"
|
||||
id="x/Fx2P"
|
||||
/>
|
||||
</p>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="Your default zap amount is {number} sats, example values are calculated from this." id="Xopqkl"
|
||||
defaultMessage="Zap Pool only works if you use one of the supported wallet connections (WebLN, LNC, LNDHub or Nostr Wallet Connect)"
|
||||
id="QWhotP"
|
||||
/>
|
||||
</p>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="Your default zap amount is {number} sats, example values are calculated from this."
|
||||
id="Xopqkl"
|
||||
values={{
|
||||
number: (
|
||||
<b>
|
||||
@ -115,7 +122,8 @@ export default function ZapPoolPage() {
|
||||
</p>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="A single zap of {nIn} sats will allocate {nOut} sats to the zap pool." id="eSzf2G"
|
||||
defaultMessage="A single zap of {nIn} sats will allocate {nOut} sats to the zap pool."
|
||||
id="eSzf2G"
|
||||
values={{
|
||||
nIn: (
|
||||
<b>
|
||||
@ -134,7 +142,8 @@ export default function ZapPoolPage() {
|
||||
</p>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="You currently have {number} sats in your zap pool." id="Qxv0B2"
|
||||
defaultMessage="You currently have {number} sats in your zap pool."
|
||||
id="Qxv0B2"
|
||||
values={{
|
||||
number: (
|
||||
<b>
|
||||
|
@ -1,45 +1,55 @@
|
||||
import { defineMessages } from "react-intl";
|
||||
|
||||
export default defineMessages({
|
||||
Login: { defaultMessage: "Login", id: 'AyGauy' },
|
||||
Global: { defaultMessage: "Global", id: 'EWyQH5' },
|
||||
NewUsers: { defaultMessage: "New users page", id: 'NndBJE' },
|
||||
NoFollows: { defaultMessage: "Hmm nothing here.. Checkout {newUsersPage} to follow some recommended nostrich's!", id: 'NdOYJJ' },
|
||||
Reactions: { defaultMessage: "Reactions", id: 'XgWvGA' },
|
||||
Followers: { defaultMessage: "Followers", id: 'pzTOmv' },
|
||||
FollowersCount: { defaultMessage: "{n} Followers", id: '3tVy+Z' },
|
||||
Follows: { defaultMessage: "Following", id: 'cPIKU2' },
|
||||
FollowsCount: { defaultMessage: "{n} Following", id: '1nYUGC' },
|
||||
Zaps: { defaultMessage: "Zaps", id: 'OEW7yJ' },
|
||||
ZapsCount: { defaultMessage: "{n} Zaps", id: 'FDguSC' },
|
||||
Muted: { defaultMessage: "Muted", id: 'HOzFdo' },
|
||||
MutedCount: { defaultMessage: "{n} Muted", id: 'CmZ9ls' },
|
||||
Blocked: { defaultMessage: "Blocked", id: 'qUJTsT' },
|
||||
BlockedCount: { defaultMessage: "{n} Blocked", id: 'W2PiAr' },
|
||||
Sats: { defaultMessage: "{n} {n, plural, =1 {sat} other {sats}}", id: 'jA3OE/' },
|
||||
Following: { defaultMessage: "Following {n}", id: 'lnaT9F' },
|
||||
Settings: { defaultMessage: "Settings", id: 'D3idYv' },
|
||||
Messages: { defaultMessage: "Messages", id: 'hMzcSq' },
|
||||
MarkAllRead: { defaultMessage: "Mark All Read", id: 'e7qqly' },
|
||||
GetVerified: { defaultMessage: "Get Verified", id: 'eJj8HD' },
|
||||
Nip05: { defaultMessage: `NIP-05 is a DNS based verification spec which helps to validate you as a real user.`, id: 'vZ4quW' },
|
||||
Nip05Pros: { defaultMessage: `Getting NIP-05 verified can help:`, id: 'thnRpU' },
|
||||
AvoidImpersonators: { defaultMessage: "Prevent fake accounts from imitating you", id: 'iGT1eE' },
|
||||
EasierToFind: { defaultMessage: "Make your profile easier to find and share", id: '/d6vEc' },
|
||||
Funding: { defaultMessage: "Fund developers and platforms providing NIP-05 verification services", id: 'a5UPxh' },
|
||||
Login: { defaultMessage: "Login", id: "AyGauy" },
|
||||
Global: { defaultMessage: "Global", id: "EWyQH5" },
|
||||
NewUsers: { defaultMessage: "New users page", id: "NndBJE" },
|
||||
NoFollows: {
|
||||
defaultMessage: "Hmm nothing here.. Checkout {newUsersPage} to follow some recommended nostrich's!",
|
||||
id: "NdOYJJ",
|
||||
},
|
||||
Reactions: { defaultMessage: "Reactions", id: "XgWvGA" },
|
||||
Followers: { defaultMessage: "Followers", id: "pzTOmv" },
|
||||
FollowersCount: { defaultMessage: "{n} Followers", id: "3tVy+Z" },
|
||||
Follows: { defaultMessage: "Following", id: "cPIKU2" },
|
||||
FollowsCount: { defaultMessage: "{n} Following", id: "1nYUGC" },
|
||||
Zaps: { defaultMessage: "Zaps", id: "OEW7yJ" },
|
||||
ZapsCount: { defaultMessage: "{n} Zaps", id: "FDguSC" },
|
||||
Muted: { defaultMessage: "Muted", id: "HOzFdo" },
|
||||
MutedCount: { defaultMessage: "{n} Muted", id: "CmZ9ls" },
|
||||
Blocked: { defaultMessage: "Blocked", id: "qUJTsT" },
|
||||
BlockedCount: { defaultMessage: "{n} Blocked", id: "W2PiAr" },
|
||||
Sats: { defaultMessage: "{n} {n, plural, =1 {sat} other {sats}}", id: "jA3OE/" },
|
||||
Following: { defaultMessage: "Following {n}", id: "lnaT9F" },
|
||||
Settings: { defaultMessage: "Settings", id: "D3idYv" },
|
||||
Messages: { defaultMessage: "Messages", id: "hMzcSq" },
|
||||
MarkAllRead: { defaultMessage: "Mark All Read", id: "e7qqly" },
|
||||
GetVerified: { defaultMessage: "Get Verified", id: "eJj8HD" },
|
||||
Nip05: {
|
||||
defaultMessage: `NIP-05 is a DNS based verification spec which helps to validate you as a real user.`,
|
||||
id: "vZ4quW",
|
||||
},
|
||||
Nip05Pros: { defaultMessage: `Getting NIP-05 verified can help:`, id: "thnRpU" },
|
||||
AvoidImpersonators: { defaultMessage: "Prevent fake accounts from imitating you", id: "iGT1eE" },
|
||||
EasierToFind: { defaultMessage: "Make your profile easier to find and share", id: "/d6vEc" },
|
||||
Funding: { defaultMessage: "Fund developers and platforms providing NIP-05 verification services", id: "a5UPxh" },
|
||||
SnortSocialNip: {
|
||||
defaultMessage: `Our very own NIP-05 verification service, help support the development of this site and get a shiny special badge on our site!`, id: 'k7sKNy',
|
||||
defaultMessage: `Our very own NIP-05 verification service, help support the development of this site and get a shiny special badge on our site!`,
|
||||
id: "k7sKNy",
|
||||
},
|
||||
NostrPlebsNip: {
|
||||
defaultMessage: `Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices`, id: '4Vmpt4',
|
||||
defaultMessage: `Nostr Plebs is one of the first NIP-05 providers in the space and offers a good collection of domains at reasonable prices`,
|
||||
id: "4Vmpt4",
|
||||
},
|
||||
Relays: {
|
||||
defaultMessage: "Relays", id: 'RoOyAh',
|
||||
defaultMessage: "Relays",
|
||||
id: "RoOyAh",
|
||||
},
|
||||
RelaysCount: {
|
||||
defaultMessage: "{n} Relays", id: 'QDFTjG',
|
||||
defaultMessage: "{n} Relays",
|
||||
id: "QDFTjG",
|
||||
},
|
||||
Bookmarks: { defaultMessage: "Bookmarks", id: 'nGBrvw' },
|
||||
BookmarksCount: { defaultMessage: "{n} Bookmarks", id: '2a2YiP' },
|
||||
KeyPlaceholder: { defaultMessage: "nsec, npub, nip-05, hex", id: 'B6H7eJ' },
|
||||
Bookmarks: { defaultMessage: "Bookmarks", id: "nGBrvw" },
|
||||
BookmarksCount: { defaultMessage: "{n} Bookmarks", id: "2a2YiP" },
|
||||
KeyPlaceholder: { defaultMessage: "nsec, npub, nip-05, hex", id: "B6H7eJ" },
|
||||
});
|
||||
|
@ -13,7 +13,8 @@ export function Discover() {
|
||||
<div className="flex flex-col g24">
|
||||
<h1 className="text-center">
|
||||
<FormattedMessage
|
||||
defaultMessage="{site} is more fun together!" id="h7jvCs"
|
||||
defaultMessage="{site} is more fun together!"
|
||||
id="h7jvCs"
|
||||
values={{
|
||||
site: CONFIG.appNameCapitalized,
|
||||
}}
|
||||
|
@ -43,7 +43,8 @@ export function SignIn() {
|
||||
} else {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Unknown login error", id: 'OLEm6z',
|
||||
defaultMessage: "Unknown login error",
|
||||
id: "OLEm6z",
|
||||
}),
|
||||
);
|
||||
}
|
||||
@ -83,7 +84,8 @@ export function SignIn() {
|
||||
<input
|
||||
type="text"
|
||||
placeholder={formatMessage({
|
||||
defaultMessage: "nsec, npub, nip-05, hex, mnemonic", id: 'X7xU8J',
|
||||
defaultMessage: "nsec, npub, nip-05, hex, mnemonic",
|
||||
id: "X7xU8J",
|
||||
})}
|
||||
value={key}
|
||||
onChange={e => setKey(e.target.value)}
|
||||
@ -125,7 +127,8 @@ export function SignUp() {
|
||||
type="text"
|
||||
autoFocus={true}
|
||||
placeholder={formatMessage({
|
||||
defaultMessage: "Name or nym", id: 'aHje0o',
|
||||
defaultMessage: "Name or nym",
|
||||
id: "aHje0o",
|
||||
})}
|
||||
value={name}
|
||||
onChange={e => setName(e.target.value)}
|
||||
|
@ -45,7 +45,8 @@ function CacheDetails<T>({ cache, name }: { cache: FeedCache<T>; name: ReactNode
|
||||
{name}
|
||||
<small>
|
||||
<FormattedMessage
|
||||
defaultMessage="{count} ({count2} in memory)" id="geppt8"
|
||||
defaultMessage="{count} ({count2} in memory)"
|
||||
id="geppt8"
|
||||
values={{
|
||||
count: <FormattedNumber value={cache.keysOnTable().length} />,
|
||||
count2: <FormattedNumber value={snapshot.length} />,
|
||||
|
@ -316,7 +316,8 @@ const PreferencesPage = () => {
|
||||
type="text"
|
||||
value={perf.imgProxyConfig?.url}
|
||||
placeholder={formatMessage({
|
||||
defaultMessage: "URL..", id: 'cQfLWb',
|
||||
defaultMessage: "URL..",
|
||||
id: "cQfLWb",
|
||||
description: "Placeholder text for imgproxy url textbox",
|
||||
})}
|
||||
onChange={e =>
|
||||
@ -340,7 +341,8 @@ const PreferencesPage = () => {
|
||||
type="password"
|
||||
value={perf.imgProxyConfig?.key}
|
||||
placeholder={formatMessage({
|
||||
defaultMessage: "Hex Key..", id: 'H+vHiz',
|
||||
defaultMessage: "Hex Key..",
|
||||
id: "H+vHiz",
|
||||
description: "Hexidecimal 'key' input for improxy",
|
||||
})}
|
||||
onChange={e =>
|
||||
@ -364,7 +366,8 @@ const PreferencesPage = () => {
|
||||
type="password"
|
||||
value={perf.imgProxyConfig?.salt}
|
||||
placeholder={formatMessage({
|
||||
defaultMessage: "Hex Salt..", id: 'TpgeGw',
|
||||
defaultMessage: "Hex Salt..",
|
||||
id: "TpgeGw",
|
||||
description: "Hexidecimal 'salt' input for imgproxy",
|
||||
})}
|
||||
onChange={e =>
|
||||
|
@ -162,7 +162,10 @@ export default function ProfileSettings(props: ProfileSettingsProps) {
|
||||
disabled={readonly}
|
||||
/>
|
||||
<small>
|
||||
<FormattedMessage defaultMessage="Usernames are not unique on Nostr. The nostr address is your unique human-readable address that is unique to you upon registration." id="5vMmmR" />
|
||||
<FormattedMessage
|
||||
defaultMessage="Usernames are not unique on Nostr. The nostr address is your unique human-readable address that is unique to you upon registration."
|
||||
id="5vMmmR"
|
||||
/>
|
||||
</small>
|
||||
<div className="flex g12">
|
||||
<button className="flex items-center" type="button" onClick={() => navigate("/nostr-address")}>
|
||||
|
@ -124,7 +124,7 @@ export function CloseRelays() {
|
||||
return (
|
||||
<>
|
||||
<h3>
|
||||
<FormattedMessage defaultMessage="Recommended Relays" />
|
||||
<FormattedMessage defaultMessage="Recommended Relays" id="VL900k" />
|
||||
</h3>
|
||||
{"geolocation" in navigator && (
|
||||
<AsyncButton
|
||||
@ -141,7 +141,7 @@ export function CloseRelays() {
|
||||
console.error(e);
|
||||
}
|
||||
}}>
|
||||
<FormattedMessage defaultMessage="Use Exact Location" />
|
||||
<FormattedMessage defaultMessage="Use Exact Location" id="0HFX0T" />
|
||||
</AsyncButton>
|
||||
)}
|
||||
{relays
|
||||
@ -162,7 +162,7 @@ export function CloseRelays() {
|
||||
unixNowMs(),
|
||||
);
|
||||
}}>
|
||||
<FormattedMessage defaultMessage="Add" />
|
||||
<FormattedMessage defaultMessage="Add" id="2/2yg+" />
|
||||
</AsyncButton>
|
||||
</div>
|
||||
<div className="flex flex-col g8">
|
||||
@ -170,6 +170,7 @@ export function CloseRelays() {
|
||||
<small>
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} km - {location}"
|
||||
id="jTrbGf"
|
||||
values={{
|
||||
n: (a.distance / 1000).toFixed(0),
|
||||
location: a.city ? `${a.city}, ${a.country}` : a.country,
|
||||
@ -179,6 +180,7 @@ export function CloseRelays() {
|
||||
<small>
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} users"
|
||||
id="1H4Keq"
|
||||
values={{
|
||||
n: formatShort(a.users),
|
||||
}}
|
||||
|
@ -30,7 +30,8 @@ export default function LNForwardAddress({ handle }: { handle: ManageHandle }) {
|
||||
} catch {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Invalid LNURL", id: '0jOEtS',
|
||||
defaultMessage: "Invalid LNURL",
|
||||
id: "0jOEtS",
|
||||
}),
|
||||
);
|
||||
return;
|
||||
@ -49,14 +50,23 @@ export default function LNForwardAddress({ handle }: { handle: ManageHandle }) {
|
||||
<FormattedMessage defaultMessage="Update Lightning Address" id="SOqbe9" />
|
||||
</h4>
|
||||
<p>
|
||||
<FormattedMessage defaultMessage="Your handle will act like a lightning address and will redirect to your chosen LNURL or Lightning address" id="b5vAk0" />
|
||||
<FormattedMessage
|
||||
defaultMessage="Your handle will act like a lightning address and will redirect to your chosen LNURL or Lightning address"
|
||||
id="b5vAk0"
|
||||
/>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<small>
|
||||
<FormattedMessage defaultMessage="Redirect issues HTTP redirect to the supplied lightning address" id="FcNSft" />
|
||||
<FormattedMessage
|
||||
defaultMessage="Redirect issues HTTP redirect to the supplied lightning address"
|
||||
id="FcNSft"
|
||||
/>
|
||||
<br />
|
||||
<FormattedMessage defaultMessage="Proxy uses HODL invoices to forward the payment, which hides the pubkey of your node" id="712i26" />
|
||||
<FormattedMessage
|
||||
defaultMessage="Proxy uses HODL invoices to forward the payment, which hides the pubkey of your node"
|
||||
id="712i26"
|
||||
/>
|
||||
</small>
|
||||
</p>
|
||||
<div className="flex g8">
|
||||
@ -64,7 +74,8 @@ export default function LNForwardAddress({ handle }: { handle: ManageHandle }) {
|
||||
type="text"
|
||||
className="w-max"
|
||||
placeholder={formatMessage({
|
||||
defaultMessage: "LNURL or Lightning Address", id: 'yCLnBC',
|
||||
defaultMessage: "LNURL or Lightning Address",
|
||||
id: "yCLnBC",
|
||||
})}
|
||||
value={newAddress}
|
||||
onChange={e => setNewAddress(e.target.value)}
|
||||
|
@ -32,7 +32,8 @@ export default function ListHandles() {
|
||||
<>
|
||||
{handles.length === 0 && (
|
||||
<FormattedMessage
|
||||
defaultMessage="It looks like you dont have any, check {link} to buy one!" id="mErPop"
|
||||
defaultMessage="It looks like you dont have any, check {link} to buy one!"
|
||||
id="mErPop"
|
||||
values={{
|
||||
link: (
|
||||
<Link to="/nostr-address">
|
||||
|
@ -39,7 +39,8 @@ export default function TransferHandle({ handle }: { handle: ManageHandle }) {
|
||||
type="text"
|
||||
className="w-max mr10"
|
||||
placeholder={formatMessage({
|
||||
defaultMessage: "Public key (npub/nprofile)", id: 'VR5eHw',
|
||||
defaultMessage: "Public key (npub/nprofile)",
|
||||
id: "VR5eHw",
|
||||
})}
|
||||
value={newKey}
|
||||
onChange={e => setNewKey(e.target.value)}
|
||||
|
@ -1,64 +1,69 @@
|
||||
import { defineMessages } from "react-intl";
|
||||
|
||||
export default defineMessages({
|
||||
Profile: { defaultMessage: "Profile", id: 'itPgxd' },
|
||||
Relays: { defaultMessage: "Relays", id: 'RoOyAh' },
|
||||
Owner: { defaultMessage: "Owner", id: 'zINlao' },
|
||||
Software: { defaultMessage: "Software", id: 'r3C4x/' },
|
||||
Contact: { defaultMessage: "Contact", id: 'zFegDD' },
|
||||
Supports: { defaultMessage: "Supports", id: 'hY4lzx' },
|
||||
Remove: { defaultMessage: "Remove", id: 'G/yZLu' },
|
||||
Preferences: { defaultMessage: "Preferences", id: 'PCSt5T' },
|
||||
Donate: { defaultMessage: "Donate", id: '2IFGap' },
|
||||
LogOut: { defaultMessage: "Log Out", id: 'H0JBH6' },
|
||||
Theme: { defaultMessage: "Theme", id: 'Pe0ogR' },
|
||||
System: { defaultMessage: "System (Default)", id: 'P7FD0F' },
|
||||
Light: { defaultMessage: "Light", id: '3cc4Ct' },
|
||||
Dark: { defaultMessage: "Dark", id: 'tOdNiY' },
|
||||
DefaultRootTab: { defaultMessage: "Default Page", id: 'MWTx65' },
|
||||
Conversations: { defaultMessage: "Conversations", id: '1udzha' },
|
||||
Global: { defaultMessage: "Global", id: 'EWyQH5' },
|
||||
AutoloadMedia: { defaultMessage: "Automatically load media", id: 'xbVgIm' },
|
||||
Profile: { defaultMessage: "Profile", id: "itPgxd" },
|
||||
Relays: { defaultMessage: "Relays", id: "RoOyAh" },
|
||||
Owner: { defaultMessage: "Owner", id: "zINlao" },
|
||||
Software: { defaultMessage: "Software", id: "r3C4x/" },
|
||||
Contact: { defaultMessage: "Contact", id: "zFegDD" },
|
||||
Supports: { defaultMessage: "Supports", id: "hY4lzx" },
|
||||
Remove: { defaultMessage: "Remove", id: "G/yZLu" },
|
||||
Preferences: { defaultMessage: "Preferences", id: "PCSt5T" },
|
||||
Donate: { defaultMessage: "Donate", id: "2IFGap" },
|
||||
LogOut: { defaultMessage: "Log Out", id: "H0JBH6" },
|
||||
Theme: { defaultMessage: "Theme", id: "Pe0ogR" },
|
||||
System: { defaultMessage: "System (Default)", id: "P7FD0F" },
|
||||
Light: { defaultMessage: "Light", id: "3cc4Ct" },
|
||||
Dark: { defaultMessage: "Dark", id: "tOdNiY" },
|
||||
DefaultRootTab: { defaultMessage: "Default Page", id: "MWTx65" },
|
||||
Conversations: { defaultMessage: "Conversations", id: "1udzha" },
|
||||
Global: { defaultMessage: "Global", id: "EWyQH5" },
|
||||
AutoloadMedia: { defaultMessage: "Automatically load media", id: "xbVgIm" },
|
||||
AutoloadMediaHelp: {
|
||||
defaultMessage: "Media in notes will automatically be shown for selected people, otherwise only the link will show", id: 'TDR5ge',
|
||||
defaultMessage: "Media in notes will automatically be shown for selected people, otherwise only the link will show",
|
||||
id: "TDR5ge",
|
||||
},
|
||||
None: { defaultMessage: "None", id: '450Fty' },
|
||||
FollowsOnly: { defaultMessage: "Follows only", id: 'odFwjL' },
|
||||
All: { defaultMessage: "All", id: 'zQvVDJ' },
|
||||
ImgProxy: { defaultMessage: "Image proxy service", id: 'll3xBp' },
|
||||
ImgProxyHelp: { defaultMessage: "Use imgproxy to compress images", id: '4Z3t5i' },
|
||||
ServiceUrl: { defaultMessage: "Service URL", id: 'YDURw6' },
|
||||
ServiceKey: { defaultMessage: "Key", id: 'EcglP9' },
|
||||
ServiceSalt: { defaultMessage: "Salt", id: 'GFOoEE' },
|
||||
EnableReactions: { defaultMessage: "Enable reactions", id: 'YXA3AH' },
|
||||
None: { defaultMessage: "None", id: "450Fty" },
|
||||
FollowsOnly: { defaultMessage: "Follows only", id: "odFwjL" },
|
||||
All: { defaultMessage: "All", id: "zQvVDJ" },
|
||||
ImgProxy: { defaultMessage: "Image proxy service", id: "ll3xBp" },
|
||||
ImgProxyHelp: { defaultMessage: "Use imgproxy to compress images", id: "4Z3t5i" },
|
||||
ServiceUrl: { defaultMessage: "Service URL", id: "YDURw6" },
|
||||
ServiceKey: { defaultMessage: "Key", id: "EcglP9" },
|
||||
ServiceSalt: { defaultMessage: "Salt", id: "GFOoEE" },
|
||||
EnableReactions: { defaultMessage: "Enable reactions", id: "YXA3AH" },
|
||||
EnableReactionsHelp: {
|
||||
defaultMessage: "Reactions will be shown on every page, if disabled no reactions will be shown", id: 'PrsIg7',
|
||||
defaultMessage: "Reactions will be shown on every page, if disabled no reactions will be shown",
|
||||
id: "PrsIg7",
|
||||
},
|
||||
ConfirmReposts: { defaultMessage: "Confirm Reposts", id: '89q5wc' },
|
||||
ConfirmRepostsHelp: { defaultMessage: "Reposts need to be manually confirmed", id: 'uSV4Ti' },
|
||||
ShowLatest: { defaultMessage: "Automatically show latest notes", id: 'zvCDao' },
|
||||
ShowLatestHelp: { defaultMessage: "Notes will stream in real time into global and notes tab", id: 'a7TDNm' },
|
||||
FileUpload: { defaultMessage: "File upload service", id: 'mKh2HS' },
|
||||
FileUploadHelp: { defaultMessage: "Pick which upload service you want to upload attachments to", id: 'VOjC1i' },
|
||||
Default: { defaultMessage: "(Default)", id: 'rfuMjE' },
|
||||
DebugMenus: { defaultMessage: "Debug Menus", id: 'M3Oirc' },
|
||||
DebugMenusHelp: { defaultMessage: `Shows "Copy ID" and "Copy Event JSON" in the context menu on each message`, id: 'MBAYRO' },
|
||||
EditProfile: { defaultMessage: "Edit Profile", id: 'usAvMr' },
|
||||
About: { defaultMessage: "About", id: 'g5pX+a' },
|
||||
LnAddress: { defaultMessage: "LN Address", id: 'd7d0/x' },
|
||||
Avatar: { defaultMessage: "Avatar", id: 'VnXp8Z' },
|
||||
Banner: { defaultMessage: "Banner", id: '25V4l1' },
|
||||
Edit: { defaultMessage: "Edit", id: 'wEQDC6' },
|
||||
PrivateKey: { defaultMessage: "Your Private Key Is (do not share this with anyone)", id: 'qdGuQo' },
|
||||
Add: { defaultMessage: "Add", id: '2/2yg+' },
|
||||
AddRelays: { defaultMessage: "Add Relays", id: 'rT14Ow' },
|
||||
Name: { defaultMessage: "Name", id: 'HAlOn1' },
|
||||
Website: { defaultMessage: "Website", id: 'JkLHGw' },
|
||||
Save: { defaultMessage: "Save", id: 'jvo0vs' },
|
||||
DisplayName: { defaultMessage: "Display name", id: 'dOQCL8' },
|
||||
Buy: { defaultMessage: "Buy", id: 'EnCOBJ' },
|
||||
Nip05: { defaultMessage: "NIP-05", id: '7hp70g' },
|
||||
ReactionEmoji: { defaultMessage: "Reaction emoji", id: 'eHAneD' },
|
||||
ReactionEmojiHelp: { defaultMessage: "Emoji to send when reactiong to a note", id: 'gDzDRs' },
|
||||
SocialGraph: { defaultMessage: "Social Graph", id: 'CzHZoc' },
|
||||
ConfirmReposts: { defaultMessage: "Confirm Reposts", id: "89q5wc" },
|
||||
ConfirmRepostsHelp: { defaultMessage: "Reposts need to be manually confirmed", id: "uSV4Ti" },
|
||||
ShowLatest: { defaultMessage: "Automatically show latest notes", id: "zvCDao" },
|
||||
ShowLatestHelp: { defaultMessage: "Notes will stream in real time into global and notes tab", id: "a7TDNm" },
|
||||
FileUpload: { defaultMessage: "File upload service", id: "mKh2HS" },
|
||||
FileUploadHelp: { defaultMessage: "Pick which upload service you want to upload attachments to", id: "VOjC1i" },
|
||||
Default: { defaultMessage: "(Default)", id: "rfuMjE" },
|
||||
DebugMenus: { defaultMessage: "Debug Menus", id: "M3Oirc" },
|
||||
DebugMenusHelp: {
|
||||
defaultMessage: `Shows "Copy ID" and "Copy Event JSON" in the context menu on each message`,
|
||||
id: "MBAYRO",
|
||||
},
|
||||
EditProfile: { defaultMessage: "Edit Profile", id: "usAvMr" },
|
||||
About: { defaultMessage: "About", id: "g5pX+a" },
|
||||
LnAddress: { defaultMessage: "LN Address", id: "d7d0/x" },
|
||||
Avatar: { defaultMessage: "Avatar", id: "VnXp8Z" },
|
||||
Banner: { defaultMessage: "Banner", id: "25V4l1" },
|
||||
Edit: { defaultMessage: "Edit", id: "wEQDC6" },
|
||||
PrivateKey: { defaultMessage: "Your Private Key Is (do not share this with anyone)", id: "qdGuQo" },
|
||||
Add: { defaultMessage: "Add", id: "2/2yg+" },
|
||||
AddRelays: { defaultMessage: "Add Relays", id: "rT14Ow" },
|
||||
Name: { defaultMessage: "Name", id: "HAlOn1" },
|
||||
Website: { defaultMessage: "Website", id: "JkLHGw" },
|
||||
Save: { defaultMessage: "Save", id: "jvo0vs" },
|
||||
DisplayName: { defaultMessage: "Display name", id: "dOQCL8" },
|
||||
Buy: { defaultMessage: "Buy", id: "EnCOBJ" },
|
||||
Nip05: { defaultMessage: "NIP-05", id: "7hp70g" },
|
||||
ReactionEmoji: { defaultMessage: "Reaction emoji", id: "eHAneD" },
|
||||
ReactionEmojiHelp: { defaultMessage: "Emoji to send when reactiong to a note", id: "gDzDRs" },
|
||||
SocialGraph: { defaultMessage: "Social Graph", id: "CzHZoc" },
|
||||
});
|
||||
|
@ -38,7 +38,8 @@ const ConnectCashu = () => {
|
||||
} else {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Unknown error", id: 'qDwvZ4',
|
||||
defaultMessage: "Unknown error",
|
||||
id: "qDwvZ4",
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
@ -31,7 +31,8 @@ const ConnectLNC = () => {
|
||||
} else {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Unknown error", id: 'qDwvZ4',
|
||||
defaultMessage: "Unknown error",
|
||||
id: "qDwvZ4",
|
||||
}),
|
||||
);
|
||||
}
|
||||
@ -60,7 +61,7 @@ const ConnectLNC = () => {
|
||||
<div className="grow mr10">
|
||||
<input
|
||||
type="text"
|
||||
placeholder={formatMessage({ defaultMessage: "Pairing phrase", id: '8v1NN+' })}
|
||||
placeholder={formatMessage({ defaultMessage: "Pairing phrase", id: "8v1NN+" })}
|
||||
className="w-max"
|
||||
value={pairingPhrase}
|
||||
onChange={e => setPairingPhrase(e.target.value)}
|
||||
@ -81,7 +82,8 @@ const ConnectLNC = () => {
|
||||
<div className="flex flex-col">
|
||||
<h3>
|
||||
<FormattedMessage
|
||||
defaultMessage="Connected to: {node} 🎉" id="1c4YST"
|
||||
defaultMessage="Connected to: {node} 🎉"
|
||||
id="1c4YST"
|
||||
values={{
|
||||
node: walletInfo?.alias,
|
||||
}}
|
||||
@ -94,7 +96,7 @@ const ConnectLNC = () => {
|
||||
<div className="grow mr10">
|
||||
<input
|
||||
type="password"
|
||||
placeholder={formatMessage({ defaultMessage: "Wallet password", id: 'lTbT3s' })}
|
||||
placeholder={formatMessage({ defaultMessage: "Wallet password", id: "lTbT3s" })}
|
||||
className="w-max"
|
||||
value={walletPassword}
|
||||
onChange={e => setWalletPassword(e.target.value)}
|
||||
|
@ -36,7 +36,8 @@ const ConnectLNDHub = () => {
|
||||
} else {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Unknown error", id: 'qDwvZ4',
|
||||
defaultMessage: "Unknown error",
|
||||
id: "qDwvZ4",
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
@ -36,7 +36,8 @@ const ConnectNostrWallet = () => {
|
||||
} else {
|
||||
setError(
|
||||
formatMessage({
|
||||
defaultMessage: "Unknown error", id: 'qDwvZ4',
|
||||
defaultMessage: "Unknown error",
|
||||
id: "qDwvZ4",
|
||||
}),
|
||||
);
|
||||
}
|
||||
@ -65,7 +66,8 @@ const ConnectNostrWallet = () => {
|
||||
{error && <b className="error p10">{error}</b>}
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="Using Alby? Go to {link} to get your NWC config!" id="cFbU1B"
|
||||
defaultMessage="Using Alby? Go to {link} to get your NWC config!"
|
||||
id="cFbU1B"
|
||||
values={{
|
||||
link: (
|
||||
<Link to="https://nwc.getalby.com/" target="_blank">
|
||||
|
@ -53,7 +53,8 @@ export default function ManageSubscriptionPage() {
|
||||
{subs.length === 0 && (
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="It looks like you dont have any subscriptions, you can get one {link}" id="W1yoZY"
|
||||
defaultMessage="It looks like you dont have any subscriptions, you can get one {link}"
|
||||
id="W1yoZY"
|
||||
values={{
|
||||
link: (
|
||||
<Link to="/subscribe">
|
||||
|
@ -60,7 +60,8 @@ export function RenewSub({ sub: s }: { sub?: Subscription }) {
|
||||
<AsyncButton onClick={() => renew(sub.id, months)}>
|
||||
{sub.state === "expired" ? (
|
||||
<FormattedMessage
|
||||
defaultMessage="Renew {tier}" id="qZsKBR"
|
||||
defaultMessage="Renew {tier}"
|
||||
id="qZsKBR"
|
||||
values={{
|
||||
tier: mapPlanName(sub.type),
|
||||
}}
|
||||
@ -76,7 +77,8 @@ export function RenewSub({ sub: s }: { sub?: Subscription }) {
|
||||
show={invoice !== ""}
|
||||
onClose={() => setInvoice("")}
|
||||
title={formatMessage({
|
||||
defaultMessage: "Pay for subscription", id: 'Mrpkot',
|
||||
defaultMessage: "Pay for subscription",
|
||||
id: "Mrpkot",
|
||||
})}
|
||||
/>
|
||||
{error && <b className="error">{mapSubscriptionErrorCode(error)}</b>}
|
||||
|
@ -60,7 +60,8 @@ export default function SubscriptionCard({ sub }: { sub: Subscription }) {
|
||||
:
|
||||
<time dateTime={expires.toISOString()}>
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} days" id="rmdsT4"
|
||||
defaultMessage="{n} days"
|
||||
id="rmdsT4"
|
||||
values={{
|
||||
n: <FormattedNumber value={daysToExpire} maximumFractionDigits={0} />,
|
||||
}}
|
||||
@ -74,7 +75,8 @@ export default function SubscriptionCard({ sub }: { sub: Subscription }) {
|
||||
:
|
||||
<time dateTime={expires.toISOString()}>
|
||||
<FormattedMessage
|
||||
defaultMessage="{n} hours" id="2ukA4d"
|
||||
defaultMessage="{n} hours"
|
||||
id="2ukA4d"
|
||||
values={{
|
||||
n: <FormattedNumber value={hoursToExpire} maximumFractionDigits={0} />,
|
||||
}}
|
||||
|
@ -37,7 +37,9 @@ export function mapFeatureName(k: LockedFeatures) {
|
||||
case LockedFeatures.RelayBackup:
|
||||
return <FormattedMessage defaultMessage="Downloadable backups from Snort relay" id="pI+77w" />;
|
||||
case LockedFeatures.RelayAccess:
|
||||
return <FormattedMessage defaultMessage="Write access to Snort relay, with 1 year of event retention" id="BGCM48" />;
|
||||
return (
|
||||
<FormattedMessage defaultMessage="Write access to Snort relay, with 1 year of event retention" id="BGCM48" />
|
||||
);
|
||||
case LockedFeatures.LNProxy:
|
||||
return <FormattedMessage defaultMessage="LN Address Proxy" id="SYQtZ7" />;
|
||||
case LockedFeatures.EmailBridge:
|
||||
@ -52,7 +54,12 @@ export function mapSubscriptionErrorCode(c: SubscriptionError) {
|
||||
case SubscriptionErrorCode.SubscriptionActive:
|
||||
return <FormattedMessage defaultMessage="You subscription is still active, you can't renew yet" id="OQXnew" />;
|
||||
case SubscriptionErrorCode.Duplicate:
|
||||
return <FormattedMessage defaultMessage="You already have a subscription of this type, please renew or pay" id="NAuFNH" />;
|
||||
return (
|
||||
<FormattedMessage
|
||||
defaultMessage="You already have a subscription of this type, please renew or pay"
|
||||
id="NAuFNH"
|
||||
/>
|
||||
);
|
||||
default:
|
||||
return c.message;
|
||||
}
|
||||
@ -87,7 +94,8 @@ export function SubscribePage() {
|
||||
<h2>{mapPlanName(a.id)}</h2>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="Subscribe to {site_name} {plan} for {price} and receive the following rewards" id="JSx7y9"
|
||||
defaultMessage="Subscribe to {site_name} {plan} for {price} and receive the following rewards"
|
||||
id="JSx7y9"
|
||||
values={{
|
||||
site_name: CONFIG.appNameCapitalized,
|
||||
plan: mapPlanName(a.id),
|
||||
@ -103,7 +111,8 @@ export function SubscribePage() {
|
||||
{lower.map(b => (
|
||||
<li>
|
||||
<FormattedMessage
|
||||
defaultMessage="Everything in {plan}" id="l+ikU1"
|
||||
defaultMessage="Everything in {plan}"
|
||||
id="l+ikU1"
|
||||
values={{
|
||||
plan: mapPlanName(b.id),
|
||||
}}
|
||||
|
@ -14,7 +14,8 @@ export class DonateTask extends BaseUITask {
|
||||
<>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="Thanks for using {site}, please consider donating if you can." id="fBlba3"
|
||||
defaultMessage="Thanks for using {site}, please consider donating if you can."
|
||||
id="fBlba3"
|
||||
values={{ site: CONFIG.appNameCapitalized }}
|
||||
/>
|
||||
</p>
|
||||
|
@ -14,7 +14,8 @@ export class Nip5Task extends BaseUITask {
|
||||
return (
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="Hey, it looks like you dont have a Nostr Address yet, you should get one! Check out {link}" id="ojzbwv"
|
||||
defaultMessage="Hey, it looks like you dont have a Nostr Address yet, you should get one! Check out {link}"
|
||||
id="ojzbwv"
|
||||
values={{
|
||||
link: (
|
||||
<Link to="/nostr-address">
|
||||
|
@ -14,7 +14,8 @@ export class NoticeZapPoolDefault extends BaseUITask {
|
||||
<>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="A default Zap Pool split of {n} has been configured for {site} developers, you can disable it at any time in {link}" id="dmsiLv"
|
||||
defaultMessage="A default Zap Pool split of {n} has been configured for {site} developers, you can disable it at any time in {link}"
|
||||
id="dmsiLv"
|
||||
values={{
|
||||
site: CONFIG.appNameCapitalized,
|
||||
n: (
|
||||
|
@ -19,7 +19,8 @@ export class RenewSubTask extends BaseUITask {
|
||||
<>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
defaultMessage="Your {site_name} subscription is expired" id="jAmfGl"
|
||||
defaultMessage="Your {site_name} subscription is expired"
|
||||
id="jAmfGl"
|
||||
values={{
|
||||
site_name: CONFIG.appName,
|
||||
}}
|
||||
|
@ -99,8 +99,8 @@ export default class LNDHubWallet implements LNWallet {
|
||||
state: pRsp.payment_error
|
||||
? WalletInvoiceState.Failed
|
||||
: pRsp.payment_preimage
|
||||
? WalletInvoiceState.Paid
|
||||
: WalletInvoiceState.Pending,
|
||||
? WalletInvoiceState.Paid
|
||||
: WalletInvoiceState.Pending,
|
||||
} as WalletInvoice;
|
||||
}
|
||||
|
||||
|
@ -21,7 +21,7 @@ import {
|
||||
encodeTLVEntries,
|
||||
socialGraphInstance,
|
||||
} from "@snort/system";
|
||||
import PowWorkerURL from '@snort/system/src/pow-worker.ts?worker&url';
|
||||
import PowWorkerURL from "@snort/system/src/pow-worker.ts?worker&url";
|
||||
import { SnortContext } from "@snort/system-react";
|
||||
import { removeUndefined, throwIfOffline } from "@snort/shared";
|
||||
|
||||
@ -313,4 +313,4 @@ window.encodeTLV = encodeTLVEntries;
|
||||
|
||||
// Use react-helmet instead?
|
||||
document.title = CONFIG.appTitle;
|
||||
document.querySelector('link[rel="apple-touch-icon"]')?.setAttribute('href', CONFIG.appleTouchIconUrl);
|
||||
document.querySelector('link[rel="apple-touch-icon"]')?.setAttribute("href", CONFIG.appleTouchIconUrl);
|
||||
|
@ -1047,6 +1047,9 @@
|
||||
"eXT2QQ": {
|
||||
"defaultMessage": "Group Chat"
|
||||
},
|
||||
"egib+2": {
|
||||
"defaultMessage": "{n,plural,=1{& {n} other} other{& {n} others}}"
|
||||
},
|
||||
"fBI91o": {
|
||||
"defaultMessage": "Zap"
|
||||
},
|
||||
@ -1421,9 +1424,6 @@
|
||||
"vN5UH8": {
|
||||
"defaultMessage": "Profile Image"
|
||||
},
|
||||
"vOKedj": {
|
||||
"defaultMessage": "{n,plural,=1{& {n} other} other{& {n} others}}"
|
||||
},
|
||||
"vZ4quW": {
|
||||
"defaultMessage": "NIP-05 is a DNS based verification spec which helps to validate you as a real user."
|
||||
},
|
||||
|
@ -2,8 +2,8 @@
|
||||
//import ServiceWorkerURL from "./service-worker?worker&url";
|
||||
|
||||
export function register() {
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', () => {
|
||||
if ("serviceWorker" in navigator) {
|
||||
window.addEventListener("load", () => {
|
||||
//registerValidSW(ServiceWorkerURL);
|
||||
});
|
||||
}
|
||||
@ -37,7 +37,7 @@ async function registerValidSW(swUrl: string) {
|
||||
*/
|
||||
|
||||
export async function unregister() {
|
||||
if ('serviceWorker' in navigator) {
|
||||
if ("serviceWorker" in navigator) {
|
||||
const registration = await navigator.serviceWorker.ready;
|
||||
await registration.unregister();
|
||||
}
|
||||
|
@ -344,6 +344,7 @@
|
||||
"eJj8HD": "Get Verified",
|
||||
"eSzf2G": "A single zap of {nIn} sats will allocate {nOut} sats to the zap pool.",
|
||||
"eXT2QQ": "Group Chat",
|
||||
"egib+2": "{n,plural,=1{& {n} other} other{& {n} others}}",
|
||||
"fBI91o": "Zap",
|
||||
"fBlba3": "Thanks for using {site}, please consider donating if you can.",
|
||||
"fOksnD": "Can't vote because LNURL service does not support zaps",
|
||||
@ -468,7 +469,6 @@
|
||||
"v8lolG": "Start chat",
|
||||
"vB3oQ/": "Must be a contact list or pubkey list",
|
||||
"vN5UH8": "Profile Image",
|
||||
"vOKedj": "{n,plural,=1{& {n} other} other{& {n} others}}",
|
||||
"vZ4quW": "NIP-05 is a DNS based verification spec which helps to validate you as a real user.",
|
||||
"vhlWFg": "Poll Options",
|
||||
"vlbWtt": "Get a free one",
|
||||
|
@ -1,7 +1,7 @@
|
||||
import react from '@vitejs/plugin-react';
|
||||
import { VitePWA } from 'vite-plugin-pwa';
|
||||
import { visualizer } from 'rollup-plugin-visualizer';
|
||||
import { defineConfig, type PluginOption } from 'vite';
|
||||
import react from "@vitejs/plugin-react";
|
||||
import { VitePWA } from "vite-plugin-pwa";
|
||||
import { visualizer } from "rollup-plugin-visualizer";
|
||||
import { defineConfig } from "vite";
|
||||
|
||||
import appConfig from "config";
|
||||
|
||||
@ -9,24 +9,24 @@ export default defineConfig({
|
||||
plugins: [
|
||||
react(),
|
||||
VitePWA({
|
||||
strategies: 'injectManifest',
|
||||
srcDir: 'src',
|
||||
filename: 'service-worker.ts',
|
||||
strategies: "injectManifest",
|
||||
srcDir: "src",
|
||||
filename: "service-worker.ts",
|
||||
devOptions: {
|
||||
enabled: true,
|
||||
type: 'module',
|
||||
}
|
||||
type: "module",
|
||||
},
|
||||
}),
|
||||
visualizer({
|
||||
open: true,
|
||||
gzipSize: true,
|
||||
filename: 'dist/stats.html',
|
||||
} as PluginOption),
|
||||
filename: "dist/stats.html",
|
||||
}),
|
||||
],
|
||||
assetsInclude: ['**/*.md'],
|
||||
assetsInclude: ["**/*.md"],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': '/src',
|
||||
"@": "/src",
|
||||
},
|
||||
},
|
||||
define: {
|
||||
|
@ -18,8 +18,8 @@ export class PowWorker implements PowMiner {
|
||||
|
||||
constructor(workerPath: string) {
|
||||
this.#worker = new Worker(workerPath, {
|
||||
type: 'module',
|
||||
name: 'POW',
|
||||
type: "module",
|
||||
name: "POW",
|
||||
});
|
||||
this.#worker.onerror = ev => {
|
||||
console.error(ev);
|
||||
|
Loading…
Reference in New Issue
Block a user