From 042e776fed21fb826610c3558e08253538c5723d Mon Sep 17 00:00:00 2001 From: Martti Malmi Date: Mon, 20 Nov 2023 13:35:51 +0200 Subject: [PATCH] tmp disable sw, add FormattedMessage ids via eslint --- packages/app/.eslintrc.cjs | 10 +- packages/app/package.json | 1 + packages/app/src/Element/Chat/DM.tsx | 2 +- packages/app/src/Element/Chat/DmWindow.tsx | 2 +- packages/app/src/Element/Embed/CashuNuts.tsx | 6 +- packages/app/src/Element/Embed/Invoice.tsx | 2 +- packages/app/src/Element/Embed/MagnetLink.tsx | 2 +- packages/app/src/Element/Embed/PubkeyList.tsx | 4 +- .../app/src/Element/Embed/ZapstrEmbed.tsx | 2 +- packages/app/src/Element/Event/HiddenNote.tsx | 2 +- .../app/src/Element/Event/LongFormText.tsx | 6 +- .../app/src/Element/Event/NostrFileHeader.tsx | 4 +- .../app/src/Element/Event/NoteBroadcaster.tsx | 8 +- .../app/src/Element/Event/NoteContextMenu.tsx | 2 +- .../app/src/Element/Event/NoteCreator.tsx | 52 ++--- packages/app/src/Element/Event/NoteFooter.tsx | 14 +- packages/app/src/Element/Event/NoteInner.tsx | 6 +- .../app/src/Element/Event/NoteReaction.tsx | 2 +- packages/app/src/Element/Event/Poll.tsx | 14 +- packages/app/src/Element/Event/Reactions.tsx | 2 +- .../app/src/Element/Event/RevealMedia.tsx | 2 +- packages/app/src/Element/Event/ShowMore.tsx | 2 +- packages/app/src/Element/Event/Thread.tsx | 4 +- packages/app/src/Element/Event/Zap.tsx | 2 +- packages/app/src/Element/Feed/Timeline.tsx | 2 +- .../app/src/Element/Feed/TimelineFragment.tsx | 4 +- .../src/Element/IrisAccount/AccountName.tsx | 6 +- .../src/Element/IrisAccount/ActiveAccount.tsx | 4 +- .../src/Element/IrisAccount/IrisAccount.tsx | 8 +- .../Element/IrisAccount/ReservedAccount.tsx | 6 +- packages/app/src/Element/LiveEvent.tsx | 8 +- packages/app/src/Element/Nip5Service.tsx | 2 +- packages/app/src/Element/Offline.tsx | 4 +- packages/app/src/Element/PinPrompt.tsx | 14 +- packages/app/src/Element/ProxyImg.tsx | 2 +- packages/app/src/Element/RootTabs.tsx | 16 +- packages/app/src/Element/SearchBox.tsx | 4 +- packages/app/src/Element/SendSats.tsx | 28 +-- .../app/src/Element/SuggestedProfiles.tsx | 2 +- packages/app/src/Element/User/BadgeList.tsx | 4 +- packages/app/src/Element/User/Following.tsx | 2 +- packages/app/src/Element/messages.ts | 194 +++++++++--------- packages/app/src/Hooks/useLoginHandler.tsx | 2 +- packages/app/src/Pages/About.tsx | 2 +- packages/app/src/Pages/DeckLayout.tsx | 8 +- packages/app/src/Pages/Discover.tsx | 6 +- packages/app/src/Pages/DonatePage.tsx | 28 +-- packages/app/src/Pages/ErrorPage.tsx | 4 +- .../app/src/Pages/FreeNostrAddressPage.tsx | 2 +- packages/app/src/Pages/HashTagsPage.tsx | 6 +- packages/app/src/Pages/HelpPage.tsx | 4 +- packages/app/src/Pages/Layout.tsx | 2 +- packages/app/src/Pages/ListFeedPage.tsx | 2 +- packages/app/src/Pages/MessagesPage.tsx | 16 +- packages/app/src/Pages/NostrAddressPage.tsx | 2 +- packages/app/src/Pages/NostrLinkHandler.tsx | 2 +- packages/app/src/Pages/Notifications.tsx | 18 +- packages/app/src/Pages/Profile/ProfileTab.tsx | 18 +- packages/app/src/Pages/Root.tsx | 2 +- packages/app/src/Pages/SearchPage.tsx | 14 +- packages/app/src/Pages/WalletPage.tsx | 20 +- packages/app/src/Pages/ZapPool.tsx | 24 +-- packages/app/src/Pages/messages.ts | 66 +++--- .../app/src/Pages/onboarding/discover.tsx | 6 +- .../app/src/Pages/onboarding/moderation.tsx | 22 +- packages/app/src/Pages/onboarding/profile.tsx | 4 +- packages/app/src/Pages/onboarding/start.tsx | 32 +-- packages/app/src/Pages/onboarding/topics.tsx | 18 +- packages/app/src/Pages/settings/Accounts.tsx | 8 +- packages/app/src/Pages/settings/Cache.tsx | 24 +-- packages/app/src/Pages/settings/Keys.tsx | 6 +- .../app/src/Pages/settings/Moderation.tsx | 6 +- .../app/src/Pages/settings/Preferences.tsx | 40 ++-- packages/app/src/Pages/settings/Profile.tsx | 20 +- packages/app/src/Pages/settings/RelayInfo.tsx | 4 +- packages/app/src/Pages/settings/Relays.tsx | 2 +- packages/app/src/Pages/settings/Root.tsx | 16 +- .../app/src/Pages/settings/WalletSettings.tsx | 4 +- .../src/Pages/settings/handle/LNAddress.tsx | 14 +- .../src/Pages/settings/handle/ListHandles.tsx | 8 +- .../Pages/settings/handle/TransferHandle.tsx | 6 +- .../app/src/Pages/settings/handle/index.tsx | 2 +- packages/app/src/Pages/settings/messages.ts | 112 +++++----- .../app/src/Pages/settings/wallet/Cashu.tsx | 6 +- .../app/src/Pages/settings/wallet/LNC.tsx | 16 +- .../app/src/Pages/settings/wallet/LNDHub.tsx | 6 +- .../app/src/Pages/settings/wallet/NWC.tsx | 8 +- .../Pages/subscribe/ManageSubscription.tsx | 8 +- packages/app/src/Pages/subscribe/RenewSub.tsx | 8 +- .../src/Pages/subscribe/SubscriptionCard.tsx | 16 +- packages/app/src/Pages/subscribe/index.tsx | 36 ++-- packages/app/src/Tasks/DonateTask.tsx | 4 +- packages/app/src/Tasks/Nip5Task.tsx | 4 +- packages/app/src/Tasks/NoticeZapPool.tsx | 4 +- packages/app/src/Tasks/RenewSubscription.tsx | 2 +- yarn.lock | 55 ++++- 96 files changed, 646 insertions(+), 592 deletions(-) diff --git a/packages/app/.eslintrc.cjs b/packages/app/.eslintrc.cjs index 01143548..333691e5 100644 --- a/packages/app/.eslintrc.cjs +++ b/packages/app/.eslintrc.cjs @@ -1,7 +1,15 @@ module.exports = { extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"], parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint"], + plugins: ["@typescript-eslint", "formatjs"], + rules: { + "formatjs/enforce-id": [ + "error", + { + "idInterpolationPattern": "[sha512:contenthash:base64:6]" + } + ] + }, root: true, ignorePatterns: ["build/", "*.test.ts", "*.js"], env: { diff --git a/packages/app/package.json b/packages/app/package.json index da40d5f2..f916a75a 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -107,6 +107,7 @@ "css-loader": "^6.7.3", "css-minimizer-webpack-plugin": "^5.0.0", "eslint": "^8.48.0", + "eslint-plugin-formatjs": "^4.11.3", "eslint-webpack-plugin": "^4.0.1", "html-webpack-plugin": "^5.5.1", "jest": "^29.5.0", diff --git a/packages/app/src/Element/Chat/DM.tsx b/packages/app/src/Element/Chat/DM.tsx index f48b92a6..831d7a66 100644 --- a/packages/app/src/Element/Chat/DM.tsx +++ b/packages/app/src/Element/Chat/DM.tsx @@ -61,7 +61,7 @@ export default function DM(props: DMProps) { {content ? ( ) : ( - + )}
diff --git a/packages/app/src/Element/Chat/DmWindow.tsx b/packages/app/src/Element/Chat/DmWindow.tsx index 6a8f7608..c7c07062 100644 --- a/packages/app/src/Element/Chat/DmWindow.tsx +++ b/packages/app/src/Element/Chat/DmWindow.tsx @@ -22,7 +22,7 @@ export default function DmWindow({ id }: { id: string }) { {chat.participants.map(v => ( ))} - {chat.title ?? } + {chat.title ?? }
); } diff --git a/packages/app/src/Element/Embed/CashuNuts.tsx b/packages/app/src/Element/Embed/CashuNuts.tsx index 3af85607..597aa202 100644 --- a/packages/app/src/Element/Embed/CashuNuts.tsx +++ b/packages/app/src/Element/Embed/CashuNuts.tsx @@ -107,7 +107,7 @@ export default function CashuNuts({ token }: { token: string }) {

{c}

, n: , @@ -116,7 +116,7 @@ export default function CashuNuts({ token }: { token: string }) { {c}, url: new URL(cashu.token[0].mint).hostname, @@ -129,7 +129,7 @@ export default function CashuNuts({ token }: { token: string }) { diff --git a/packages/app/src/Element/Embed/Invoice.tsx b/packages/app/src/Element/Embed/Invoice.tsx index a49b666c..14d69abc 100644 --- a/packages/app/src/Element/Embed/Invoice.tsx +++ b/packages/app/src/Element/Embed/Invoice.tsx @@ -76,7 +76,7 @@ export default function Invoice(props: InvoiceProps) { {description &&

{description}

} {isPaid ? (
- +
) : ( diff --git a/packages/app/src/Element/Event/HiddenNote.tsx b/packages/app/src/Element/Event/HiddenNote.tsx index f55f885c..50b380f4 100644 --- a/packages/app/src/Element/Event/HiddenNote.tsx +++ b/packages/app/src/Element/Event/HiddenNote.tsx @@ -10,7 +10,7 @@ const HiddenNote = ({ children }: { children: React.ReactNode }) => {

- +

diff --git a/packages/app/src/Element/Event/NoteContextMenu.tsx b/packages/app/src/Element/Event/NoteContextMenu.tsx index bd8698b2..61c18a38 100644 --- a/packages/app/src/Element/Event/NoteContextMenu.tsx +++ b/packages/app/src/Element/Event/NoteContextMenu.tsx @@ -170,7 +170,7 @@ export function NoteContextMenu({ ev, ...props }: NosteContextMenuProps) { )} - + {ev.pubkey !== login.publicKey && !login.readonly && ( block(ev.pubkey)}> diff --git a/packages/app/src/Element/Event/NoteCreator.tsx b/packages/app/src/Element/Event/NoteCreator.tsx index 8bfd1a2d..f91623cd 100644 --- a/packages/app/src/Element/Event/NoteCreator.tsx +++ b/packages/app/src/Element/Event/NoteCreator.tsx @@ -52,7 +52,7 @@ export function NoteCreator() { throw new Error( formatMessage( { - defaultMessage: "Failed to parse zap split: {input}", + defaultMessage: "Failed to parse zap split: {input}", id: 'sZQzjQ', }, { input: s.value, @@ -69,7 +69,7 @@ export function NoteCreator() { throw new Error( formatMessage( { - defaultMessage: "Failed to parse zap split: {input}", + defaultMessage: "Failed to parse zap split: {input}", id: 'sZQzjQ', }, { input: s.value, @@ -81,7 +81,7 @@ export function NoteCreator() { throw new Error( formatMessage( { - defaultMessage: "Invalid zap split: {input}", + defaultMessage: "Invalid zap split: {input}", id: '8Y6bZQ', }, { input: s.value, @@ -258,12 +258,12 @@ export function NoteCreator() { return ( <>

- +

{note.pollOptions?.map((a, i) => (
- +
changePollOption(i, e.target.value)} /> @@ -353,24 +353,24 @@ export function NoteCreator() { <>

- +

- +

{renderRelayCustomisation()}

- +

- +
{[...(note.zapSplits ?? [])].map((v, i, arr) => (

- +

(v.zapSplits = arr.map((vv, ii) => (ii === i ? { ...vv, value: e.target.value } : vv))), ) } - placeholder={formatMessage({ defaultMessage: "npub / nprofile / nostr address" })} + placeholder={formatMessage({ defaultMessage: "npub / nprofile / nostr address", id: 'WvGmZT' })} />

- +

note.update(v => (v.zapSplits = [...(v.zapSplits ?? []), { type: "pubkey", value: "", weight: 1 }])) }> - +
- +

- +

- + - +
@@ -473,7 +473,7 @@ export function NoteCreator() { className={classNames("note-creator-icon", { active: note.advanced })} /> - + loadPreview()} @@ -483,10 +483,10 @@ export function NoteCreator() {
- {note.replyTo ? : } + {note.replyTo ? : }
@@ -536,7 +536,7 @@ export function NoteCreator() { {note.replyTo && ( <>

- +

- +

note.update(s => (s.hashTags = e))} placeHolder={formatMessage({ - defaultMessage: "Add up to 4 hashtags", + defaultMessage: "Add up to 4 hashtags", id: 'AIgmDy', })} separators={["Enter", ","]} /> {note.hashTags.length > 4 && ( - + )} note.update(s => (s.hashTags = appendDedupe(s.hashTags, [t])))} /> @@ -652,7 +652,7 @@ function TrendingHashTagsLine(props: { onClick: (tag: string) => void }) { return (
- +
{hashtags.slice(0, 5).map(a => ( diff --git a/packages/app/src/Element/Event/NoteFooter.tsx b/packages/app/src/Element/Event/NoteFooter.tsx index a474ea78..4e22bbbb 100644 --- a/packages/app/src/Element/Event/NoteFooter.tsx +++ b/packages/app/src/Element/Event/NoteFooter.tsx @@ -187,7 +187,7 @@ export default function NoteFooter(props: NoteFooterProps) { const pow = findTag(ev, "nonce") ? countLeadingZeros(ev.id) : undefined; if (pow) { return ( - + ); } } @@ -199,7 +199,7 @@ export default function NoteFooter(props: NoteFooterProps) { fastZap(e)} @@ -217,7 +217,7 @@ export default function NoteFooter(props: NoteFooterProps) { } @@ -232,7 +232,7 @@ export default function NoteFooter(props: NoteFooterProps) {
repost()} disabled={hasReposted()}> - + @@ -243,7 +243,7 @@ export default function NoteFooter(props: NoteFooterProps) { }) }> - + ); @@ -258,7 +258,7 @@ export default function NoteFooter(props: NoteFooterProps) { { if (readonly) return; @@ -274,7 +274,7 @@ export default function NoteFooter(props: NoteFooterProps) { handleReplyButtonClick()} /> diff --git a/packages/app/src/Element/Event/NoteInner.tsx b/packages/app/src/Element/Event/NoteInner.tsx index 445385a3..ab00dcaa 100644 --- a/packages/app/src/Element/Event/NoteInner.tsx +++ b/packages/app/src/Element/Event/NoteInner.tsx @@ -118,7 +118,7 @@ export function NoteInner(props: NoteProps) { message={ <> {c}, }} @@ -127,7 +127,7 @@ export function NoteInner(props: NoteProps) { <>   {c}, reason: contentWarning[1], @@ -136,7 +136,7 @@ export function NoteInner(props: NoteProps) { )}   - + }> {innerContent} diff --git a/packages/app/src/Element/Event/NoteReaction.tsx b/packages/app/src/Element/Event/NoteReaction.tsx index 508bbc8f..f2738a06 100644 --- a/packages/app/src/Element/Event/NoteReaction.tsx +++ b/packages/app/src/Element/Event/NoteReaction.tsx @@ -79,7 +79,7 @@ export default function NoteReaction(props: NoteReactionProps) {
) diff --git a/packages/app/src/Element/Event/RevealMedia.tsx b/packages/app/src/Element/Event/RevealMedia.tsx index 4b5b3951..15706b98 100644 --- a/packages/app/src/Element/Event/RevealMedia.tsx +++ b/packages/app/src/Element/Event/RevealMedia.tsx @@ -57,7 +57,7 @@ export default function RevealMedia(props: RevealMediaProps) { {i}, a: a => {a}, diff --git a/packages/app/src/Element/Event/ShowMore.tsx b/packages/app/src/Element/Event/ShowMore.tsx index 71fb1d5c..fc3369c0 100644 --- a/packages/app/src/Element/Event/ShowMore.tsx +++ b/packages/app/src/Element/Event/ShowMore.tsx @@ -14,7 +14,7 @@ const ShowMore = ({ text, onClick, className = "" }: ShowMoreProps) => { return (
); diff --git a/packages/app/src/Element/Event/Thread.tsx b/packages/app/src/Element/Event/Thread.tsx index 26d26218..169b4ef6 100644 --- a/packages/app/src/Element/Event/Thread.tsx +++ b/packages/app/src/Element/Event/Thread.tsx @@ -303,11 +303,11 @@ export function Thread(props: { onBack?: () => void; disableSpotlight?: boolean } const parentText = formatMessage({ - defaultMessage: "Parent", + defaultMessage: "Parent", id: 'ADmfQT', description: "Link to parent note in thread", }); const backText = formatMessage({ - defaultMessage: "Back", + defaultMessage: "Back", id: 'jfV8Wr', description: "Navigate back button on threads view", }); diff --git a/packages/app/src/Element/Event/Zap.tsx b/packages/app/src/Element/Event/Zap.tsx index 71c8a083..56ac9b58 100644 --- a/packages/app/src/Element/Event/Zap.tsx +++ b/packages/app/src/Element/Event/Zap.tsx @@ -60,7 +60,7 @@ export const ZapsSummary = ({ zaps }: ZapsSummaryProps) => { )} {restZaps.length > 0 ? ( diff --git a/packages/app/src/Element/Feed/Timeline.tsx b/packages/app/src/Element/Feed/Timeline.tsx index 29b033de..bdb20f17 100644 --- a/packages/app/src/Element/Feed/Timeline.tsx +++ b/packages/app/src/Element/Feed/Timeline.tsx @@ -84,7 +84,7 @@ const Timeline = (props: TimelineProps) => { {(props.loadMore === undefined || props.loadMore === true) && (
)} diff --git a/packages/app/src/Element/Feed/TimelineFragment.tsx b/packages/app/src/Element/Feed/TimelineFragment.tsx index bbdf052a..eed30e7f 100644 --- a/packages/app/src/Element/Feed/TimelineFragment.tsx +++ b/packages/app/src/Element/Feed/TimelineFragment.tsx @@ -39,7 +39,7 @@ export function TimelineRenderer(props: TimelineRendererProps) { return ; })} @@ -52,7 +52,7 @@ export function TimelineRenderer(props: TimelineRendererProps) { return ; })} diff --git a/packages/app/src/Element/IrisAccount/AccountName.tsx b/packages/app/src/Element/IrisAccount/AccountName.tsx index eaeef16a..5940f741 100644 --- a/packages/app/src/Element/IrisAccount/AccountName.tsx +++ b/packages/app/src/Element/IrisAccount/AccountName.tsx @@ -6,10 +6,10 @@ export default function AccountName({ name = "", link = true }) { return ( <>
- : {name} + : {name}
- :{" "} + :{" "} {link ? (
- : {name}@iris.to + : {name}@iris.to
); diff --git a/packages/app/src/Element/IrisAccount/ActiveAccount.tsx b/packages/app/src/Element/IrisAccount/ActiveAccount.tsx index 05245eec..f46c9add 100644 --- a/packages/app/src/Element/IrisAccount/ActiveAccount.tsx +++ b/packages/app/src/Element/IrisAccount/ActiveAccount.tsx @@ -61,12 +61,12 @@ export default function ActiveAccount({ name = "", setAsPrimary = () => {} }) { return (
- : + :

diff --git a/packages/app/src/Element/IrisAccount/IrisAccount.tsx b/packages/app/src/Element/IrisAccount/IrisAccount.tsx index 9a4259c3..b2c95e43 100644 --- a/packages/app/src/Element/IrisAccount/IrisAccount.tsx +++ b/packages/app/src/Element/IrisAccount/IrisAccount.tsx @@ -71,7 +71,7 @@ class IrisAccount extends Component { view = (

- (iris.to/username) + (iris.to/username)

this.showChallenge(e)}>
@@ -83,14 +83,14 @@ class IrisAccount extends Component { onInput={e => this.onNewUserNameChange(e)} />
{this.state.newUserNameValid ? ( <> - + @@ -106,7 +106,7 @@ class IrisAccount extends Component { return ( <>

- +

{view}

diff --git a/packages/app/src/Element/IrisAccount/ReservedAccount.tsx b/packages/app/src/Element/IrisAccount/ReservedAccount.tsx index 6e69aa42..6b9478dd 100644 --- a/packages/app/src/Element/IrisAccount/ReservedAccount.tsx +++ b/packages/app/src/Element/IrisAccount/ReservedAccount.tsx @@ -6,19 +6,19 @@ export default function ReservedAccount({ name = "", enableReserved = () => {},

{s} }} />

diff --git a/packages/app/src/Element/LiveEvent.tsx b/packages/app/src/Element/LiveEvent.tsx index 0436f5d1..1540dde4 100644 --- a/packages/app/src/Element/LiveEvent.tsx +++ b/packages/app/src/Element/LiveEvent.tsx @@ -19,7 +19,7 @@ export function LiveEvent({ ev }: { ev: NostrEvent }) {
- +
); @@ -27,7 +27,7 @@ export function LiveEvent({ ev }: { ev: NostrEvent }) { case "ended": { return ( - + ); } @@ -50,7 +50,7 @@ export function LiveEvent({ ev }: { ev: NostrEvent }) { return ( ); @@ -60,7 +60,7 @@ export function LiveEvent({ ev }: { ev: NostrEvent }) { return ( ); diff --git a/packages/app/src/Element/Nip5Service.tsx b/packages/app/src/Element/Nip5Service.tsx index d1d66305..96ad7290 100644 --- a/packages/app/src/Element/Nip5Service.tsx +++ b/packages/app/src/Element/Nip5Service.tsx @@ -283,7 +283,7 @@ export default function Nip5Service(props: Nip05ServiceProps) { : startBuy(handle, domain) }> {props.forSubscription ? ( - + ) : ( )} diff --git a/packages/app/src/Element/Offline.tsx b/packages/app/src/Element/Offline.tsx index 526d318c..eb5b8b97 100644 --- a/packages/app/src/Element/Offline.tsx +++ b/packages/app/src/Element/Offline.tsx @@ -8,11 +8,11 @@ export function Offline({ onRetry, className }: { onRetry?: () => void | Promise
- +
{onRetry && ( - + )}
diff --git a/packages/app/src/Element/PinPrompt.tsx b/packages/app/src/Element/PinPrompt.tsx index f4b35108..2f2b2a25 100644 --- a/packages/app/src/Element/PinPrompt.tsx +++ b/packages/app/src/Element/PinPrompt.tsx @@ -29,7 +29,7 @@ export function PinPrompt({ if (pin.length < 4) { setError( formatMessage({ - defaultMessage: "Pin too short", + defaultMessage: "Pin too short", id: 'LR1XjT', }), ); return; @@ -43,7 +43,7 @@ export function PinPrompt({ if (e instanceof InvalidPinError) { setError( formatMessage({ - defaultMessage: "Incorrect pin", + defaultMessage: "Incorrect pin", id: 'qz9fty', }), ); } else if (e instanceof Error) { @@ -65,7 +65,7 @@ export function PinPrompt({ }}>

- +

{subTitle ?
{subTitle}
: null} {error}}
submitPin()} type="submit"> - +
@@ -143,7 +143,7 @@ export function LoginUnlock() { subTitle={

- +

} onResult={unlockSession} diff --git a/packages/app/src/Element/ProxyImg.tsx b/packages/app/src/Element/ProxyImg.tsx index f93d0d29..9c2699eb 100644 --- a/packages/app/src/Element/ProxyImg.tsx +++ b/packages/app/src/Element/ProxyImg.tsx @@ -24,7 +24,7 @@ export const ProxyImg = (props: ProxyImgProps) => { setBypass(true); }}> - + ), }, @@ -41,7 +41,7 @@ export function RootTabs({ base }: { base?: string }) { element: ( <> - + ), }, @@ -52,7 +52,7 @@ export function RootTabs({ base }: { base?: string }) { element: ( <> - + ), }, @@ -63,7 +63,7 @@ export function RootTabs({ base }: { base?: string }) { element: ( <> - + ), }, @@ -74,7 +74,7 @@ export function RootTabs({ base }: { base?: string }) { element: ( <> - + ), }, @@ -85,7 +85,7 @@ export function RootTabs({ base }: { base?: string }) { element: ( <> - + ), }, @@ -96,7 +96,7 @@ export function RootTabs({ base }: { base?: string }) { element: ( <> - + ), }, @@ -107,7 +107,7 @@ export function RootTabs({ base }: { base?: string }) { element: ( <> - + ), }, diff --git a/packages/app/src/Element/SearchBox.tsx b/packages/app/src/Element/SearchBox.tsx index 48354ad8..f7369693 100644 --- a/packages/app/src/Element/SearchBox.tsx +++ b/packages/app/src/Element/SearchBox.tsx @@ -116,7 +116,7 @@ export default function SearchBox() {
setActiveIndex(0)} onClick={() => navigate(`/search/${encodeURIComponent(search)}`, { state: { forceRefresh: true } })}> - : {search} + : {search}
{main?.slice(0, MAX_RESULTS).map((result, idx) => (

- {success?.description ?? } + {success?.description ?? }

{success.url && (

@@ -123,9 +123,9 @@ export default function SendSats(props: SendSatsProps) { <>

{zapper?.canZap() ? ( - + ) : ( - + )}

@@ -141,9 +141,9 @@ export default function SendSats(props: SendSatsProps) { {t.zap?.pubkey && }

{zapper?.canZap() ? ( - + ) : ( - + )}

@@ -156,9 +156,9 @@ export default function SendSats(props: SendSatsProps) {

{zapper?.canZap() ? ( - + ) : ( - + )}

@@ -330,7 +330,7 @@ function SendSatsInput(props: { diff --git a/packages/app/src/Element/SuggestedProfiles.tsx b/packages/app/src/Element/SuggestedProfiles.tsx index da99611a..2f6351b5 100644 --- a/packages/app/src/Element/SuggestedProfiles.tsx +++ b/packages/app/src/Element/SuggestedProfiles.tsx @@ -57,7 +57,7 @@ export default function SuggestedProfiles() { return ( <>
- +

- +

{results.map(a => { diff --git a/packages/app/src/Pages/NostrAddressPage.tsx b/packages/app/src/Pages/NostrAddressPage.tsx index af31acde..d694a873 100644 --- a/packages/app/src/Pages/NostrAddressPage.tsx +++ b/packages/app/src/Pages/NostrAddressPage.tsx @@ -26,7 +26,7 @@ export default function NostrAddressPage() { return (

- +

diff --git a/packages/app/src/Pages/NostrLinkHandler.tsx b/packages/app/src/Pages/NostrLinkHandler.tsx index 4e0f33b4..be68c587 100644 --- a/packages/app/src/Pages/NostrLinkHandler.tsx +++ b/packages/app/src/Pages/NostrLinkHandler.tsx @@ -61,7 +61,7 @@ export default function NostrLinkHandler() { ) : ( - + )}

diff --git a/packages/app/src/Pages/Notifications.tsx b/packages/app/src/Pages/Notifications.tsx index 19e7aaac..10d09ac8 100644 --- a/packages/app/src/Pages/Notifications.tsx +++ b/packages/app/src/Pages/Notifications.tsx @@ -105,7 +105,7 @@ export default function NotificationsPage({ onClick }: { onClick?: (link: NostrL

- +

@@ -152,11 +152,11 @@ function NotificationSummary({ evs }: { evs: Array }) { const periodTabs = [ { value: NotificationSummaryPeriod.Daily, - text: , + text: , }, { value: NotificationSummaryPeriod.Weekly, - text: , + text: , }, ] as Array; @@ -225,7 +225,7 @@ function NotificationSummary({ evs }: { evs: Array }) {

- +

{filterIcon(NotificationSummaryFilter.Reactions, "heart-solid", "text-heart")} @@ -333,7 +333,7 @@ function NotificationGroup({ evs, onClick }: { evs: Array; onC case EventKind.Reaction: { return ( ; onC case EventKind.Repost: { return ( ; onC case EventKind.ZapReceipt: { return ( ; onC showUsername={kind === EventKind.TextNote} pubkey={v} size={40} - overrideUsername={v === "" ? formatMessage({ defaultMessage: "Anon" }) : undefined} + overrideUsername={v === "" ? formatMessage({ defaultMessage: "Anon", id: 'bfvyfs' }) : undefined} /> ))}
@@ -397,7 +397,7 @@ function NotificationGroup({ evs, onClick }: { evs: Array; onC {actionName( pubkeys.length - 1, firstPubkey === "anon" - ? formatMessage({ defaultMessage: "Anon" }) + ? formatMessage({ defaultMessage: "Anon", id: 'bfvyfs' }) : getDisplayName(firstPubkeyProfile, firstPubkey), )}
diff --git a/packages/app/src/Pages/Profile/ProfileTab.tsx b/packages/app/src/Pages/Profile/ProfileTab.tsx index e2b3f551..721dd273 100644 --- a/packages/app/src/Pages/Profile/ProfileTab.tsx +++ b/packages/app/src/Pages/Profile/ProfileTab.tsx @@ -70,7 +70,7 @@ const ProfileTab = { text: ( <> - + ), value: ProfileTabType.NOTES, @@ -79,7 +79,7 @@ const ProfileTab = { text: ( <> - + ), value: ProfileTabType.REACTIONS, @@ -88,7 +88,7 @@ const ProfileTab = { text: ( <> - + ), value: ProfileTabType.FOLLOWERS, @@ -97,7 +97,7 @@ const ProfileTab = { text: ( <> - + ), value: ProfileTabType.FOLLOWS, @@ -106,7 +106,7 @@ const ProfileTab = { text: ( <> - + ), value: ProfileTabType.ZAPS, @@ -115,7 +115,7 @@ const ProfileTab = { text: ( <> - + ), value: ProfileTabType.MUTED, @@ -124,7 +124,7 @@ const ProfileTab = { text: ( <> - + ), value: ProfileTabType.BLOCKED, @@ -133,7 +133,7 @@ const ProfileTab = { text: ( <> - + ), value: ProfileTabType.RELAYS, @@ -142,7 +142,7 @@ const ProfileTab = { text: ( <> - + ), value: ProfileTabType.BOOKMARKS, diff --git a/packages/app/src/Pages/Root.tsx b/packages/app/src/Pages/Root.tsx index 875e3411..801ac517 100644 --- a/packages/app/src/Pages/Root.tsx +++ b/packages/app/src/Pages/Root.tsx @@ -75,7 +75,7 @@ export const GlobalTab = () => { return (

- +

setSortPopular(e.target.value == "true")} value={sortPopular ? "true" : "false"}>
@@ -90,12 +90,12 @@ const SearchPage = () => {

- +

setSearch(e.target.value)} autoFocus={true} diff --git a/packages/app/src/Pages/WalletPage.tsx b/packages/app/src/Pages/WalletPage.tsx index 2e9d6751..360ddd45 100644 --- a/packages/app/src/Pages/WalletPage.tsx +++ b/packages/app/src/Pages/WalletPage.tsx @@ -41,7 +41,7 @@ export default function WalletPage() { if (e instanceof Error) { setError((e as Error).message); } else { - setError(formatMessage({ defaultMessage: "Unknown error" })); + setError(formatMessage({ defaultMessage: "Unknown error", id: 'qDwvZ4' })); } } } @@ -83,14 +83,14 @@ export default function WalletPage() { return ( <>

- +

loginWallet(unwrap(walletPassword))} disabled={(walletPassword?.length ?? 0) < 8}> - +
@@ -110,14 +110,14 @@ export default function WalletPage() { if (walletState.configs.length === 0) { return ( ); } return (

- +

) : ( - + ) } /> @@ -93,17 +93,17 @@ export default function ZapPoolPage() { return (

- +

- +

- +

@@ -115,7 +115,7 @@ export default function ZapPoolPage() {

@@ -134,7 +134,7 @@ export default function ZapPoolPage() {

@@ -147,7 +147,7 @@ export default function ZapPoolPage() {

{wallet && ( ZapPoolController?.payout(wallet)}> - + )}

@@ -164,7 +164,7 @@ export default function ZapPoolPage() { />

- +

{relayConnections.map(a => (
@@ -182,7 +182,7 @@ export default function ZapPoolPage() {
))}

- +

{UploaderServices.map(a => (
@@ -200,7 +200,7 @@ export default function ZapPoolPage() {
))}

- +

{DataProviders.map(a => (
diff --git a/packages/app/src/Pages/messages.ts b/packages/app/src/Pages/messages.ts index 8cc33e87..96b3f860 100644 --- a/packages/app/src/Pages/messages.ts +++ b/packages/app/src/Pages/messages.ts @@ -1,45 +1,45 @@ import { defineMessages } from "react-intl"; export default defineMessages({ - Login: { defaultMessage: "Login" }, - Global: { defaultMessage: "Global" }, - NewUsers: { defaultMessage: "New users page" }, - NoFollows: { defaultMessage: "Hmm nothing here.. Checkout {newUsersPage} to follow some recommended nostrich's!" }, - Reactions: { defaultMessage: "Reactions" }, - Followers: { defaultMessage: "Followers" }, - FollowersCount: { defaultMessage: "{n} Followers" }, - Follows: { defaultMessage: "Following" }, - FollowsCount: { defaultMessage: "{n} Following" }, - Zaps: { defaultMessage: "Zaps" }, - ZapsCount: { defaultMessage: "{n} Zaps" }, - Muted: { defaultMessage: "Muted" }, - MutedCount: { defaultMessage: "{n} Muted" }, - Blocked: { defaultMessage: "Blocked" }, - BlockedCount: { defaultMessage: "{n} Blocked" }, - Sats: { defaultMessage: "{n} {n, plural, =1 {sat} other {sats}}" }, - Following: { defaultMessage: "Following {n}" }, - Settings: { defaultMessage: "Settings" }, - Messages: { defaultMessage: "Messages" }, - MarkAllRead: { defaultMessage: "Mark All Read" }, - GetVerified: { defaultMessage: "Get Verified" }, - Nip05: { defaultMessage: `NIP-05 is a DNS based verification spec which helps to validate you as a real user.` }, - Nip05Pros: { defaultMessage: `Getting NIP-05 verified can help:` }, - AvoidImpersonators: { defaultMessage: "Prevent fake accounts from imitating you" }, - EasierToFind: { defaultMessage: "Make your profile easier to find and share" }, - Funding: { defaultMessage: "Fund developers and platforms providing NIP-05 verification services" }, + 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!`, + 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`, + 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", + defaultMessage: "Relays", id: 'RoOyAh', }, RelaysCount: { - defaultMessage: "{n} Relays", + defaultMessage: "{n} Relays", id: 'QDFTjG', }, - Bookmarks: { defaultMessage: "Bookmarks" }, - BookmarksCount: { defaultMessage: "{n} Bookmarks" }, - KeyPlaceholder: { defaultMessage: "nsec, npub, nip-05, hex" }, + Bookmarks: { defaultMessage: "Bookmarks", id: 'nGBrvw' }, + BookmarksCount: { defaultMessage: "{n} Bookmarks", id: '2a2YiP' }, + KeyPlaceholder: { defaultMessage: "nsec, npub, nip-05, hex", id: 'B6H7eJ' }, }); diff --git a/packages/app/src/Pages/onboarding/discover.tsx b/packages/app/src/Pages/onboarding/discover.tsx index 2b13f0ed..8b1e1c26 100644 --- a/packages/app/src/Pages/onboarding/discover.tsx +++ b/packages/app/src/Pages/onboarding/discover.tsx @@ -13,7 +13,7 @@ export function Discover() {

- +

} /> @@ -35,7 +35,7 @@ export function Discover() { state, }) }> - +
); diff --git a/packages/app/src/Pages/onboarding/moderation.tsx b/packages/app/src/Pages/onboarding/moderation.tsx index 37f9223c..f99ace7c 100644 --- a/packages/app/src/Pages/onboarding/moderation.tsx +++ b/packages/app/src/Pages/onboarding/moderation.tsx @@ -21,7 +21,7 @@ export const FixedModeration = { canEdit: false, },*/ nsfw: { - title: , + title: , words: [ "adult content", "explicit", @@ -48,7 +48,7 @@ export const FixedModeration = { canEdit: false, }, crypto: { - title: , + title: , words: [ "bitcoin", "btc", @@ -76,7 +76,7 @@ export const FixedModeration = { canEdit: false, }, politics: { - title: , + title: , words: [ "politics", "election", @@ -123,17 +123,17 @@ export function Moderation() {

- +

- +
- + - + {v.title}
{v.canEdit && (
- +
)}
- + - +
@@ -196,7 +196,7 @@ export function Moderation() { } navigate("/"); }}> - +
); diff --git a/packages/app/src/Pages/onboarding/profile.tsx b/packages/app/src/Pages/onboarding/profile.tsx index b1c7fca0..6cf15d16 100644 --- a/packages/app/src/Pages/onboarding/profile.tsx +++ b/packages/app/src/Pages/onboarding/profile.tsx @@ -36,11 +36,11 @@ export function Profile() { return (

- +

setPicture(p)} /> makeRandomKey()}> - + {error && {error}}
diff --git a/packages/app/src/Pages/onboarding/start.tsx b/packages/app/src/Pages/onboarding/start.tsx index 55a96691..9ac3abe2 100644 --- a/packages/app/src/Pages/onboarding/start.tsx +++ b/packages/app/src/Pages/onboarding/start.tsx @@ -43,7 +43,7 @@ export function SignIn() { } else { setError( formatMessage({ - defaultMessage: "Unknown login error", + defaultMessage: "Unknown login error", id: 'OLEm6z', }), ); } @@ -57,9 +57,9 @@ export function SignIn() {

- +

- {nip7Login && } + {nip7Login && }
{hasNip7 && !useKey && ( @@ -68,13 +68,13 @@ export function SignIn() {
- + - + setUseKey(true)}> - + )} @@ -83,7 +83,7 @@ export function SignIn() { setKey(e.target.value)} @@ -91,15 +91,15 @@ export function SignIn() { /> {error && {error}} - + )}
- + navigate("/login/sign-up")}> - +
@@ -116,16 +116,16 @@ export function SignUp() {

- +

- +
setName(e.target.value)} @@ -141,13 +141,13 @@ export function SignUp() { } as NewUserState, }) }> - +
- + navigate("/login")}> - +
diff --git a/packages/app/src/Pages/onboarding/topics.tsx b/packages/app/src/Pages/onboarding/topics.tsx index 0f5a95fc..ad3f53bb 100644 --- a/packages/app/src/Pages/onboarding/topics.tsx +++ b/packages/app/src/Pages/onboarding/topics.tsx @@ -9,7 +9,7 @@ import { NostrHashtagLink } from "@snort/system"; export const FixedTopics = { life: { - text: , + text: , tags: [ "life", "lifestyle", @@ -44,7 +44,7 @@ export const FixedTopics = { ], }, science: { - text: , + text: , tags: [ "science", "research", @@ -79,7 +79,7 @@ export const FixedTopics = { ], }, nature: { - text: , + text: , tags: [ "nature", "wildlife", @@ -114,7 +114,7 @@ export const FixedTopics = { ], }, business: { - text: , + text: , tags: [ "business", "entrepreneurship", @@ -149,7 +149,7 @@ export const FixedTopics = { ], }, game: { - text: , + text: , tags: [ "gaming", "videogames", @@ -184,7 +184,7 @@ export const FixedTopics = { ], }, sport: { - text: , + text: , tags: [ "sports", "athletics", @@ -219,7 +219,7 @@ export const FixedTopics = { ], }, photography: { - text: , + text: , tags: [ "photography", "landscape", @@ -274,7 +274,7 @@ export function Topics() { return (

- +

{Object.entries(FixedTopics).map(([k, v]) => tab(k, v.text))}
- +
); diff --git a/packages/app/src/Pages/settings/Accounts.tsx b/packages/app/src/Pages/settings/Accounts.tsx index ad99e6d3..1ac28b2b 100644 --- a/packages/app/src/Pages/settings/Accounts.tsx +++ b/packages/app/src/Pages/settings/Accounts.tsx @@ -12,7 +12,7 @@ export default function AccountsPage() { return (

- +

{logins.map(a => (
@@ -24,10 +24,10 @@ export default function AccountsPage() { actions={
} @@ -38,7 +38,7 @@ export default function AccountsPage() { {sub && ( )} diff --git a/packages/app/src/Pages/settings/Cache.tsx b/packages/app/src/Pages/settings/Cache.tsx index af4a6dae..58f9e654 100644 --- a/packages/app/src/Pages/settings/Cache.tsx +++ b/packages/app/src/Pages/settings/Cache.tsx @@ -18,17 +18,17 @@ export function CacheSettings() { return (

- +

- } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } />
); } @@ -45,7 +45,7 @@ function CacheDetails({ cache, name }: { cache: FeedCache; name: ReactNode {name} , count2: , @@ -55,7 +55,7 @@ function CacheDetails({ cache, name }: { cache: FeedCache; name: ReactNode
cache.clear()}> - +
diff --git a/packages/app/src/Pages/settings/Keys.tsx b/packages/app/src/Pages/settings/Keys.tsx index fa145a47..2179c324 100644 --- a/packages/app/src/Pages/settings/Keys.tsx +++ b/packages/app/src/Pages/settings/Keys.tsx @@ -12,14 +12,14 @@ export default function ExportKeys() { return (

- +

{privateKeyData instanceof KeyStorage && ( <>

- +

@@ -27,7 +27,7 @@ export default function ExportKeys() { {generatedEntropy && ( <>

- +

{hexToMnemonic(generatedEntropy ?? "") diff --git a/packages/app/src/Pages/settings/Moderation.tsx b/packages/app/src/Pages/settings/Moderation.tsx index ecc9a8dd..e3a5b787 100644 --- a/packages/app/src/Pages/settings/Moderation.tsx +++ b/packages/app/src/Pages/settings/Moderation.tsx @@ -34,7 +34,7 @@ export function ModerationSettings() { return ( <>

- +

@@ -46,14 +46,14 @@ export function ModerationSettings() { onChange={e => setMuteWord(e.target.value.toLowerCase())} />
{login.appData.item.mutedWords.map(v => (
{v}
))} diff --git a/packages/app/src/Pages/settings/Preferences.tsx b/packages/app/src/Pages/settings/Preferences.tsx index 957e805d..45f59aa6 100644 --- a/packages/app/src/Pages/settings/Preferences.tsx +++ b/packages/app/src/Pages/settings/Preferences.tsx @@ -46,7 +46,7 @@ const PreferencesPage = () => {

- +

{

- +

- +
@@ -251,10 +251,10 @@ const PreferencesPage = () => {

- +

- +
@@ -268,10 +268,10 @@ const PreferencesPage = () => {

- +

- +
@@ -316,7 +316,7 @@ const PreferencesPage = () => { type="text" value={perf.imgProxyConfig?.url} placeholder={formatMessage({ - defaultMessage: "URL..", + defaultMessage: "URL..", id: 'cQfLWb', description: "Placeholder text for imgproxy url textbox", })} onChange={e => @@ -340,7 +340,7 @@ const PreferencesPage = () => { type="password" value={perf.imgProxyConfig?.key} placeholder={formatMessage({ - defaultMessage: "Hex Key..", + defaultMessage: "Hex Key..", id: 'H+vHiz', description: "Hexidecimal 'key' input for improxy", })} onChange={e => @@ -364,7 +364,7 @@ const PreferencesPage = () => { type="password" value={perf.imgProxyConfig?.salt} placeholder={formatMessage({ - defaultMessage: "Hex Salt..", + defaultMessage: "Hex Salt..", id: 'TpgeGw', description: "Hexidecimal 'salt' input for imgproxy", })} onChange={e => diff --git a/packages/app/src/Pages/settings/Profile.tsx b/packages/app/src/Pages/settings/Profile.tsx index 3f8fa74e..09e426ae 100644 --- a/packages/app/src/Pages/settings/Profile.tsx +++ b/packages/app/src/Pages/settings/Profile.tsx @@ -117,7 +117,7 @@ export default function ProfileSettings(props: ProfileSettingsProps) {

- +

- +