import { useEntitySetContext } from "components/EntitySetProvider";
import { useEffect, useState } from "react";
import { useEntity } from "src/replicache";
import { useUIState } from "src/useUIState";
import { BlockProps, BlockLayout } from "../Block";
import { elementId } from "src/utils/elementId";
import { focusBlock } from "src/utils/focusBlock";
import { AppBskyFeedDefs, AppBskyFeedPost, RichText } from "@atproto/api";
import { BlueskyEmbed, PostNotAvailable } from "./BlueskyEmbed";
import { BlueskyPostEmpty } from "./BlueskyEmpty";
import { BlueskyRichText } from "./BlueskyRichText";
import { Separator } from "components/Layout";
import { BlueskyTiny } from "components/Icons/BlueskyTiny";
import { CommentTiny } from "components/Icons/CommentTiny";
import { useLocalizedDate } from "src/hooks/useLocalizedDate";
export const BlueskyPostBlock = (props: BlockProps & { preview?: boolean }) => {
let { permissions } = useEntitySetContext();
let isSelected = useUIState((s) =>
s.selectedBlocks.find((b) => b.value === props.entityID),
);
let post = useEntity(props.entityID, "block/bluesky-post")?.data.value;
useEffect(() => {
if (props.preview) return;
let input = document.getElementById(elementId.block(props.entityID).input);
if (isSelected) {
input?.focus();
} else input?.blur();
}, [isSelected, props.entityID, props.preview]);
switch (true) {
case !post:
if (!permissions.write) return null;
return (
);
case AppBskyFeedDefs.isBlockedPost(post) ||
AppBskyFeedDefs.isBlockedAuthor(post) ||
AppBskyFeedDefs.isNotFoundPost(post):
return (
) : (
)}
{BlueskyRichText({
record: record as AppBskyFeedPost.Record | null,
})}