Variable DirectRecipientPickerScreenConst
DirectRecipientPickerScreen: ScreenDefinition< "DirectRecipientPicker", "screen", { mode: "group"; searchSessionId: string } | undefined, { recipients: readonly { full_name: string; pk: string; username: string; }[]; searchSessionId: string; threads: readonly { is_group: boolean; muted?: boolean; preview: readonly { client_context?: string; item_id: string; item_type: string; media?: | { height: number; media_type: 1; pk: string; url: string; width: number; } | { height: number; media_type: 2; pk: string; url: string; width: number; } | { media_type: 8; pk: string; slides: readonly { media_type: (...)
| (...)
; pk: string; url: string }[]; }; text?: string; timestamp: string; user_id: string; }[]; thread_id: string; thread_title: string; thread_v2_id?: string; users: readonly { fbid_v2?: string; full_name: string; pk: string; username: string; }[]; }[]; }, { mode: "default" | "group"; searchSessionId: string }, | IgCheckpointError | IgAccountSuspendedError | IgAccountDisabledError | IgLoginRequiredError | IgUserLoggedOutError, | GraphqlJsonHttp | MobileApplication | MobileNavigation | AndroidDirectSurface, { createGroup: ( self: ScreenHandle, state: { mode: "default" | "group"; searchSessionId: string }, ) => ( ...args: [ rows
: readonly { full_name: string; pk: string; username: string }[], ], ) => Effect< AssembledHandle< "DirectThread", "screen", { media: readonly (
| { height: number; media_type: 1; pk: string; url: string; width: number; } | { height: number; media_type: 2; pk: string; url: string; width: number; } | { media_type: 8; pk: string; slides: readonly (...)
[] } )
[]; messages: readonly { client_context?: string; item_id: string; item_type: string; media?: | { height: ...
; media_type: ...
; pk: ...
; url: ...
; width: ...
} | { height: ...
; media_type: ...
; pk: ...
; url: ...
; width: ...
} | { media_type: ...
; pk: ...
; slides: ...
}; text?: string; timestamp: string; user_id: string; }[]; thread: { is_group: boolean; muted?: boolean; thread_id: string; thread_title: string; thread_v2_id?: string; }; users: readonly { fbid_v2?: string; full_name: string; pk: string; username: string; }[]; }, { openCustomizeChat: ( self: ScreenHandle, state: | { has_messages: boolean; is_group: false; ordinal_reserved?: (...)
| (...)
| (...)
; participants: readonly (...)
[]; peer_user_fbid?: (...)
| (...)
; peer_user_id?: (...)
| (...)
; send_attribution?: (...)
| (...)
| (...)
| (...)
| (...)
; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; } | { has_messages: boolean; is_group: true; lead_user_id?: (...)
| (...)
; ordinal_reserved?: (...)
| (...)
| (...)
; participants: readonly (...)
[]; send_attribution?: (...)
| (...)
| (...)
| (...)
| (...)
; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; }, ) => ScreenEdgeBound< ScreenEdgeShape< ScreenDefinition< (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, >, [], "button", AndroidScreens, >, (...args: []) => Effect<(...)
, (...)
, (...)
>, >; openThreadDetails: ( self: ScreenHandle, state: | { has_messages: boolean; is_group: false; ordinal_reserved?: (...)
| (...)
| (...)
; participants: readonly (...)
[]; peer_user_fbid?: (...)
| (...)
; peer_user_id?: (...)
| (...)
; send_attribution?: (...)
| (...)
| (...)
| (...)
| (...)
; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; } | { has_messages: boolean; is_group: true; lead_user_id?: (...)
| (...)
; ordinal_reserved?: (...)
| (...)
| (...)
; participants: readonly (...)
[]; send_attribution?: (...)
| (...)
| (...)
| (...)
| (...)
; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; }, ) => ScreenEdgeBound< ScreenEdgeShape< ScreenDefinition< (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, >, [], "button", AndroidScreens, >, (...args: []) => Effect<(...)
, (...)
, (...)
>, >; sendMessage: ( self: ScreenHandle, state: | { has_messages: boolean; is_group: false; ordinal_reserved?: (...)
| (...)
| (...)
; participants: readonly (...)
[]; peer_user_fbid?: (...)
| (...)
; peer_user_id?: (...)
| (...)
; send_attribution?: (...)
| (...)
| (...)
| (...)
| (...)
; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; } | { has_messages: boolean; is_group: true; lead_user_id?: (...)
| (...)
; ordinal_reserved?: (...)
| (...)
| (...)
; participants: readonly (...)
[]; send_attribution?: (...)
| (...)
| (...)
| (...)
| (...)
; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; }, ) => ( ...args: [text
: string], ) => Effect< (...)
& (...)
, (...)
| (...)
| (...)
| (...)
| (...)
, | (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
| (...)
, >; }, { media: { at: "media"; by: "media_type"; key: "pk"; source: ScreenItemNodes; variants: { "1": ScreenItemDefinition< "DirectPhoto", { height: ...
; media_type: ...
; pk: ...
; url: ...
; width: ...
}, { height: ...
; media_type: ...
; pk: ...
; url: ...
; width: ...
}, Record<(...)
, (...)
>, never, never, {}, undefined, never, >; "2": ScreenItemDefinition< "DirectVideo", { height: ...
; media_type: ...
; pk: ...
; url: ...
; width: ...
}, { height: ...
; media_type: ...
; pk: ...
; url: ...
; width: ...
}, Record<(...)
, (...)
>, never, never, {}, undefined, never, >; "8": ScreenItemDefinition< "DirectCarousel", { media_type: ...
; pk: ...
; slides: ...
}, { media_type: ...
; pk: ...
; slides: ...
}, Record<(...)
, (...)
>, never, never, {}, undefined, never, >; }; }; messages: { at: "messages"; item: ScreenItemDefinition< "DirectThreadMessage", { client_context?: (...)
| (...)
; item_id: string; item_type: string; media?: (...)
| (...)
| (...)
| (...)
; text?: (...)
| (...)
; timestamp: string; user_id: string; }, { client_context?: (...)
| (...)
; item_id: string; item_type: string; media?: (...)
| (...)
| (...)
| (...)
; text?: (...)
| (...)
; timestamp: string; user_id: string; }, DirectThreadMessageState, never, never, { react: (self: ...
, state: ...
) => ...
}, | { has_messages: ...
; is_group: ...
; ordinal_reserved?: ...
; participants: ...
; peer_user_fbid?: ...
; peer_user_id?: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; } | { has_messages: ...
; is_group: ...
; lead_user_id?: ...
; ordinal_reserved?: ...
; participants: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }, never, >; key: "item_id"; source: ScreenItemNodes; }; participants: { at: "users"; item: ScreenItemDefinition< "DirectThreadParticipant", { fbid_v2?: (...)
| (...)
; full_name: string; pk: string; username: string; }, { fbid_v2?: (...)
| (...)
; full_name: string; pk: string; username: string; }, DirectThreadParticipantState, never, never, { openNicknameEditor: (self: ...
, state: ...
) => ...
}, | { has_messages: ...
; is_group: ...
; ordinal_reserved?: ...
; participants: ...
; peer_user_fbid?: ...
; peer_user_id?: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; } | { has_messages: ...
; is_group: ...
; lead_user_id?: ...
; ordinal_reserved?: ...
; participants: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }, never, >; key: "pk"; source: ScreenItemNodes; }; }, ScreenHandle, "required", true, never, AndroidScreens, >, | IgApiError | RequestError | ParseError | TransportError | ScreenDataError | ScreenEnterConcurrentError | ScreenEdgeInputError | DirectInboxSeqIdUnknownError | DirectThreadNotFoundByParticipantsError, | PlainJsonApiHttp | Signature | MobileSession | MobileDevice | GraphqlJsonHttp | MobileApplication | MobileNavigation | MobileUserFlows | ScreenStack | AndroidQuickPromotionStash | ScreenCatalog, >; openCreatedThread: ActionEdge< ( self: ScreenHandle, state: { mode: "default" | "group"; searchSessionId: string }, ) => ScreenEdgeBound< ScreenEdgeShape< ScreenDefinition< "DirectThread", "screen", | { kind: "thread"; send_attribution?: | "inbox" | "inbox_new_message" | "message_button" | "direct_thread_creation_omnipicker"; thread: { is_group: boolean; muted?: (...)
| (...)
| (...)
; preview: readonly (...)
[]; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; users: readonly (...)
[]; }; } | { kind: "recipient"; recipient: string; send_attribution?: | "inbox" | "inbox_new_message" | "message_button" | "direct_thread_creation_omnipicker"; } | { kind: "created"; target_user_ids: readonly string[]; thread_id: string; thread_v2_id: string; }, { media: readonly (
| { height: ...
; media_type: ...
; pk: ...
; url: ...
; width: ...
} | { height: ...
; media_type: ...
; pk: ...
; url: ...
; width: ...
} | { media_type: ...
; pk: ...
; slides: ...
} )
[]; messages: readonly { client_context?: (...)
| (...)
; item_id: string; item_type: string; media?: (...)
| (...)
| (...)
| (...)
; text?: (...)
| (...)
; timestamp: string; user_id: string; }[]; thread: { is_group: boolean; muted?: boolean; thread_id: string; thread_title: string; thread_v2_id?: string; }; users: readonly { fbid_v2?: (...)
| (...)
; full_name: string; pk: string; username: string; }[]; }, | { has_messages: boolean; is_group: false; ordinal_reserved?: boolean; participants: readonly { fbid_v2?: ...
; full_name: ...
; pk: ...
; username: ...
; }[]; peer_user_fbid?: string; peer_user_id?: string; send_attribution?: | "inbox" | "inbox_new_message" | "message_button" | "direct_thread_creation_omnipicker"; thread_id: string; thread_title: string; thread_v2_id?: string; } | { has_messages: boolean; is_group: true; lead_user_id?: string; ordinal_reserved?: boolean; participants: readonly { fbid_v2?: ...
; full_name: ...
; pk: ...
; username: ...
; }[]; send_attribution?: | "inbox" | "inbox_new_message" | "message_button" | "direct_thread_creation_omnipicker"; thread_id: string; thread_title: string; thread_v2_id?: string; }, | IgApiError | RequestError | ParseError | TransportError | ScreenDataError | DirectInboxSeqIdUnknownError | DirectThreadNotFoundByParticipantsError, | PlainJsonApiHttp | MobileSession | MobileDevice | GraphqlJsonHttp | MobileApplication | MobileNavigation | MobileUserFlows | AndroidQuickPromotionStash, { openCustomizeChat: ( self: ScreenHandle, state: | { has_messages: ...
; is_group: ...
; ordinal_reserved?: ...
; participants: ...
; peer_user_fbid?: ...
; peer_user_id?: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; } | { has_messages: ...
; is_group: ...
; lead_user_id?: ...
; ordinal_reserved?: ...
; participants: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }, ) => ScreenEdgeBound< ScreenEdgeShape<(...)
, (...)
, (...)
, (...)
>, (...args: ...
) => ...
, >; openThreadDetails: ( self: ScreenHandle, state: | { has_messages: ...
; is_group: ...
; ordinal_reserved?: ...
; participants: ...
; peer_user_fbid?: ...
; peer_user_id?: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; } | { has_messages: ...
; is_group: ...
; lead_user_id?: ...
; ordinal_reserved?: ...
; participants: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }, ) => ScreenEdgeBound< ScreenEdgeShape<(...)
, (...)
, (...)
, (...)
>, (...args: ...
) => ...
, >; sendMessage: ( self: ScreenHandle, state: | { has_messages: ...
; is_group: ...
; ordinal_reserved?: ...
; participants: ...
; peer_user_fbid?: ...
; peer_user_id?: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; } | { has_messages: ...
; is_group: ...
; lead_user_id?: ...
; ordinal_reserved?: ...
; participants: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }, ) => (...args: [text
: ...
]) => Effect<(...)
, (...)
, (...)
>; }, { media: { at: "media"; by: "media_type"; key: "pk"; source: ScreenItemNodes; variants: { "1": ScreenItemDefinition< (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, >; "2": ScreenItemDefinition< (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, >; "8": ScreenItemDefinition< (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, >; }; }; messages: { at: "messages"; item: ScreenItemDefinition< "DirectThreadMessage", { client_context?: ...
; item_id: ...
; item_type: ...
; media?: ...
; text?: ...
; timestamp: ...
; user_id: ...
; }, { client_context?: ...
; item_id: ...
; item_type: ...
; media?: ...
; text?: ...
; timestamp: ...
; user_id: ...
; }, DirectThreadMessageState, never, never, { react: ...
}, (...)
| (...)
, never, >; key: "item_id"; source: ScreenItemNodes; }; participants: { at: "users"; item: ScreenItemDefinition< "DirectThreadParticipant", { fbid_v2?: ...
; full_name: ...
; pk: ...
; username: ...
}, { fbid_v2?: ...
; full_name: ...
; pk: ...
; username: ...
}, DirectThreadParticipantState, never, never, { openNicknameEditor: ...
}, (...)
| (...)
, never, >; key: "pk"; source: ScreenItemNodes; }; }, never, never, >, readonly [ { target_user_ids: readonly string[]; thread_id: string; thread_v2_id: string; }, ], "inbox_new_message", AndroidScreens, >, ( ...args: readonly [ { target_user_ids: readonly string[]; thread_id: string; thread_v2_id: string; }, ], ) => Effect< AssembledHandle< "DirectThread", "screen", { media: readonly ((...)
| (...)
| (...))
[]; messages: readonly { client_context?: ...
; item_id: ...
; item_type: ...
; media?: ...
; text?: ...
; timestamp: ...
; user_id: ...
; }[]; thread: { is_group: boolean; muted?: (...)
| (...)
| (...)
; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; }; users: readonly { fbid_v2?: ...
; full_name: ...
; pk: ...
; username: ...
; }[]; }, { openCustomizeChat: ( self: ScreenHandle, state: (...)
| (...)
, ) => ScreenEdgeBound<(...)
, (...)
>; openThreadDetails: ( self: ScreenHandle, state: (...)
| (...)
, ) => ScreenEdgeBound<(...)
, (...)
>; sendMessage: ( self: ScreenHandle, state: (...)
| (...)
, ) => (...args: ...
) => ...
; }, { media: { at: "media"; by: "media_type"; key: "pk"; source: ScreenItemNodes; variants: { "1": ...
; "2": ...
; "8": ...
}; }; messages: { at: "messages"; item: ScreenItemDefinition< (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, >; key: "item_id"; source: ScreenItemNodes; }; participants: { at: "users"; item: ScreenItemDefinition< (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, (...)
, >; key: "pk"; source: ScreenItemNodes; }; }, ScreenHandle, "required", true, never, AndroidScreens, >, | IgApiError | RequestError | ParseError | TransportError | ScreenDataError | ScreenEnterConcurrentError | ScreenEdgeInputError | DirectInboxSeqIdUnknownError | DirectThreadNotFoundByParticipantsError, | PlainJsonApiHttp | MobileSession | MobileDevice | GraphqlJsonHttp | MobileApplication | MobileNavigation | MobileUserFlows | ScreenStack | AndroidQuickPromotionStash | ScreenCatalog, >, >, >; search: ( self: ScreenHandle, state: { mode: "default" | "group"; searchSessionId: string }, ) => ( ...args: [query
: string], ) => Effect< { recipients: readonly ScreenListItem< { at: ...
; item: ...
; key: ...
; source: ...
}, ScreenHandle, >[] & { "~rows"?: ScreenItemRowsShape<(...)
> }; threads: readonly ScreenListItem< { at: ...
; item: ...
; key: ...
; source: ...
}, ScreenHandle, >[] & { "~rows"?: ScreenItemRowsShape<(...)
> }; } & { raw: ActionRaw }, | IgApiError | RequestError | ParseError | TransportError | ScreenDataError | ScreenEnterConcurrentError, PlainJsonApiHttp | MobileNavigation | ScreenStack, >; startGroupChat: ( self: ScreenHandle, state: { mode: "default" | "group"; searchSessionId: string }, ) => ScreenEdgeBound< ScreenEdgeShape< (
ScreenDefinition<"DirectRecipientPicker", "screen", { readonly mode: "group"; readonly searchSessionId: string; } | undefined, { readonly recipients: readonly { readonly pk: string; readonly username: string; readonly full_name: string; }[]; readonly threads: readonly { ...; }[]; readonly searchSessionId: string; },...
)
, [], "button", AndroidScreens, >, () => Effect< AssembledHandle< "DirectRecipientPicker", "screen", { recipients: readonly { full_name: string; pk: string; username: string; }[]; searchSessionId: string; threads: readonly { is_group: boolean; muted?: (...)
| (...)
| (...)
; preview: readonly (...)
[]; thread_id: string; thread_title: string; thread_v2_id?: (...)
| (...)
; users: readonly (...)
[]; }[]; }, (
{ search: (self: ScreenHandle, state: { readonly mode: "default" | "group"; readonly searchSessionId: string; }) => (...args: [query: ...]) => Effect<{ recipients: readonly ScreenListItem<{ readonly at: "recipients"; readonly key: "pk"; readonly source: ScreenItemNodes; readonly item: ScreenItemDefinition<...>; }, S...
)
, { recipients: { at: "recipients"; item: ScreenItemDefinition< "DirectRecipient", { full_name: ...
; pk: ...
; username: ...
}, { full_name: ...
; pk: ...
; username: ...
}, { userId: ...
}, never, never, { openThread: ...
}, undefined, never, >; key: "pk"; source: ScreenItemNodes; }; threads: { at: "threads"; item: ScreenItemDefinition< "DirectPickerThread", { is_group: ...
; muted?: ...
; preview: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; users: ...
; }, { is_group: ...
; muted?: ...
; preview: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; users: ...
; }, { thread: ...
}, never, never, { openThread: ...
}, undefined, never, >; key: "thread_id"; source: ScreenItemNodes; }; }, ScreenHandle, "required", true, never, AndroidScreens, >, | IgCheckpointError | IgAccountSuspendedError | IgAccountDisabledError | IgLoginRequiredError | IgUserLoggedOutError | ScreenDataError | ScreenEnterConcurrentError | ScreenEdgeInputError, | GraphqlJsonHttp | MobileApplication | MobileNavigation | ScreenStack | ScreenCatalog | AndroidDirectSurface, >, >; }, { recipients: { at: "recipients"; item: ScreenItemDefinition< "DirectRecipient", { full_name: string; pk: string; username: string }, { full_name: string; pk: string; username: string }, { userId: string }, never, never, { openThread: ( self: ScreenHandle, state: { userId: string }, ) => ScreenEdgeBound< ScreenEdgeShape< ScreenDefinition< "DirectThread", "screen", | { kind: ...
; send_attribution?: ...
; thread: ...
} | { kind: ...
; recipient: ...
; send_attribution?: ...
} | { kind: ...
; target_user_ids: ...
; thread_id: ...
; thread_v2_id: ...
; }, { media: readonly (...)
[]; messages: readonly (...)
[]; thread: { is_group: ...
; muted?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }; users: readonly (...)
[]; }, | { has_messages: ...
; is_group: ...
; ordinal_reserved?: ...
; participants: ...
; peer_user_fbid?: ...
; peer_user_id?: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; } | { has_messages: ...
; is_group: ...
; lead_user_id?: ...
; ordinal_reserved?: ...
; participants: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }, | IgApiError | RequestError | ParseError | TransportError | ScreenDataError | DirectInboxSeqIdUnknownError | DirectThreadNotFoundByParticipantsError, | PlainJsonApiHttp | MobileSession | MobileDevice | GraphqlJsonHttp | MobileApplication | MobileNavigation | MobileUserFlows | AndroidQuickPromotionStash, { openCustomizeChat: (self: ...
, state: ...
) => ...
; openThreadDetails: (self: ...
, state: ...
) => ...
; sendMessage: (self: ...
, state: ...
) => ...
; }, { media: { at: ...
; by: ...
; key: ...
; source: ...
; variants: ...
; }; messages: { at: ...
; item: ...
; key: ...
; source: ...
}; participants: { at: ...
; item: ...
; key: ...
; source: ...
}; }, never, never, >, [], "button", AndroidScreens, >, ( ...args: [], ) => Effect< AssembledHandle< "DirectThread", "screen", { media: ...
; messages: ...
; thread: ...
; users: ...
}, { openCustomizeChat: ...
; openThreadDetails: ...
; sendMessage: ...
}, { media: ...
; messages: ...
; participants: ...
}, ScreenHandle, "required", true, never, AndroidScreens, >, | IgApiError | RequestError | ParseError | TransportError | ScreenDataError | ScreenEnterConcurrentError | ScreenEdgeInputError | DirectInboxSeqIdUnknownError | DirectThreadNotFoundByParticipantsError, | PlainJsonApiHttp | MobileSession | MobileDevice | GraphqlJsonHttp | MobileApplication | MobileNavigation | MobileUserFlows | ScreenStack | AndroidQuickPromotionStash | ScreenCatalog, >, >; }, undefined, never, >; key: "pk"; source: ScreenItemNodes; }; threads: { at: "threads"; item: ScreenItemDefinition< "DirectPickerThread", { is_group: boolean; muted?: boolean; preview: readonly { client_context?: string; item_id: string; item_type: string; media?: | { height: number; media_type: 1; pk: string; url: string; width: number; } | { height: number; media_type: 2; pk: string; url: string; width: number; } | { media_type: 8; pk: string; slides: readonly { media_type: ...
; pk: ...
; url: ...
}[]; }; text?: string; timestamp: string; user_id: string; }[]; thread_id: string; thread_title: string; thread_v2_id?: string; users: readonly { fbid_v2?: string; full_name: string; pk: string; username: string; }[]; }, { is_group: boolean; muted?: boolean; preview: readonly { client_context?: string; item_id: string; item_type: string; media?: | { height: number; media_type: 1; pk: string; url: string; width: number; } | { height: number; media_type: 2; pk: string; url: string; width: number; } | { media_type: 8; pk: string; slides: readonly { media_type: ...
; pk: ...
; url: ...
}[]; }; text?: string; timestamp: string; user_id: string; }[]; thread_id: string; thread_title: string; thread_v2_id?: string; users: readonly { fbid_v2?: string; full_name: string; pk: string; username: string; }[]; }, { thread: { is_group: boolean; muted?: boolean; preview: readonly { client_context?: string; item_id: string; item_type: string; media?: | { height: number; media_type: 1; pk: string; url: string; width: number; } | { height: number; media_type: 2; pk: string; url: string; width: number; } | { media_type: 8; pk: string; slides: readonly (...)
[] }; text?: string; timestamp: string; user_id: string; }[]; thread_id: string; thread_title: string; thread_v2_id?: string; users: readonly { fbid_v2?: string; full_name: string; pk: string; username: string; }[]; }; }, never, never, { openThread: ( self: ScreenHandle, state: { thread: { is_group: boolean; muted?: boolean; preview: readonly { client_context?: (...)
| (...)
; item_id: string; item_type: string; media?: (...)
| (...)
| (...)
| (...)
; text?: (...)
| (...)
; timestamp: string; user_id: string; }[]; thread_id: string; thread_title: string; thread_v2_id?: string; users: readonly { fbid_v2?: (...)
| (...)
; full_name: string; pk: string; username: string; }[]; }; }, ) => ScreenEdgeBound< ScreenEdgeShape< ScreenDefinition< "DirectThread", "screen", | { kind: ...
; send_attribution?: ...
; thread: ...
} | { kind: ...
; recipient: ...
; send_attribution?: ...
} | { kind: ...
; target_user_ids: ...
; thread_id: ...
; thread_v2_id: ...
; }, { media: readonly (...)
[]; messages: readonly (...)
[]; thread: { is_group: ...
; muted?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }; users: readonly (...)
[]; }, | { has_messages: ...
; is_group: ...
; ordinal_reserved?: ...
; participants: ...
; peer_user_fbid?: ...
; peer_user_id?: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; } | { has_messages: ...
; is_group: ...
; lead_user_id?: ...
; ordinal_reserved?: ...
; participants: ...
; send_attribution?: ...
; thread_id: ...
; thread_title: ...
; thread_v2_id?: ...
; }, | IgApiError | RequestError | ParseError | TransportError | ScreenDataError | DirectInboxSeqIdUnknownError | DirectThreadNotFoundByParticipantsError, | PlainJsonApiHttp | MobileSession | MobileDevice | GraphqlJsonHttp | MobileApplication | MobileNavigation | MobileUserFlows | AndroidQuickPromotionStash, { openCustomizeChat: (self: ...
, state: ...
) => ...
; openThreadDetails: (self: ...
, state: ...
) => ...
; sendMessage: (self: ...
, state: ...
) => ...
; }, { media: { at: ...
; by: ...
; key: ...
; source: ...
; variants: ...
; }; messages: { at: ...
; item: ...
; key: ...
; source: ...
}; participants: { at: ...
; item: ...
; key: ...
; source: ...
}; }, never, never, >, [], "inbox_new_message", AndroidScreens, >, ( ...args: [], ) => Effect< AssembledHandle< "DirectThread", "screen", { media: ...
; messages: ...
; thread: ...
; users: ...
}, { openCustomizeChat: ...
; openThreadDetails: ...
; sendMessage: ...
}, { media: ...
; messages: ...
; participants: ...
}, ScreenHandle, "required", true, never, AndroidScreens, >, | IgApiError | RequestError | ParseError | TransportError | ScreenDataError | ScreenEnterConcurrentError | ScreenEdgeInputError | DirectInboxSeqIdUnknownError | DirectThreadNotFoundByParticipantsError, | PlainJsonApiHttp | MobileSession | MobileDevice | GraphqlJsonHttp | MobileApplication | MobileNavigation | MobileUserFlows | ScreenStack | AndroidQuickPromotionStash | ScreenCatalog, >, >; }, undefined, never, >; key: "thread_id"; source: ScreenItemNodes; }; }, never, never,> = ...
DirectRecipientPickerFragment:direct_recipient_picker, the inbox's "New message" screen (Android 451), one screen with two openings: the inbox'sopenNewMessage()and its own "Group chat" row (startGroupChat), which re-enters it in group mode at the next ordinal — the app names the identity at both,direct_recipient_picker:3:buttonthen:4:button.What a person sees: a "To:" search field, the "Group chat" row, the people and — in the default mode, where the search shows threads — the conversations the last search answered. Its enter sends the Direct search's warm start and, behind it, the suggestion list (
IGDirectGetPresenceQuery; in 1:1 the answer is empty, so the picker opens with no rows) only when this process has not warmed the search yet — the warm-up is the first Direct screen's, and a picker over an inbox that warmed the process sends neither (AndroidDirectSurface); both are best-effort as the app treats them. The "Group chat" re-entry sends nothing of its own.Actions:
search(query)is one keystroke'sdirect_v2/ranked_recipients/request (mode=raven,max_ig_results=10, the generated-result limits0), and its answer's rows are the fresh item handles a caller continues from — the visit's list stays what it loaded. Every search of one visit reports the visit's search session (data.searchSessionId, minted when the inbox's "New message" opens the picker and carried through the "Group chat" re-entry) as the request'sx-pigeon-session-id, where the other requests report the device's Pigeon session. The mode decidesshow_threads:truein the 1:1 picker,falsein the group picker. EachDirectRecipientrow opens the thread with that person (openThread, sourcebutton, the next ordinal,direct_thread_creation_omnipicker); eachDirectPickerThreadrow opens that conversation (openThread, sourceinbox_new_message, the next ordinal).searchanswers both lists, the answer's rows as fresh item handles:{ recipients, threads }. In group mode,createGroup(rows)creates the group with the picked rows and opens the conversation the answer names (direct_thread:5:inbox_new_message).How it is reached:
DirectInboxScreen.openNewMessage(), then its ownstartGroupChat().No screenshot: the frames of the app show other people's accounts.
Guide: "New message": the recipient picker