IGPAPI
    Preparing search index...

    Variable DirectThreadDetailsScreenConst

    DirectThreadDetailsScreen: ScreenDefinition<
        "DirectThreadDetails",
        "screen",
        {
            is_group: boolean;
            peer_user_id?: string;
            thread_title: string;
            thread_v2_id: string;
        },
        {
            is_group: boolean;
            peer_user_id?: string;
            thread_title: string;
            thread_v2_id: string;
        },
        {
            is_group: boolean;
            peer_user_id?: string;
            thread_title: string;
            thread_v2_id: string;
        },
        | IgApiError
        | RequestError
        | ParseError
        | TransportError
        | InvalidSkipOrdinalsError
        | ScreenEnterNavigationError
        | DirectThreadNotCreatedError,
        PlainJsonApiHttp
        | GraphqlJsonHttp
        | MobileApplication
        | MobileNavigation,
        {
            openSharedMedia: (
                self: ScreenHandle,
                state: {
                    is_group: boolean;
                    peer_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
                            | InvalidSkipOrdinalsError
                            | ScreenEnterNavigationError,
                        PlainJsonApiHttp
                        | MobileNavigation,
                        {
                            openGroupNameEditor: (
                                self: ScreenHandle,
                                state: {
                                    is_group: boolean;
                                    thread_title: string;
                                    thread_v2_id: string;
                                },
                            ) => ScreenEdgeBound<
                                ScreenEdgeShape<
                                    ScreenDefinition<
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                        (...),
                                    >,
                                    [],
                                    "button",
                                >,
                                (...args: []) => Effect<(...), (...), (...)>,
                            >;
                        },
                        Record<never, never>,
                        never,
                    >,
                    [],
                    "button",
                >,
                (
                    ...args: [],
                ) => Effect<
                    AssembledHandle<
                        "DirectThreadSharedMedia",
                        "screen",
                        { is_group: boolean; thread_title: string; thread_v2_id: string },
                        {
                            openGroupNameEditor: (
                                self: ScreenHandle,
                                state: {
                                    is_group: boolean;
                                    thread_title: string;
                                    thread_v2_id: string;
                                },
                            ) => ScreenEdgeBound<
                                ScreenEdgeShape<(...), (...), (...)>,
                                (...args: ...) => ...,
                            >;
                        },
                        Record<never, never>,
                        ScreenHandle,
                        "required",
                        true,
                    >,

                        | IgApiError
                        | RequestError
                        | ParseError
                        | TransportError
                        | InvalidSkipOrdinalsError
                        | ScreenDataError
                        | ScreenEnterNavigationError
                        | ScreenEnterConcurrentError
                        | ScreenEdgeInputError
                        | ScreenNotOnTopError,
                    PlainJsonApiHttp
                    | MobileNavigation
                    | ScreenCatalog
                    | ScreenStack,
                >,
            >;
        },
        Record<never, never>,
        never,
    > = ...

    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. The recorded group chain is direct_thread:3 → details 7: ordinal 4 is the Customize chat edge's own skip (a screen no request names, a known debt), 5 is Customize chat and 6 the theme picker, both popped before the hub opens — this transition skips nothing.

    Burst, as both 451 recordings have 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 with the Facebook id that answer carries, while a group thread sends nothing (its hub sends no request of its own). A one-to-one thread whose open carried no peer id sends neither query: the hub needs the peer's pk, and no recorded 1:1 thread lacks its peer, so this is the honest empty case rather than a request with a made-up id.

    A composer (a picked recipient whose first message has not created the thread) has no details to show: the screen refuses the composer's empty thread id in the enter, before any request or navigation, with DirectThreadNotCreatedError.