igpapi — Instagram private API Simulator for Node.js (API reference) 4.14.0
    Preparing search index...

    Variable DirectThreadDetailsScreenConst

    DirectThreadDetailsScreen: ScreenDefinition<
        "DirectThreadDetails",
        "screen",
        | {
            is_group: false;
            peer_user_fbid?: string;
            peer_user_id?: string;
            thread_title: string;
            thread_v2_id: string;
        }
        | {
            is_group: true;
            lead_user_id?: string;
            thread_title: string;
            thread_v2_id: string;
        },
        | {
            is_group: false;
            peer_user_fbid?: string;
            peer_user_id?: string;
            thread_title: string;
            thread_v2_id: string;
        }
        | {
            is_group: true;
            lead_user_id?: string;
            thread_title: string;
            thread_v2_id: string;
        },
        | {
            is_group: false;
            peer_user_fbid?: string;
            peer_user_id?: string;
            thread_title: string;
            thread_v2_id: string;
        }
        | {
            is_group: true;
            lead_user_id?: string;
            thread_title: string;
            thread_v2_id: string;
        },
        IgApiError
        | RequestError
        | ParseError
        | TransportError,
        PlainJsonApiHttp | GraphqlJsonHttp | MobileApplication | MobileNavigation,
        {
            openSharedMedia: (
                self: ScreenHandle,
                state:
                    | {
                        is_group: false;
                        peer_user_fbid?: string;
                        peer_user_id?: string;
                        thread_title: string;
                        thread_v2_id: string;
                    }
                    | {
                        is_group: true;
                        lead_user_id?: string;
                        thread_title: string;
                        thread_v2_id: string;
                    },
            ) => ScreenEdgeBound<
                ScreenEdgeShape<
                    ScreenDefinition<
                        "DirectThreadSharedMedia",
                        "screen",
                        { is_group: boolean; thread_title: string; thread_v2_id: string },
                        { is_group: boolean; thread_title: string; thread_v2_id: string },
                        { is_group: boolean; thread_title: string; thread_v2_id: string },
                        IgApiError | RequestError | ParseError | TransportError,
                        PlainJsonApiHttp | MobileNavigation | AndroidDirectSurface,
                        {
                            openCustomizeChat: (
                                self: ScreenHandle,
                                state: {
                                    is_group: boolean;
                                    thread_title: string;
                                    thread_v2_id: string;
                                },
                            ) => ScreenEdgeBound<
                                ScreenEdgeShape<
                                    ScreenDefinition<
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                    >,
                                    [],
                                    "button",
                                    AndroidScreens,
                                >,
                                () => Effect<(...), (...), (...)>,
                            >;
                            openGroupNameEditor: (
                                self: ScreenHandle,
                                state: {
                                    is_group: boolean;
                                    thread_title: string;
                                    thread_v2_id: string;
                                },
                            ) => ScreenEdgeBound<
                                ScreenEdgeShape<
                                    ScreenDefinition<
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                    >,
                                    [],
                                    "button",
                                    AndroidScreens,
                                >,
                                (...args: []) => Effect<(...), (...), (...)>,
                            >;
                        },
                        Record<never, never>,
                        never,
                        "thread_v2_id",
                    >,
                    [],
                    "button",
                    AndroidScreens,
                >,
                (
                    ...args: [],
                ) => Effect<
                    AssembledHandle<
                        "DirectThreadSharedMedia",
                        "screen",
                        { is_group: boolean; thread_title: string; thread_v2_id: string },
                        {
                            openCustomizeChat: (
                                self: ScreenHandle,
                                state: {
                                    is_group: boolean;
                                    thread_title: string;
                                    thread_v2_id: string;
                                },
                            ) => ScreenEdgeBound<
                                ScreenEdgeShape<(...), (...), (...), (...)>,
                                () => ...,
                            >;
                            openGroupNameEditor: (
                                self: ScreenHandle,
                                state: {
                                    is_group: boolean;
                                    thread_title: string;
                                    thread_v2_id: string;
                                },
                            ) => ScreenEdgeBound<
                                ScreenEdgeShape<(...), (...), (...), (...)>,
                                (...args: ...) => ...,
                            >;
                        },
                        Record<never, never>,
                        ScreenHandle,
                        "required",
                        true,
                        "thread_v2_id",
                        AndroidScreens,
                    >,

                        | IgApiError
                        | RequestError
                        | ParseError
                        | TransportError
                        | ScreenDataError
                        | ScreenEnterConcurrentError
                        | ScreenEdgeInputError,
                    | PlainJsonApiHttp
                    | MobileNavigation
                    | ScreenStack
                    | ScreenCatalog
                    | AndroidDirectSurface,
                >,
            >;
        },
        Record<never, never>,
        never,
        "thread_v2_id",
    > = ...

    ThreadDetailHomePageFragment, a thread's details hub (the app's own module name; "HomePage" is its layout part and is dropped from the public name).

    What a person sees: the thread's details entries — its shared links, collections, shared media and nicknames. The modelled data is the thread and its name; the tap's shared links and collections and, on a one-to-one thread, the peer's sharing info are sent, and their answers are not shown.

    Actions: openSharedMedia opens the thread's shared media list; no other action is modelled.

    How it is reached: from the conversation (DirectThread.openThreadDetails); the edge takes the next ordinal and, on the thread's first child, one more for the screen no request names (see the thread's openThreadDetails).

    Burst, as the 451 app has it: tapping the hub sends the thread's shared links and collections before the hub comes to front; after it, a one-to-one thread sends GetUserSharingInfo for the peer and then DirectThreadProfileUpdatesQuery and the Aura upsell's MetaSubsEntrypointInfoBatchQuery. Both name the peer, the thread's own user (users[0]): its pk is the sharing-info query's user_id (this screen's input peer_user_id) and its fbid_v2 is the profile-updates query's ig_user_fbid (input peer_user_fbid) — the decompiled path builds IGUserDictFromFBIDQuery from thread.users[0].fbid_v2 and the 451 answers carry the same user for both. Neither value is read back from the sharing-info answer: the answer carries only the user's id and friend_map_sharing_status. The sharing-info call is best-effort (its answer is not read): a refused answer leaves the hub usable, and only a session-fatal one fails the open. An input without the Facebook id sends the sharing info but no profile updates, never a derived one. A group thread sends the tap's shared links and collections and, when it comes back in front, GetUserSharingInfo for its first participant; it sends no profile updates and no upsell batch. A one-to-one thread whose open carried no peer id sends none of them: the hub needs the peer's pk, and no 1:1 thread lacks its peer, so this is the honest empty case rather than a request with a made-up id.

    Guide: A conversation's details