From 283e865006c1fbde52178cb07f33a097be854b80 Mon Sep 17 00:00:00 2001 From: Mary Kate Fain Date: Tue, 14 May 2024 11:43:56 -0500 Subject: [PATCH 1/4] copy npub --- src/features/account/components/header.tsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/features/account/components/header.tsx b/src/features/account/components/header.tsx index 392ecd834..dbae32b2d 100644 --- a/src/features/account/components/header.tsx +++ b/src/features/account/components/header.tsx @@ -1,6 +1,7 @@ import { useMutation } from '@tanstack/react-query'; import { AxiosError } from 'axios'; import { List as ImmutableList } from 'immutable'; +import { npubEncode } from 'nostr-tools/nip19'; import React from 'react'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; import { useHistory } from 'react-router-dom'; @@ -45,6 +46,7 @@ const messages = defineMessages({ mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' }, report: { id: 'account.report', defaultMessage: 'Report @{name}' }, copy: { id: 'account.copy', defaultMessage: 'Copy link to profile' }, + npub: { id: 'account.npub', defaultMessage: 'Copy user Npub' }, share: { id: 'account.share', defaultMessage: 'Share @{name}\'s profile' }, media: { id: 'account.media', defaultMessage: 'Media' }, blockDomain: { id: 'account.block_domain', defaultMessage: 'Hide everything from {domain}' }, @@ -276,6 +278,16 @@ const Header: React.FC = ({ account }) => { copy(account.url); }; + const handleCopyNpub: React.EventHandler = (e) => { + // Check if the account object has an 'pubkey' property, convert to npub, and copy it + if (account && account.nostr.pubkey) { + const npub = npubEncode(account.nostr.pubkey); + copy(npub); + } else { + console.error('Account Npub is not available.'); + } + }; + const makeMenu = () => { const menu: Menu = []; @@ -316,6 +328,12 @@ const Header: React.FC = ({ account }) => { icon: require('@tabler/icons/outline/clipboard-copy.svg'), }); + menu.push({ + text: intl.formatMessage(messages.npub), + action: handleCopyNpub, + icon: require('@tabler/icons/outline/clipboard-copy.svg'), + }); + if (!ownAccount) return menu; if (features.searchFromAccount) { From bed49d1efdaa695a9805292fd97bfaed431f78a9 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 14 May 2024 12:33:42 -0500 Subject: [PATCH 2/4] Npub -> npub, yarn i18n --- src/features/account/components/header.tsx | 8 ++++---- src/locales/en.json | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/features/account/components/header.tsx b/src/features/account/components/header.tsx index dbae32b2d..1a23b3719 100644 --- a/src/features/account/components/header.tsx +++ b/src/features/account/components/header.tsx @@ -1,7 +1,7 @@ import { useMutation } from '@tanstack/react-query'; import { AxiosError } from 'axios'; import { List as ImmutableList } from 'immutable'; -import { npubEncode } from 'nostr-tools/nip19'; +import { nip19 } from 'nostr-tools'; import React from 'react'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; import { useHistory } from 'react-router-dom'; @@ -46,7 +46,7 @@ const messages = defineMessages({ mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' }, report: { id: 'account.report', defaultMessage: 'Report @{name}' }, copy: { id: 'account.copy', defaultMessage: 'Copy link to profile' }, - npub: { id: 'account.npub', defaultMessage: 'Copy user Npub' }, + npub: { id: 'account.npub', defaultMessage: 'Copy user npub' }, share: { id: 'account.share', defaultMessage: 'Share @{name}\'s profile' }, media: { id: 'account.media', defaultMessage: 'Media' }, blockDomain: { id: 'account.block_domain', defaultMessage: 'Hide everything from {domain}' }, @@ -281,10 +281,10 @@ const Header: React.FC = ({ account }) => { const handleCopyNpub: React.EventHandler = (e) => { // Check if the account object has an 'pubkey' property, convert to npub, and copy it if (account && account.nostr.pubkey) { - const npub = npubEncode(account.nostr.pubkey); + const npub = nip19.npubEncode(account.nostr.pubkey); copy(npub); } else { - console.error('Account Npub is not available.'); + console.error('Account npub is not available.'); } }; diff --git a/src/locales/en.json b/src/locales/en.json index 64d7aa2f9..2a5cad6ce 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -38,6 +38,7 @@ "account.mute": "Mute @{name}", "account.muted": "Muted", "account.never_active": "Never", + "account.npub": "Copy user npub", "account.patron": "Patron", "account.posts": "Posts", "account.posts_with_replies": "Posts & replies", From 790b3aa8c27aeba3033f111dda4f8fa50d3b8e1e Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 14 May 2024 12:35:23 -0500 Subject: [PATCH 3/4] AccountHeader: only show "copy npub" menu item on Ditto --- src/features/account/components/header.tsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/features/account/components/header.tsx b/src/features/account/components/header.tsx index 1a23b3719..01cdc51c9 100644 --- a/src/features/account/components/header.tsx +++ b/src/features/account/components/header.tsx @@ -328,11 +328,13 @@ const Header: React.FC = ({ account }) => { icon: require('@tabler/icons/outline/clipboard-copy.svg'), }); - menu.push({ - text: intl.formatMessage(messages.npub), - action: handleCopyNpub, - icon: require('@tabler/icons/outline/clipboard-copy.svg'), - }); + if (account.nostr.pubkey) { + menu.push({ + text: intl.formatMessage(messages.npub), + action: handleCopyNpub, + icon: require('@tabler/icons/outline/clipboard-copy.svg'), + }); + } if (!ownAccount) return menu; From 7255066c2527509d947b45fb2a6fabbaf0e25453 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 14 May 2024 12:37:03 -0500 Subject: [PATCH 4/4] SImplify handleCopyNpub --- src/features/account/components/header.tsx | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/features/account/components/header.tsx b/src/features/account/components/header.tsx index 01cdc51c9..837b5c976 100644 --- a/src/features/account/components/header.tsx +++ b/src/features/account/components/header.tsx @@ -279,13 +279,7 @@ const Header: React.FC = ({ account }) => { }; const handleCopyNpub: React.EventHandler = (e) => { - // Check if the account object has an 'pubkey' property, convert to npub, and copy it - if (account && account.nostr.pubkey) { - const npub = nip19.npubEncode(account.nostr.pubkey); - copy(npub); - } else { - console.error('Account npub is not available.'); - } + copy(nip19.npubEncode(account.nostr.pubkey!)); }; const makeMenu = () => {