IGPAPI
    Preparing search index...

    Variable DirectRecipientPickerScreenConst

    DirectRecipientPickerScreen: ScreenDefinition<
        "DirectRecipientPicker",
        "screen",
        { seq_id: number },
        {
            recipients: readonly {
                full_name: string;
                pk: string;
                seq_id: number;
                username: string;
            }[];
        },
        { seq_id: number },

            | IgCheckpointError
            | IgAccountSuspendedError
            | IgAccountDisabledError
            | IgLoginRequiredError
            | IgUserLoggedOutError
            | InvalidSkipOrdinalsError
            | ScreenEnterNavigationError,
        GraphqlJsonHttp
        | MobileApplication
        | MobileNavigation,
        {
            search: (
                self: ScreenHandle,
                state: { seq_id: number },
            ) => (
                ...args: [query: string],
            ) => Effect<
                readonly AssembledHandle<
                    "DirectRecipient",
                    "item",
                    { full_name: string; pk: string; seq_id: number; username: string },
                    {
                        openThread: (
                            self: ScreenHandle,
                            state: { seq_id: number; userId: string },
                        ) => ScreenEdgeBound<
                            ScreenEdgeShape<(...), (...)>,
                            (...args: ...) => ...,
                        >;
                    },
                    Record<never, never>,
                    ScreenHandle,
                    "optional",
                >[],

                    | IgApiError
                    | RequestError
                    | ParseError
                    | TransportError
                    | ScreenDataError
                    | ScreenEnterConcurrentError
                    | ScreenNotOnTopError,
                PlainJsonApiHttp
                | MobileNavigation
                | ScreenStack,
            >;
        },
        {
            recipients: {
                at: "recipients";
                item: ScreenItemDefinition<
                    "DirectRecipient",
                    { full_name: string; pk: string; seq_id: number; username: string },
                    { full_name: string; pk: string; seq_id: number; username: string },
                    { seq_id: number; userId: string },
                    never,
                    never,
                    {
                        openThread: (
                            self: ScreenHandle,
                            state: { seq_id: number; userId: string },
                        ) => ScreenEdgeBound<
                            ScreenEdgeShape<
                                ScreenDefinition<
                                    "DirectThread",
                                    "screen",
                                    | {
                                        kind: ...;
                                        peerUserIds: ...;
                                        send_attribution?: ...;
                                        thread_id: ...;
                                        thread_v2_id: ...;
                                    }
                                    | { kind: ...; recipient: ...; send_attribution?: ...; seq_id: ... },
                                    {
                                        media: readonly (...)[];
                                        messages: readonly (...)[];
                                        thread: (...) | (...);
                                        users: readonly (...)[];
                                    },
                                    unknown,
                                    unknown,
                                    unknown,
                                    {
                                        openCustomizeChat: (self: ..., state: ...) => ...;
                                        openThreadDetails: (self: ..., state: ...) => ...;
                                        sendMessage: (self: ..., state: ...) => ...;
                                    },
                                    {
                                        media: { at: ...; by: ...; key: ...; variants: ... };
                                        messages: { at: ...; item: ...; key: ... };
                                        participants: { at: ...; item: ...; key: ... };
                                    },
                                    never,
                                >,
                                [],
                            >,
                            (
                                ...args: [],
                            ) => Effect<
                                AssembledHandle<
                                    "DirectThread",
                                    "screen",
                                    { media: ...; messages: ...; thread: ...; users: ... },
                                    { openCustomizeChat: ...; openThreadDetails: ...; sendMessage: ... },
                                    { media: ...; messages: ...; participants: ... },
                                    ScreenHandle,
                                    "required",
                                >,
                                unknown,
                            >,
                        >;
                    },
                >;
                key: "pk";
            };
        },
        never,
    > = ...

    DirectRecipientPickerFragment:direct_recipient_picker, the inbox's "New message" screen (Android 451).

    What a person sees: a "To:" search field, the "Group chat" row and the people the last search answered. Opening it sends IGDirectSearchInitiateWarmStartQuery while the inbox is still in front (the recorded chain names only the inbox), brings the picker to front, and then asks for its suggestion list (IGDirectGetPresenceQuery, best-effort; the recorded answer is empty, so the screen shows no rows). The "Group chat" row is not modelled: no recording shows the group flow's own requests beyond the picker's search.

    Actions: search(query) is one keystroke's direct_v2/ranked_recipients/ request (mode=raven, show_threads=true, max_ig_results=10), and its answer's rows are the fresh item handles a caller continues from — the visit's list stays what it loaded. Each DirectRecipient row opens the thread with that person (openThread), with source button and the next ordinal: the 1:1 recording goes picker 3 → thread 4. The group recordings' picker takes two ordinals and their thread enters with source inbox_new_message; that is the group selection flow, which this screen does not model.

    How it is reached: DirectInboxScreen.openNewMessage().

    No screenshot: the recording's frames show other people's accounts.