@sendbird/uikit-react
Version:
Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
69 lines (68 loc) • 3.12 kB
TypeScript
import React from 'react';
import type { GroupChannel } from '@sendbird/chat/groupChannel';
import { MessageSearchQuery } from '@sendbird/chat/message';
import { ClientSentMessages } from '../../../types';
import { SendbirdError } from '@sendbird/chat';
import type { MessageSearchQueryParams } from '@sendbird/chat/lib/__definition';
import useScrollCallback from './hooks/useScrollCallback';
import { CoreMessageType } from '../../../utils';
export interface MessageSearchProviderProps {
channelUrl: string;
children?: React.ReactElement;
searchString?: string;
messageSearchQuery?: MessageSearchQueryParams;
onResultLoaded?(messages?: Array<CoreMessageType> | null, error?: SendbirdError | null): void;
onResultClick?(message: ClientSentMessages): void;
}
export interface MessageSearchState extends MessageSearchProviderProps {
channelUrl: string;
allMessages: ClientSentMessages[];
loading: boolean;
isInvalid: boolean;
initialized: boolean;
currentChannel: GroupChannel | null;
currentMessageSearchQuery: MessageSearchQuery | null;
hasMoreResult: boolean;
retryCount: number;
selectedMessageId: number | null;
requestString: string;
onScroll?: ReturnType<typeof useScrollCallback>;
handleOnScroll?: (e: React.BaseSyntheticEvent) => void;
scrollRef?: React.RefObject<HTMLDivElement>;
}
export declare const MessageSearchContext: React.Context<import("../../../utils/storeManager").Store<MessageSearchState>>;
declare const MessageSearchManager: React.FC<MessageSearchProviderProps>;
declare const MessageSearchProvider: React.FC<MessageSearchProviderProps>;
declare const useMessageSearchContext: () => {
setCurrentChannel: (channel: GroupChannel) => void;
setChannelInvalid: () => void;
getSearchedMessages: (messages: ClientSentMessages[], createdQuery: MessageSearchQuery) => void;
setQueryInvalid: () => void;
startMessageSearch: () => void;
startGettingSearchedMessages: (query: MessageSearchQuery) => void;
getNextSearchedMessages: (messages: ClientSentMessages[]) => void;
resetSearchString: () => void;
setSelectedMessageId: (messageId: number) => () => void;
handleRetryToConnect: () => void;
setRetryCount: () => void;
channelUrl: string;
allMessages: ClientSentMessages[];
loading: boolean;
isInvalid: boolean;
initialized: boolean;
currentChannel: GroupChannel | null;
currentMessageSearchQuery: MessageSearchQuery | null;
hasMoreResult: boolean;
retryCount: number;
selectedMessageId: number | null;
requestString: string;
onScroll?: ReturnType<typeof useScrollCallback>;
handleOnScroll?: (e: React.BaseSyntheticEvent) => void;
scrollRef?: React.RefObject<HTMLDivElement>;
children?: React.ReactElement;
searchString?: string;
messageSearchQuery?: MessageSearchQueryParams;
onResultLoaded?(messages?: Array<CoreMessageType> | null, error?: SendbirdError | null): void;
onResultClick?(message: ClientSentMessages): void;
};
export { MessageSearchProvider, useMessageSearchContext, MessageSearchManager, };