IGPAPI
    Preparing search index...

    Variable MediaCommentsScreenConst

    MediaCommentsScreen: 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?: CommentOptions],
            ) => Effect<
                MediaCommentResponse,
                | IgApiError
                | RequestError
                | ParseError
                | TransportError
                | UserIdNotFoundInState
                | ScreenEnterConcurrentError
                | ScreenNotOnTopError,
                | PlainJsonApiHttp
                | Signature
                | MobileSession
                | MobileDevice
                | MobileApplication
                | NavigationWire
                | MobileNavigation
                | ScreenStack,
            >;
        },
        Record<never, never>,
        never,
    > = ...

    CommentListBottomsheetComposeFragment:comments_v2, the comment sheet.

    Visible: the media's comments and the composer, opened over the media it belongs to; the body and the client endpoint name the surface it sits over.

    Reached from: a post (PostOpenedFromLink.openComments) or a reel (ReelsViewer.openComments), source button.

    Requests: its enter comes to front and nothing else — the sheet's own stream_comments fetch is not modelled (no answer of it was recorded, so the library has no schema to read it with).

    Actions: comment(text) is the recorded composer: the offensive-comment check (media/comment/check_offensive_comment/) with the composer's session id, then the comment itself (media/<id>/comment/) in the body variant of the surface this sheet was opened over. options.commentCreationKey is the per-comment idempotence key the recording carries (generated when absent; a retry with the same key deduplicates the comment). The feed body names the notes the composer showed — what the library knows of them is the ids this process created for the media, read on enter from the process's note state (the composer's full set would come from stream_comments, which is not modelled). The sheet's module — and so the body's container_module — is the surface below it, from the navigation.

    Recorded by: Android 450 captures of a comment sent from a post and from the reels viewer.

    The comments sheet