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

    Variable DirectMediaPickerPhotosScreenConst

    DirectMediaPickerPhotosScreen: ScreenDefinition<
        "DirectMediaPickerPhotos",
        "screen",
        {
            send_attribution?: | "inbox"
            | "inbox_new_message"
            | "message_button"
            | "direct_thread_creation_omnipicker";
            thread_id: string;
        },
        {
            send_attribution?: | "inbox"
            | "inbox_new_message"
            | "message_button"
            | "direct_thread_creation_omnipicker";
            thread_id: string;
        },
        {
            send_attribution?: | "inbox"
            | "inbox_new_message"
            | "message_button"
            | "direct_thread_creation_omnipicker";
            thread_id: string;
        },
        IgApiError
        | RequestError
        | ParseError
        | TransportError,
        GraphqlJsonHttp | MobileApplication | MobileNavigation,
        {
            sendPhoto: (
                self: ScreenHandle,
                state: {
                    send_attribution?:
                        | "inbox"
                        | "inbox_new_message"
                        | "message_button"
                        | "direct_thread_creation_omnipicker";
                    thread_id: string;
                },
            ) => (
                ...args: [input: DirectMediaPickerPhotoInput],
            ) => Effect<
                {
                    action: string;
                    client_context: string;
                    message_metadata: DirectBroadcastResponseMessageMetadata[];
                    payload: DirectBroadcastResponsePayload;
                    status: string;
                    status_code: string;
                } & { raw: ActionRaw },

                    | IgApiError
                    | RequestError
                    | ParseError
                    | TransportError
                    | MessengerMediaUploadMalformedError
                    | MessengerMediaUploadHttpError
                    | ScreenEnterConcurrentError,
                | PlainJsonApiHttp
                | Signature
                | MobileDevice
                | NavigationWire
                | MobileHttpRequest
                | PlainApiHeaders
                | MessengerMediaUploadFeatures
                | MobileNavigation
                | ScreenStack,
            >;
        },
        Record<never, never>,
        never,
        never,
    > = ...

    DirectMediaPickerPhotosFragment:direct_media_picker_photos_fragment, the gallery picker the conversation's "+" opens: the person's photos in a grid, with the story camera and the Imagine tile above it.

    Opening it sends IGMetaMediaCloudAppsQuery before the picker comes to front: the request's chain names the inbox and the conversation only, and the picker's own entry appears on the sends that follow (...:5:button). The answer is the cloud apps the grid offers; the Simulator reads none of it, as it never reads the person's own media.

    Action: sendPhoto({ file }) uploads the picture through PhotoAttachmentMessage and broadcasts photo_attachment, naming the conversation's long thread id and the visit's attribution. The app stays on the picker after a send; so does this screen.

    How it is reached: DirectThreadScreen.openMediaPicker() (the composer's "+", ordinal 5 after the conversation's own entry and the ordinal the conversation hands to a screen no request names).

    Screenshots of the picker are the type pages' (the gallery is the test account's): thread-gallery-picker.webp over thread.openMediaPicker().

    Guide: The gallery picker