client/packages/chat/src/components/media.tsx
Alois 25c7ee7c26
Some checks failed
/ build-web (push) Failing after 4m33s
/ build-desktop (linux) (push) Failing after 4m36s
/ build-mobile (push) Failing after 7m7s
/ release (push) Has been skipped
(fix): actually migrate all the imports from tensamin/ui to methanium/ui
(feat): update legal loading screen
2026-07-25 18:12:54 +02:00

47 lines
1.5 KiB
TypeScript

import Text from "@tensamin/markdown/text";
import { useStorage } from "@tensamin/storage/context";
import { Tooltip, TooltipContent, TooltipTrigger } from "@methanium/ui";
import { TriangleAlert } from "lucide-react";
import { useState, useMemo, useEffect } from "react";
import MediaSaveButton from "./mediaSaveButton";
export default function Media({ link }: { link: string }) {
const { load } = useStorage();
const [trustedDomains, setTrustedDomains] = useState<string[]>([]);
const [hidden, setHidden] = useState(true);
const hostname = useMemo(() => new URL(link).hostname, [link]);
useEffect(() => {
load("chat_trusted_domains").then(setTrustedDomains);
}, [load]);
return trustedDomains.includes(hostname) ? (
<div className="group relative inline-block">
{hidden ? (
<Text value={link} />
) : (
<MediaSaveButton className="top-2" url={link} />
)}
<img
src={link}
hidden={hidden}
onLoad={() => setHidden(false)}
className="max-h-70 max-w-70 py-1 rounded-lg"
/>
</div>
) : (
<div className="flex gap-1 items-center">
<Tooltip>
<TooltipTrigger
render={<TriangleAlert className="size-4 stroke-yellow-400" />}
/>
<TooltipContent>
Link embeds can get your IP-Address! You can configure trusted domains
in the settings.
</TooltipContent>
</Tooltip>
<Text value={link} />
</div>
);
}