IGPAPI
    Preparing search index...

    Variable PostOpenedFromLinkScreenConst

    PostOpenedFromLinkScreen: ScreenDefinition<
        "PostOpenedFromLink",
        "screen",
        {
            carouselIndex?: number;
            feedPosition?: string
            | number;
            loggingInfoToken?: string;
            mediaId: string;
        },
        {
            carousel?: {
                index: number;
                noteMediaId: string;
                pk: string;
                size?: number;
            };
            mediaId: string;
            trackingToken: string;
        },
        PostOpenedFromLinkState,
        | IgApiError
        | RequestError
        | ParseError
        | TransportError
        | InvalidSkipOrdinalsError
        | ScreenDataError
        | ScreenEnterNavigationError,
        PlainJsonApiHttp
        | MobileNavigation,
        {
            like: (
                self: ScreenHandle,
                state: PostOpenedFromLinkState,
            ) => (
                ...args: [],
            ) => Effect<
                | {
                    data: {
                        xig_media_like: {
                            media: {
                                __typename?: (...)
                                | (...);
                                has_liked: boolean;
                                id: string;
                                strong_id__?: (...) | (...);
                            };
                        };
                    };
                }
                | MediaLikeRestResponse,
                | IgApiError
                | RequestError
                | ParseError
                | TransportError
                | UserIdNotFoundInState
                | SchemaError
                | GraphqlRootFieldMissingError
                | MobileMediaLikeWireNotDeclaredError
                | ScreenEnterConcurrentError
                | ScreenNotOnTopError,
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | NavigationWire
                | MobileNavigation
                | ScreenStack,
            >;
            openComments: (
                self: ScreenHandle,
                state: PostOpenedFromLinkState,
            ) => ScreenEdgeBound<
                ScreenEdgeShape<
                    ScreenDefinition<
                        "MediaComments",
                        "screen",
                        | {
                            carouselIndex?: string
                            | number;
                            commentSessionId?: string;
                            feedPosition?: string | number;
                            mediaId: string;
                            surface: "feed";
                        }
                        | {
                            chainingPosition?: string
                            | number;
                            chainingSeedMediaId?: string;
                            chainingSessionId?: string;
                            clientPosition?: string | number;
                            commentSessionId?: string;
                            mediaId: string;
                            rankingSessionId?: string;
                            storyRankingToken?: string;
                            surface: "reels";
                        },
                        {
                            commentSessionId: string;
                            createdMediaNoteIds: readonly string[];
                            mediaId: string;
                            surface: "feed"
                            | "reels";
                        },
                        MediaCommentsState,
                        InvalidSkipOrdinalsError
                        | ScreenEnterNavigationError,
                        MobileNavigation,
                        {
                            comment: (
                                self: ScreenHandle,
                                state: MediaCommentsState,
                            ) => (
                                ...args: [text: string, options?: (...) | (...)],
                            ) => Effect<
                                MediaCommentResponse,
                                (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...)
                                | (...),
                                (...) | (...) | (...) | (...) | (...) | (...) | (...) | (...),
                            >;
                        },
                        Record<never, never>,
                        never,
                    >,
                    readonly [{ commentSessionId?: string }],
                >,
                (
                    ...args: readonly [{ commentSessionId?: string }],
                ) => Effect<
                    AssembledHandle<
                        "MediaComments",
                        "screen",
                        {
                            commentSessionId: string;
                            createdMediaNoteIds: readonly string[];
                            mediaId: string;
                            surface: "feed"
                            | "reels";
                        },
                        {
                            comment: (
                                self: ScreenHandle,
                                state: MediaCommentsState,
                            ) => (
                                ...args: [text: ..., options?: ...],
                            ) => Effect<(...), (...), (...)>;
                        },
                        Record<never, never>,
                        ScreenHandle,
                        "required",
                    >,

                        | InvalidSkipOrdinalsError
                        | ScreenDataError
                        | ScreenEnterNavigationError
                        | ScreenEnterConcurrentError
                        | ScreenNotOnTopError
                        | ScreenEdgeInputError,
                >,
            >;
            repost: (
                self: ScreenHandle,
                state: PostOpenedFromLinkState,
            ) => (
                ...args: [text?: string],
            ) => Effect<
                { note: MediaCreateNoteResponse; trackingToken: string },

                    | IgApiError
                    | RequestError
                    | ParseError
                    | TransportError
                    | UserIdNotFoundInState
                    | SchemaError
                    | GraphqlRootFieldMissingError
                    | MobileMediaLikeWireNotDeclaredError
                    | MobileMediaRepostWireNotDeclaredError
                    | MediaRepostTextTooLongError
                    | ScreenEnterConcurrentError
                    | MediaRepostTextNotAcceptedError
                    | ScreenNotOnTopError,
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | GraphqlJsonHttp
                | MobileApplication
                | NavigationWire
                | MobileNavigation
                | ScreenStack,
            >;
        },
        Record<never, never>,
        never,
    > = ...

    ShortUrlFeedFragment:feed_short_url, a feed post opened full-screen (the short-URL feed).

    Visible: one media — a picture or video, or a carousel whose child the actions target — with the feed's like, comment, repost and share row; the comments sheet opens over it.

    Reached from: a feed post (FeedTimelinePostItem.open, source button; the 450 chain feed_timeline:1 → feed_short_url:2) or a link, which passes no feed context.

    Requests: its enter comes to front and then reads the media (GET api/v1/media/<id>/info/), the recorded first request of the Android 450 post captures; the answer gives the container id, the tracking token and the carousel child every action chains from. An answer with no media, or a carousel index it does not hold, is a ScreenDataError and the open rolls back.

    Actions (each the recording's own wire):

    • like — the post's like on the feed surface, with the build's wire (the REST like/ or the LikeMutation) and the feed answer's logging token and position;
    • repost(text?) — the like, then the note (media/create_note/v2/), both on the same carousel child. How the text reaches the note is the build's fact: a 'note-with-text' build sends it in the note; on an 'editor' build the text is the composer's to type, so a supplied text is refused with the typed MediaRepostTextNotAcceptedError before any request and only the blank note (the path to RepostNoteEditorScreen) goes out. The presented build is 'note-with-text', so both shapes have no live client; the recording that decides them is a 448/450 composer path (see the media section of AGENTS). Returns the note and its tracking token;
    • openComments(options) — the comments sheet over this post. The notes the composer shows were created by this process for this media (the create-note brick records each one, whichever brick asked), so the sheet reads them from its own state on enter; they are not an edge argument, and a trail step carries only the caller's options.

    Recorded by: Android 450 captures of a feed post's like, repost and mixed like-repost-comment.

    The post screen