CompactToot: added preview cards

This commit is contained in:
thislight 2024-08-17 18:09:55 +08:00
parent b133a9b9a7
commit 13ad3e4958
No known key found for this signature in database
GPG key ID: A50F9451AC56A63E
2 changed files with 13 additions and 4 deletions

View file

@ -1,12 +1,11 @@
import type { mastodon } from "masto";
import { type Component } from "solid-js";
import { Show, type Component } from "solid-js";
import tootStyle from "./toot.module.css";
import { formatRelative } from "date-fns";
import Img from "../material/Img";
import { Body2 } from "../material/typography";
import { css } from "solid-styled";
import { appliedCustomEmoji } from "../masto/toot";
import cardStyle from "../material/cards.module.css";
import { TootPreviewCard } from "./RegularToot";
type CompactTootProps = {
status: mastodon.v1.Status;
@ -48,6 +47,9 @@ const CompactToot: Component<CompactTootProps> = (props) => {
}}
class={[tootStyle.compactTootContent].join(" ")}
></div>
<Show when={toot().card}>
<TootPreviewCard src={toot().card!} alwaysCompact />
</Show>
</section>
);
};

View file

@ -197,10 +197,17 @@ function TootAuthorGroup(props: { status: mastodon.v1.Status; now: Date }) {
);
}
function TootPreviewCard(props: { src: mastodon.v1.PreviewCard }) {
export function TootPreviewCard(props: {
src: mastodon.v1.PreviewCard;
alwaysCompact?: boolean;
}) {
let root: HTMLAnchorElement;
createEffect(() => {
if (props.alwaysCompact) {
root.classList.add(tootStyle.compact);
return;
}
if (!props.src.width) return;
const width = root.getBoundingClientRect().width;
if (width > props.src.width) {