diff --git a/packages/nicolium/src/components/statuses/status-link.tsx b/packages/nicolium/src/components/statuses/status-link.tsx new file mode 100644 index 000000000..65113b21a --- /dev/null +++ b/packages/nicolium/src/components/statuses/status-link.tsx @@ -0,0 +1,37 @@ +import { Link } from '@tanstack/react-router'; +import React from 'react'; + +import { useFrontendConfig } from '@/hooks/use-frontend-config'; +import { useLoggedIn } from '@/hooks/use-logged-in'; + +import type { Account, Status } from 'pl-api'; + +interface IStatusLink extends React.AnchorHTMLAttributes { + status: Pick; + account: Pick; +} + +const StatusLink: React.FC = ({ status, account, ...props }) => { + const { isLoggedIn } = useLoggedIn(); + const { allowDisplayingRemoteNoLogin } = useFrontendConfig(); + + const local = 'local' in account ? account.local : !account.acct.includes('@'); + + if (!isLoggedIn && !local && !allowDisplayingRemoteNoLogin) { + return ( + + {props.children} + + ); + } + + return ( + + ); +}; + +export { StatusLink }; diff --git a/packages/nicolium/src/components/statuses/status.tsx b/packages/nicolium/src/components/statuses/status.tsx index abe06c817..4fb672017 100644 --- a/packages/nicolium/src/components/statuses/status.tsx +++ b/packages/nicolium/src/components/statuses/status.tsx @@ -40,6 +40,7 @@ import StatusActionBar from './status-action-bar'; import StatusContent from './status-content'; import StatusInfo from './status-info'; import StatusLanguagePicker from './status-language-picker'; +import { StatusLink } from './status-link'; import StatusReactionsBar from './status-reactions-bar'; import StatusReplyMentions from './status-reply-mentions'; import Tombstone from './tombstone'; @@ -59,9 +60,9 @@ const AccountInfo: React.FC = React.memo(({ status }) => { const intl = useIntl(); return (
- { event.stopPropagation(); @@ -73,7 +74,7 @@ const AccountInfo: React.FC = React.memo(({ status }) => { size='sm' className='whitespace-nowrap' /> - + {!!status.edited_at && ( diff --git a/packages/nicolium/src/modals/media-modal.tsx b/packages/nicolium/src/modals/media-modal.tsx index d93c2c965..9422cef61 100644 --- a/packages/nicolium/src/modals/media-modal.tsx +++ b/packages/nicolium/src/modals/media-modal.tsx @@ -5,7 +5,6 @@ import iconArrowsOutSimple from '@phosphor-icons/core/regular/arrows-out-simple. import iconDownloadSimple from '@phosphor-icons/core/regular/download-simple.svg'; import iconX from '@phosphor-icons/core/regular/x.svg'; import { animated, useSpring } from '@react-spring/web'; -import { Link } from '@tanstack/react-router'; import { useDrag } from '@use-gesture/react'; import clsx from 'clsx'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; @@ -18,6 +17,7 @@ import ZoomableImage from '@/components/media/zoomable-image'; import MissingIndicator from '@/components/missing-indicator'; import PlaceholderStatus from '@/components/placeholders/placeholder-status'; import StatusActionBar from '@/components/statuses/status-action-bar'; +import { StatusLink } from '@/components/statuses/status-link'; import Icon from '@/components/ui/icon'; import IconButton from '@/components/ui/icon-button'; import Thread from '@/features/status/components/thread'; @@ -187,12 +187,9 @@ const MediaModal: React.FC = (props) => { } const link = status && ( - + - + ); if (attachment.type === 'image') {