diff --git a/src/features/nostr/Bech32Redirect.tsx b/src/features/nostr/Bech32Redirect.tsx new file mode 100644 index 000000000..4c9fdb16b --- /dev/null +++ b/src/features/nostr/Bech32Redirect.tsx @@ -0,0 +1,34 @@ +import { nip19 } from 'nostr-tools'; +import React from 'react'; +import { Redirect } from 'react-router-dom'; + +import MissingIndicator from 'soapbox/components/missing-indicator'; + +interface INIP19Redirect { + params: { + bech32: string; + }; +} + +const Bech32Redirect: React.FC = ({ params }) => { + try { + const result = nip19.decode(params.bech32); + + switch (result.type) { + case 'npub': + case 'nprofile': + return ; + case 'note': + return ; + case 'nevent': + return ; + default: + return ; + } + + } catch (e) { + return ; + } +}; + +export default Bech32Redirect; \ No newline at end of file diff --git a/src/features/ui/index.tsx b/src/features/ui/index.tsx index 5574196ab..dee1f3c56 100644 --- a/src/features/ui/index.tsx +++ b/src/features/ui/index.tsx @@ -140,6 +140,7 @@ import { EditIdentity, Domains, NostrRelays, + Bech32Redirect, } from './util/async-components'; import GlobalHotkeys from './util/global-hotkeys'; import { WrappedRoute } from './util/react-router-helpers'; @@ -284,6 +285,7 @@ const SwitchingColumnsArea: React.FC = ({ children }) => {features.events && } {features.events && } + {features.groups && } {features.groupsDiscovery && } @@ -361,6 +363,8 @@ const SwitchingColumnsArea: React.FC = ({ children }) => + + ); diff --git a/src/features/ui/util/async-components.ts b/src/features/ui/util/async-components.ts index c9fae695d..9d90afe95 100644 --- a/src/features/ui/util/async-components.ts +++ b/src/features/ui/util/async-components.ts @@ -170,4 +170,5 @@ export const SelectBookmarkFolderModal = lazy(() => import('soapbox/features/ui/ export const EditIdentity = lazy(() => import('soapbox/features/edit-identity')); export const Domains = lazy(() => import('soapbox/features/admin/domains')); export const EditDomainModal = lazy(() => import('soapbox/features/ui/components/modals/edit-domain-modal')); -export const NostrRelays = lazy(() => import('soapbox/features/nostr-relays')); \ No newline at end of file +export const NostrRelays = lazy(() => import('soapbox/features/nostr-relays')); +export const Bech32Redirect = lazy(() => import('soapbox/features/nostr/Bech32Redirect')); \ No newline at end of file