import { useEntitySetContext } from "components/EntitySetProvider"; import { useEffect } 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 } from "@atproto/api"; import { PostNotAvailable } from "./BlueskyEmbed"; import { BlueskyPostEmpty } from "./BlueskyEmpty"; import { BskyPostContent } from "app/lish/[did]/[publication]/[rkey]/BskyPostContent"; import { PostView } from "@atproto/api/dist/client/types/app/bsky/feed/defs"; 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; let clientHost = useEntity(props.entityID, "bluesky-post/host")?.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 ( ); case AppBskyFeedDefs.isThreadViewPost(post): let postView = post.post as PostView; return ( ); } };