diff --git a/src/Element/DM.tsx b/src/Element/DM.tsx index 3026308e..31315128 100644 --- a/src/Element/DM.tsx +++ b/src/Element/DM.tsx @@ -24,6 +24,7 @@ export default function DM(props: DMProps) { const [decrypted, setDecrypted] = useState(false); const { ref, inView } = useInView(); const isMe = props.data.pubkey === pubKey; + const otherPubkey = isMe ? pubKey : props.data.tags.find(a => a[0] === "p")![1]; async function decrypt() { let e = new Event(props.data); @@ -46,7 +47,7 @@ export default function DM(props: DMProps) {
- +
) diff --git a/src/Element/HyperText.tsx b/src/Element/HyperText.tsx new file mode 100644 index 00000000..52625ff4 --- /dev/null +++ b/src/Element/HyperText.tsx @@ -0,0 +1,106 @@ +import { useCallback } from 'react'; +import { useSelector } from 'react-redux'; +import { TwitterTweetEmbed } from "react-twitter-embed"; + +import { + FileExtensionRegex, + YoutubeUrlRegex, + TweetUrlRegex, + TidalRegex, + SoundCloudRegex, + MixCloudRegex, + SpotifyRegex +} from "Const"; +import { RootState } from 'State/Store'; +import SoundCloudEmbed from 'Element/SoundCloudEmded' +import MixCloudEmbed from 'Element/MixCloudEmbed'; +import SpotifyEmbed from "Element/SpotifyEmbed"; +import TidalEmbed from "Element/TidalEmbed"; +import { ProxyImg } from 'Element/ProxyImg'; +import { HexKey } from 'Nostr'; + +export default function HyperText({ link, creator }: { link: string, creator: HexKey }) { + const pref = useSelector((s: RootState) => s.login.preferences); + const follows = useSelector((s: RootState) => s.login.follows); + + const render = useCallback(() => { + const a = link; + try { + const hideNonFollows = pref.autoLoadMedia === "follows-only" && !follows.includes(creator); + if (pref.autoLoadMedia === "none" || hideNonFollows) { + return e.stopPropagation()} target="_blank" rel="noreferrer" className="ext">{a} + } + const url = new URL(a); + const youtubeId = YoutubeUrlRegex.test(a) && RegExp.$1; + const tweetId = TweetUrlRegex.test(a) && RegExp.$2; + const tidalId = TidalRegex.test(a) && RegExp.$1; + const soundcloundId = SoundCloudRegex.test(a) && RegExp.$1; + const mixcloudId = MixCloudRegex.test(a) && RegExp.$1; + const spotifyId = SpotifyRegex.test(a); + const extension = FileExtensionRegex.test(url.pathname.toLowerCase()) && RegExp.$1; + if (extension) { + switch (extension) { + case "gif": + case "jpg": + case "jpeg": + case "png": + case "bmp": + case "webp": { + return ; + } + case "wav": + case "mp3": + case "ogg": { + return