/
types.ts
55 lines (50 loc) · 1.86 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import type React from 'react';
import type { FlatListProps } from 'react-native';
import type { SendbirdBaseMessage, SendbirdGroupChannel, SendbirdMessageSearchQuery } from '@sendbird/uikit-utils';
import type { CommonComponent } from '../../types';
export type MessageSearchProps = {
Fragment: {
channel: SendbirdGroupChannel;
onPressHeaderLeft: MessageSearchProps['Header']['onPressHeaderLeft'];
onPressSearchResultItem: MessageSearchProps['List']['onPressSearchResultItem'];
renderSearchResultItem?: MessageSearchProps['List']['renderSearchResultItem'];
queryCreator?: () => SendbirdMessageSearchQuery;
};
Header: {
keyword: string;
onChangeKeyword: (value: string) => void;
onPressHeaderLeft: () => void;
onPressHeaderRight: () => void;
};
List: {
channel: SendbirdGroupChannel;
messages: SendbirdBaseMessage[];
onPressSearchResultItem: (params: { channel: SendbirdGroupChannel; message: SendbirdBaseMessage }) => void;
renderSearchResultItem: (props: {
channel: SendbirdGroupChannel;
message: SendbirdBaseMessage;
onPress: () => void;
}) => React.ReactElement | null;
flatListProps?: Partial<FlatListProps<SendbirdBaseMessage>>;
};
StatusError: {
onPressRetry: () => void;
};
};
/**
* Internal context for MessageSearch
* For example, the developer can create a custom header
* with getting data from the domain context
* */
export type MessageSearchContextsType = {
Fragment: React.Context<null>;
};
export interface MessageSearchModule {
Provider: CommonComponent;
Header: CommonComponent<MessageSearchProps['Header']>;
List: CommonComponent<MessageSearchProps['List']>;
StatusEmpty: CommonComponent;
StatusLoading: CommonComponent;
StatusError: CommonComponent<MessageSearchProps['StatusError']>;
}
export type MessageSearchFragment = React.FC<MessageSearchProps['Fragment']>;