UNPKG

stream-chat

Version:

JS SDK for the Stream Chat API

89 lines (88 loc) 3.99 kB
import { StateStore } from '../store'; import type { DebouncedFunc } from '../utils'; import type { DraftMessage, LocalMessage, OGAttachment } from '../types'; import type { LinkPreviewsManagerConfig } from './configuration/types'; import type { MessageComposer } from './messageComposer'; export type LinkPreview = OGAttachment & { status: LinkPreviewStatus; }; export interface ILinkPreviewsManager { /** Function cancels all the scheduled or in-progress URL enrichment queries and resets the state. */ cancelURLEnrichment: () => void; /** Function that triggers the search for URLs and their enrichment. */ findAndEnrichUrls?: DebouncedFunc<(text: string) => void>; } export declare enum LinkPreviewStatus { /** Link preview has been dismissed using **/ DISMISSED = "dismissed", /** Link preview could not be loaded, the enrichment request has failed. **/ FAILED = "failed", /** Link preview has been successfully loaded. **/ LOADED = "loaded", /** The enrichment query is in progress for a given link. **/ LOADING = "loading", /** The preview reference enrichment has not begun. Default status if not set. */ PENDING = "pending" } export type LinkURL = string; export type LinkPreviewMap = Map<LinkURL, LinkPreview>; export type LinkPreviewsManagerState = { previews: LinkPreviewMap; }; export type LinkPreviewsManagerOptions = { composer: MessageComposer; message?: DraftMessage | LocalMessage; }; export declare class LinkPreviewsManager implements ILinkPreviewsManager { findAndEnrichUrls: DebouncedFunc<(text: string) => void>; readonly state: StateStore<LinkPreviewsManagerState>; readonly composer: MessageComposer; private shouldDiscardEnrichQueries; constructor({ composer, message }: LinkPreviewsManagerOptions); get client(): import("..").StreamChat; get channel(): import("..").Channel; get previews(): LinkPreviewMap; get loadingPreviews(): LinkPreview[]; get loadedPreviews(): LinkPreview[]; get dismissedPreviews(): LinkPreview[]; get failedPreviews(): LinkPreview[]; get pendingPreviews(): LinkPreview[]; get config(): LinkPreviewsManagerConfig; get debounceURLEnrichmentMs(): LinkPreviewsManagerConfig["debounceURLEnrichmentMs"]; set debounceURLEnrichmentMs(debounceURLEnrichmentMs: LinkPreviewsManagerConfig['debounceURLEnrichmentMs']); get enabled(): LinkPreviewsManagerConfig["enabled"]; set enabled(enabled: LinkPreviewsManagerConfig['enabled']); get findURLFn(): LinkPreviewsManagerConfig["findURLFn"]; set findURLFn(fn: LinkPreviewsManagerConfig['findURLFn']); get onLinkPreviewDismissed(): LinkPreviewsManagerConfig["onLinkPreviewDismissed"]; set onLinkPreviewDismissed(fn: LinkPreviewsManagerConfig['onLinkPreviewDismissed']); initState: ({ message }?: { message?: DraftMessage | LocalMessage; }) => void; private _findAndEnrichUrls; cancelURLEnrichment: () => void; /** * Clears all non-dismissed previews when the text composer is cleared. * This ensures that dismissed previews are not re-enriched in the future. */ clearPreviews: () => void; updatePreview: (url: LinkURL, preview: Partial<LinkPreview>) => void; dismissPreview: (url: LinkURL) => void; static previewIsLoading: (preview: LinkPreview) => boolean; static previewIsLoaded: (preview: LinkPreview) => boolean; static previewIsDismissed: (preview: LinkPreview) => boolean; static previewIsFailed: (preview: LinkPreview) => boolean; static previewIsPending: (preview: LinkPreview) => boolean; static getPreviewData: (preview: LinkPreview) => { og_scrape_url: string; asset_url?: string; author_link?: string; author_name?: string; image_url?: string; text?: string; thumb_url?: string; title?: string; title_link?: string; type?: string | "video" | "audio" | "image"; }; }