@sendbird/uikit-react-native 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/lib/commonjs/SendbirdUIKitContainer.js +5 -2
- package/lib/commonjs/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/components/FileViewer.js +326 -0
- package/lib/commonjs/components/FileViewer.js.map +1 -0
- package/lib/commonjs/components/GroupChannelPreviewContainer.js +180 -0
- package/lib/commonjs/components/GroupChannelPreviewContainer.js.map +1 -0
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +116 -0
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -0
- package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +8 -0
- package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js +15 -24
- package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
- package/lib/commonjs/components/SBUPressable.js +45 -0
- package/lib/commonjs/components/SBUPressable.js.map +1 -0
- package/lib/commonjs/components/UserActionBar.js +1 -3
- package/lib/commonjs/components/UserActionBar.js.map +1 -1
- package/lib/commonjs/components/UserSelectableBar.js +1 -3
- package/lib/commonjs/components/UserSelectableBar.js.map +1 -1
- package/lib/commonjs/constants.js +7 -1
- package/lib/commonjs/constants.js.map +1 -1
- package/lib/commonjs/contexts/PlatformService.js +4 -2
- package/lib/commonjs/contexts/PlatformService.js.map +1 -1
- package/lib/commonjs/contexts/SendbirdChat.js +6 -2
- package/lib/commonjs/contexts/SendbirdChat.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +30 -7
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js +2 -3
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
- package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +1 -1
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +3 -7
- package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +13 -11
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelListFragment.js +7 -37
- package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +1 -1
- package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -1
- package/lib/commonjs/hooks/useContext.js.map +1 -1
- package/lib/commonjs/index.js +29 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/localization/StringSet.type.js +8 -0
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/platform/createFileService.expo.js +21 -2
- package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
- package/lib/commonjs/platform/createFileService.native.js +20 -3
- package/lib/commonjs/platform/createFileService.native.js.map +1 -1
- package/lib/commonjs/platform/createMediaService.expo.js +64 -0
- package/lib/commonjs/platform/createMediaService.expo.js.map +1 -0
- package/lib/commonjs/platform/createMediaService.native.js +67 -0
- package/lib/commonjs/platform/createMediaService.native.js.map +1 -0
- package/lib/commonjs/platform/createNotificationService.expo.js.map +1 -1
- package/lib/commonjs/platform/types.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/SendbirdUIKitContainer.js +5 -2
- package/lib/module/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/components/FileViewer.js +304 -0
- package/lib/module/components/FileViewer.js.map +1 -0
- package/lib/module/components/GroupChannelPreviewContainer.js +158 -0
- package/lib/module/components/GroupChannelPreviewContainer.js.map +1 -0
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +100 -0
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -0
- package/lib/module/components/MessageRenderer/FileMessage/index.js +6 -0
- package/lib/module/components/MessageRenderer/FileMessage/index.js.map +1 -1
- package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js +17 -26
- package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
- package/lib/module/components/SBUPressable.js +33 -0
- package/lib/module/components/SBUPressable.js.map +1 -0
- package/lib/module/components/UserActionBar.js +1 -1
- package/lib/module/components/UserActionBar.js.map +1 -1
- package/lib/module/components/UserSelectableBar.js +1 -1
- package/lib/module/components/UserSelectableBar.js.map +1 -1
- package/lib/module/constants.js +5 -0
- package/lib/module/constants.js.map +1 -1
- package/lib/module/contexts/PlatformService.js +4 -2
- package/lib/module/contexts/PlatformService.js.map +1 -1
- package/lib/module/contexts/SendbirdChat.js +6 -2
- package/lib/module/contexts/SendbirdChat.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +28 -7
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannel/module/moduleContext.js +2 -3
- package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/module/domain/groupChannel/types.js.map +1 -1
- package/lib/module/domain/groupChannelList/types.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js +1 -1
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/module/fragments/createGroupChannelCreateFragment.js +4 -4
- package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +15 -13
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelListFragment.js +11 -38
- package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelMembersFragment.js +1 -1
- package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -1
- package/lib/module/hooks/useContext.js.map +1 -1
- package/lib/module/index.js +4 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/localization/StringSet.type.js +8 -0
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/platform/createFileService.expo.js +21 -2
- package/lib/module/platform/createFileService.expo.js.map +1 -1
- package/lib/module/platform/createFileService.native.js +20 -3
- package/lib/module/platform/createFileService.native.js.map +1 -1
- package/lib/module/platform/createMediaService.expo.js +54 -0
- package/lib/module/platform/createMediaService.expo.js.map +1 -0
- package/lib/module/platform/createMediaService.native.js +57 -0
- package/lib/module/platform/createMediaService.native.js.map +1 -0
- package/lib/module/platform/createNotificationService.expo.js.map +1 -1
- package/lib/module/platform/types.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/SendbirdUIKitContainer.d.ts +7 -3
- package/lib/typescript/src/components/FileViewer.d.ts +12 -0
- package/lib/typescript/src/components/GroupChannelPreviewContainer.d.ts +8 -0
- package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +3 -0
- package/lib/typescript/src/components/SBUPressable.d.ts +18 -0
- package/lib/typescript/src/components/UserActionBar.d.ts +2 -3
- package/lib/typescript/src/components/UserSelectableBar.d.ts +2 -3
- package/lib/typescript/src/constants.d.ts +5 -0
- package/lib/typescript/src/contexts/PlatformService.d.ts +3 -2
- package/lib/typescript/src/contexts/SendbirdChat.d.ts +5 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +3 -2
- package/lib/typescript/src/domain/groupChannel/types.d.ts +6 -2
- package/lib/typescript/src/hooks/useContext.d.ts +7 -5
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/localization/StringSet.type.d.ts +4 -0
- package/lib/typescript/src/platform/createMediaService.expo.d.ts +9 -0
- package/lib/typescript/src/platform/createMediaService.native.d.ts +9 -0
- package/lib/typescript/src/platform/createNotificationService.expo.d.ts +1 -1
- package/lib/typescript/src/platform/types.d.ts +20 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +14 -5
- package/src/SendbirdUIKitContainer.tsx +14 -2
- package/src/components/FileViewer.tsx +284 -0
- package/src/components/GroupChannelPreviewContainer.tsx +134 -0
- package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +91 -0
- package/src/components/MessageRenderer/FileMessage/index.tsx +6 -0
- package/src/components/MessageRenderer/MessageOutgoingStatus.tsx +25 -32
- package/src/components/SBUPressable.tsx +40 -0
- package/src/components/UserActionBar.tsx +1 -1
- package/src/components/UserSelectableBar.tsx +1 -1
- package/src/constants.ts +5 -0
- package/src/contexts/PlatformService.tsx +15 -3
- package/src/contexts/SendbirdChat.tsx +13 -5
- package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +1 -1
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +23 -6
- package/src/domain/groupChannel/module/moduleContext.tsx +6 -13
- package/src/domain/groupChannel/types.ts +8 -2
- package/src/domain/groupChannelList/types.ts +1 -0
- package/src/domain/groupChannelSettings/module/moduleContext.tsx +5 -10
- package/src/fragments/createGroupChannelCreateFragment.tsx +38 -41
- package/src/fragments/createGroupChannelFragment.tsx +23 -33
- package/src/fragments/createGroupChannelListFragment.tsx +10 -32
- package/src/fragments/createGroupChannelMembersFragment.tsx +34 -39
- package/src/hooks/useContext.ts +3 -5
- package/src/index.ts +5 -1
- package/src/localization/StringSet.type.ts +8 -0
- package/src/platform/createFileService.expo.ts +17 -2
- package/src/platform/createFileService.native.ts +16 -3
- package/src/platform/createMediaService.expo.tsx +30 -0
- package/src/platform/createMediaService.native.tsx +37 -0
- package/src/platform/createNotificationService.expo.ts +1 -1
- package/src/platform/types.ts +26 -1
- package/src/version.ts +1 -1
|
@@ -2,10 +2,10 @@ import React from 'react';
|
|
|
2
2
|
import type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
3
3
|
import type { SendbirdChatSDK } from '@sendbird/uikit-utils';
|
|
4
4
|
import type { StringSet } from './localization/StringSet.type';
|
|
5
|
-
import type { ClipboardServiceInterface, FileServiceInterface, NotificationServiceInterface } from './platform/types';
|
|
5
|
+
import type { ClipboardServiceInterface, FileServiceInterface, MediaServiceInterface, NotificationServiceInterface } from './platform/types';
|
|
6
6
|
import type { ErrorBoundaryProps, LocalCacheStorage } from './types';
|
|
7
7
|
export declare const SendbirdUIKit: Readonly<{
|
|
8
|
-
VERSION: "1.0
|
|
8
|
+
VERSION: "1.1.0";
|
|
9
9
|
PLATFORM: string;
|
|
10
10
|
}>;
|
|
11
11
|
export declare type SendbirdUIKitContainerProps = React.PropsWithChildren<{
|
|
@@ -14,11 +14,14 @@ export declare type SendbirdUIKitContainerProps = React.PropsWithChildren<{
|
|
|
14
14
|
file: FileServiceInterface;
|
|
15
15
|
notification: NotificationServiceInterface;
|
|
16
16
|
clipboard: ClipboardServiceInterface;
|
|
17
|
+
media?: MediaServiceInterface;
|
|
17
18
|
};
|
|
18
19
|
chatOptions?: {
|
|
19
20
|
localCacheStorage?: LocalCacheStorage;
|
|
20
|
-
enableAutoPushTokenRegistration?: boolean;
|
|
21
21
|
onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;
|
|
22
|
+
enableAutoPushTokenRegistration?: boolean;
|
|
23
|
+
enableChannelListTypingIndicator?: boolean;
|
|
24
|
+
enableChannelListMessageReceiptStatus?: boolean;
|
|
22
25
|
};
|
|
23
26
|
localization?: {
|
|
24
27
|
stringSet?: StringSet;
|
|
@@ -27,6 +30,7 @@ export declare type SendbirdUIKitContainerProps = React.PropsWithChildren<{
|
|
|
27
30
|
theme?: UIKitTheme;
|
|
28
31
|
statusBarTranslucent?: boolean;
|
|
29
32
|
defaultHeaderTitleAlign?: 'left' | 'center';
|
|
33
|
+
defaultHeaderHeight?: number;
|
|
30
34
|
HeaderComponent?: HeaderStyleContextType['HeaderComponent'];
|
|
31
35
|
};
|
|
32
36
|
toast?: {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SendbirdFileMessage } from '@sendbird/uikit-utils';
|
|
2
|
+
declare type Props = {
|
|
3
|
+
fileMessage: SendbirdFileMessage;
|
|
4
|
+
deleteMessage: () => Promise<void>;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
onPressDownload?: (message: SendbirdFileMessage) => void;
|
|
7
|
+
onPressDelete?: (message: SendbirdFileMessage) => void;
|
|
8
|
+
headerShown?: boolean;
|
|
9
|
+
headerTopInset?: number;
|
|
10
|
+
};
|
|
11
|
+
declare const FileViewer: ({ headerShown, deleteMessage, headerTopInset, fileMessage, onPressDownload, onPressDelete, onClose, }: Props) => JSX.Element;
|
|
12
|
+
export default FileViewer;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SendbirdGroupChannel } from '@sendbird/uikit-utils';
|
|
2
|
+
declare type Props = {
|
|
3
|
+
channel: SendbirdGroupChannel;
|
|
4
|
+
onPress: () => void;
|
|
5
|
+
onLongPress: () => void;
|
|
6
|
+
};
|
|
7
|
+
declare const GroupChannelPreviewContainer: ({ onPress, onLongPress, channel }: Props) => JSX.Element;
|
|
8
|
+
export default GroupChannelPreviewContainer;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PressableProps, TouchableOpacityProps } from 'react-native';
|
|
2
|
+
declare type Components = 'Pressable' | 'TouchableOpacity';
|
|
3
|
+
declare type Props<T extends Components = 'Pressable'> = {
|
|
4
|
+
as?: T;
|
|
5
|
+
} & ExtractProps<T, AsProps>;
|
|
6
|
+
declare type AsProps = {
|
|
7
|
+
type: 'Pressable';
|
|
8
|
+
props: PressableProps;
|
|
9
|
+
} | {
|
|
10
|
+
type: 'TouchableOpacity';
|
|
11
|
+
props: TouchableOpacityProps;
|
|
12
|
+
};
|
|
13
|
+
declare type ExtractProps<T extends Components, U extends AsProps> = U extends {
|
|
14
|
+
type: T;
|
|
15
|
+
props: infer P;
|
|
16
|
+
} ? P : never;
|
|
17
|
+
declare const SBUPressable: <T extends Components>({ as, ...props }: Props<T>) => JSX.Element;
|
|
18
|
+
export default SBUPressable;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
declare type Props = {
|
|
3
2
|
uri: string;
|
|
4
3
|
name: string;
|
|
@@ -7,5 +6,5 @@ declare type Props = {
|
|
|
7
6
|
disabled: boolean;
|
|
8
7
|
onPressActionMenu?: () => void;
|
|
9
8
|
};
|
|
10
|
-
declare const
|
|
11
|
-
export default
|
|
9
|
+
declare const UserActionBar: ({ muted, uri, name, disabled, onPressActionMenu, label }: Props) => JSX.Element;
|
|
10
|
+
export default UserActionBar;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
declare type Props = {
|
|
3
2
|
uri: string;
|
|
4
3
|
name: string;
|
|
5
4
|
selected: boolean;
|
|
6
5
|
disabled: boolean;
|
|
7
6
|
};
|
|
8
|
-
declare const
|
|
9
|
-
export default
|
|
7
|
+
declare const UserSelectableBar: ({ uri, name, selected, disabled }: Props) => JSX.Element;
|
|
8
|
+
export default UserSelectableBar;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { ClipboardServiceInterface, FileServiceInterface, NotificationServiceInterface } from '../platform/types';
|
|
2
|
+
import type { ClipboardServiceInterface, FileServiceInterface, MediaServiceInterface, NotificationServiceInterface } from '../platform/types';
|
|
3
3
|
declare type Props = React.PropsWithChildren<{
|
|
4
4
|
fileService: FileServiceInterface;
|
|
5
5
|
clipboardService: ClipboardServiceInterface;
|
|
6
6
|
notificationService: NotificationServiceInterface;
|
|
7
|
+
mediaService?: MediaServiceInterface;
|
|
7
8
|
}>;
|
|
8
9
|
export declare const PlatformServiceContext: React.Context<Props | null>;
|
|
9
|
-
export declare const PlatformServiceProvider: ({ children, fileService, clipboardService, notificationService }: Props) => JSX.Element;
|
|
10
|
+
export declare const PlatformServiceProvider: ({ children, fileService, clipboardService, notificationService, mediaService, }: Props) => JSX.Element;
|
|
10
11
|
export {};
|
|
@@ -4,6 +4,8 @@ import type { FileType } from '../platform/types';
|
|
|
4
4
|
declare type Props = React.PropsWithChildren<{
|
|
5
5
|
sdkInstance: SendbirdChatSDK;
|
|
6
6
|
enableAutoPushTokenRegistration: boolean;
|
|
7
|
+
enableChannelListTypingIndicator: boolean;
|
|
8
|
+
enableChannelListMessageReceiptStatus: boolean;
|
|
7
9
|
}>;
|
|
8
10
|
declare type Context = {
|
|
9
11
|
sdk: SendbirdChatSDK;
|
|
@@ -13,6 +15,8 @@ declare type Context = {
|
|
|
13
15
|
markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;
|
|
14
16
|
features: {
|
|
15
17
|
autoPushTokenRegistrationEnabled: boolean;
|
|
18
|
+
channelListTypingIndicatorEnabled: boolean;
|
|
19
|
+
channelListMessageReceiptStatusEnabled: boolean;
|
|
16
20
|
deliveryReceiptEnabled: boolean;
|
|
17
21
|
broadcastChannelEnabled: boolean;
|
|
18
22
|
superGroupChannelEnabled: boolean;
|
|
@@ -20,5 +24,5 @@ declare type Context = {
|
|
|
20
24
|
};
|
|
21
25
|
};
|
|
22
26
|
export declare const SendbirdChatContext: React.Context<Context | null>;
|
|
23
|
-
export declare const SendbirdChatProvider: ({ children, sdkInstance, enableAutoPushTokenRegistration }: Props) => JSX.Element;
|
|
27
|
+
export declare const SendbirdChatProvider: ({ children, sdkInstance, enableAutoPushTokenRegistration, enableChannelListMessageReceiptStatus, enableChannelListTypingIndicator, }: Props) => JSX.Element;
|
|
24
28
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SendbirdMessage } from '@sendbird/uikit-utils';
|
|
3
|
-
declare const _default: React.MemoExoticComponent<({ currentUserId, channel, messages, renderMessage, nextMessages, newMessagesFromMembers, onBottomReached, onTopReached, renderNewMessagesButton, renderScrollToBottomButton, onResendFailedMessage, onDeleteMessage, onPressImageMessage, flatListProps, enableMessageGrouping, }: {
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ currentUserId, channel, messages, renderMessage, nextMessages, newMessagesFromMembers, onBottomReached, onTopReached, renderNewMessagesButton, renderScrollToBottomButton, onResendFailedMessage, onDeleteMessage, onPressImageMessage, onPressMediaMessage, flatListProps, enableMessageGrouping, }: {
|
|
4
4
|
enableMessageGrouping: boolean;
|
|
5
5
|
currentUserId?: string | undefined;
|
|
6
6
|
channel: import("sendbird").GroupChannel;
|
|
@@ -11,7 +11,7 @@ declare const _default: React.MemoExoticComponent<({ currentUserId, channel, mes
|
|
|
11
11
|
onBottomReached: () => void;
|
|
12
12
|
onResendFailedMessage: (failedMessage: import("sendbird").FileMessage | import("sendbird").UserMessage) => Promise<void>;
|
|
13
13
|
onDeleteMessage: (message: import("sendbird").FileMessage | import("sendbird").UserMessage) => Promise<void>;
|
|
14
|
-
|
|
14
|
+
onPressMediaMessage?: ((message: import("sendbird").FileMessage, deleteMessage: () => Promise<void>, uri: string) => void) | undefined;
|
|
15
15
|
renderMessage: (props: {
|
|
16
16
|
message: SendbirdMessage;
|
|
17
17
|
prevMessage?: SendbirdMessage | undefined;
|
|
@@ -32,5 +32,6 @@ declare const _default: React.MemoExoticComponent<({ currentUserId, channel, mes
|
|
|
32
32
|
onPress: () => void;
|
|
33
33
|
}> | null;
|
|
34
34
|
flatListProps?: Omit<import("react-native").FlatListProps<SendbirdMessage>, "data" | "renderItem"> | undefined;
|
|
35
|
+
onPressImageMessage?: ((message: import("sendbird").FileMessage, uri: string) => void) | undefined;
|
|
35
36
|
}) => JSX.Element>;
|
|
36
37
|
export default _default;
|
|
@@ -12,7 +12,7 @@ export interface GroupChannelProps {
|
|
|
12
12
|
onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];
|
|
13
13
|
onBeforeSendFileMessage?: (params: SendbirdFileMessageParams) => SendbirdFileMessageParams | Promise<SendbirdFileMessageParams>;
|
|
14
14
|
onBeforeSendUserMessage?: (params: SendbirdUserMessageParams) => SendbirdUserMessageParams | Promise<SendbirdUserMessageParams>;
|
|
15
|
-
|
|
15
|
+
onPressMediaMessage?: GroupChannelProps['MessageList']['onPressMediaMessage'];
|
|
16
16
|
renderMessage?: GroupChannelProps['MessageList']['renderMessage'];
|
|
17
17
|
renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];
|
|
18
18
|
renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];
|
|
@@ -23,6 +23,8 @@ export interface GroupChannelProps {
|
|
|
23
23
|
sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];
|
|
24
24
|
collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];
|
|
25
25
|
queryCreator?: UseGroupChannelMessagesOptions['queryCreator'];
|
|
26
|
+
/** @deprecated `onPressImageMessage` is deprecated, please use `onPressMediaMessage` instead **/
|
|
27
|
+
onPressImageMessage?: GroupChannelProps['MessageList']['onPressImageMessage'];
|
|
26
28
|
};
|
|
27
29
|
Header: {
|
|
28
30
|
onPressHeaderLeft: () => void;
|
|
@@ -39,7 +41,7 @@ export interface GroupChannelProps {
|
|
|
39
41
|
onBottomReached: () => void;
|
|
40
42
|
onResendFailedMessage: (failedMessage: SendbirdUserMessage | SendbirdFileMessage) => Promise<void>;
|
|
41
43
|
onDeleteMessage: (message: SendbirdUserMessage | SendbirdFileMessage) => Promise<void>;
|
|
42
|
-
|
|
44
|
+
onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;
|
|
43
45
|
renderMessage: (props: {
|
|
44
46
|
message: SendbirdMessage;
|
|
45
47
|
prevMessage?: SendbirdMessage;
|
|
@@ -60,6 +62,8 @@ export interface GroupChannelProps {
|
|
|
60
62
|
onPress: () => void;
|
|
61
63
|
}>;
|
|
62
64
|
flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;
|
|
65
|
+
/** @deprecated `onPressImageMessage` is deprecated, please use `onPressMediaMessage` instead **/
|
|
66
|
+
onPressImageMessage?: (message: SendbirdFileMessage, uri: string) => void;
|
|
63
67
|
};
|
|
64
68
|
Input: {
|
|
65
69
|
channel: SendbirdGroupChannel;
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare const useLocalization: () => LocalizationContextType;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const useLocalization: () => import("../contexts/Localization").LocalizationContextType;
|
|
4
3
|
export declare const usePlatformService: () => {
|
|
5
4
|
fileService: import("..").FileServiceInterface;
|
|
6
5
|
clipboardService: import("..").ClipboardServiceInterface;
|
|
7
6
|
notificationService: import("..").NotificationServiceInterface;
|
|
7
|
+
mediaService?: import("../platform/types").MediaServiceInterface | undefined;
|
|
8
8
|
} & {
|
|
9
|
-
children?:
|
|
9
|
+
children?: import("react").ReactNode;
|
|
10
10
|
};
|
|
11
11
|
export declare const useSendbirdChat: () => {
|
|
12
12
|
sdk: import("sendbird").SendBirdInstance;
|
|
13
13
|
currentUser?: import("sendbird").User | undefined;
|
|
14
|
-
setCurrentUser:
|
|
14
|
+
setCurrentUser: import("react").Dispatch<import("react").SetStateAction<import("sendbird").User | undefined>>;
|
|
15
15
|
updateCurrentUserInfo: (nickname: string, profile?: string | import("..").FileType | undefined) => Promise<import("sendbird").User>;
|
|
16
16
|
markAsDeliveredWithChannel: (channel: import("sendbird").GroupChannel) => void;
|
|
17
17
|
features: {
|
|
18
18
|
autoPushTokenRegistrationEnabled: boolean;
|
|
19
|
+
channelListTypingIndicatorEnabled: boolean;
|
|
20
|
+
channelListMessageReceiptStatusEnabled: boolean;
|
|
19
21
|
deliveryReceiptEnabled: boolean;
|
|
20
22
|
broadcastChannelEnabled: boolean;
|
|
21
23
|
superGroupChannelEnabled: boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { default as MessageRenderer } from './components/MessageRenderer';
|
|
2
2
|
export { default as ChannelCover } from './components/ChannelCover';
|
|
3
3
|
export { default as ChatFlatList } from './components/ChatFlatList';
|
|
4
|
+
export { default as FileViewer } from './components/FileViewer';
|
|
4
5
|
export { default as NewMessagesButton } from './components/NewMessagesButton';
|
|
5
6
|
export { default as ProviderLayout } from './components/ProviderLayout';
|
|
6
7
|
export { default as ScrollToBottomButton } from './components/ScrollToBottomButton';
|
|
@@ -31,9 +32,11 @@ export type { StringSet } from './localization/StringSet.type';
|
|
|
31
32
|
export { default as createNativeFileService } from './platform/createFileService.native';
|
|
32
33
|
export { default as createNativeClipboardService } from './platform/createClipboardService.native';
|
|
33
34
|
export { default as createNativeNotificationService } from './platform/createNotificationService.native';
|
|
35
|
+
export { default as createNativeMediaService } from './platform/createMediaService.native';
|
|
34
36
|
export { default as createExpoFileService } from './platform/createFileService.expo';
|
|
35
37
|
export { default as createExpoClipboardService } from './platform/createClipboardService.expo';
|
|
36
38
|
export { default as createExpoNotificationService } from './platform/createNotificationService.expo';
|
|
39
|
+
export { default as createExpoMediaService } from './platform/createMediaService.expo';
|
|
37
40
|
export type { FileServiceInterface, ClipboardServiceInterface, FilePickerServiceInterface, FileSystemServiceInterface, SaveOptions, OpenDocumentOptions, OpenCameraOptions, OpenMediaLibraryOptions, OpenResultListener, DownloadedPath, Unsubscribe, FilePickerResponse, FileType, NotificationServiceInterface, } from './platform/types';
|
|
38
41
|
/** Domain **/
|
|
39
42
|
export * from './domain/groupChannel';
|
|
@@ -107,6 +107,10 @@ export interface StringSet {
|
|
|
107
107
|
CHANNEL_NO_MEMBERS: string;
|
|
108
108
|
TYPING_INDICATOR_TYPINGS: (users: SendbirdUser[]) => string | undefined;
|
|
109
109
|
};
|
|
110
|
+
FILE_VIEWER: {
|
|
111
|
+
TITLE: (message: SendbirdFileMessage) => string;
|
|
112
|
+
SUBTITLE: (message: SendbirdFileMessage) => string;
|
|
113
|
+
};
|
|
110
114
|
PLACEHOLDER: {
|
|
111
115
|
NO_BANNED_MEMBERS: string;
|
|
112
116
|
NO_USERS: string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type * as ExpoAV from 'expo-av';
|
|
2
|
+
import type * as ExpoVideoThumbnail from 'expo-video-thumbnails';
|
|
3
|
+
import type { MediaServiceInterface } from './types';
|
|
4
|
+
declare type Modules = {
|
|
5
|
+
avModule: typeof ExpoAV;
|
|
6
|
+
thumbnailModule: typeof ExpoVideoThumbnail;
|
|
7
|
+
};
|
|
8
|
+
declare const createExpoMediaService: ({ avModule, thumbnailModule }: Modules) => MediaServiceInterface;
|
|
9
|
+
export default createExpoMediaService;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type * as CreateThumbnail from 'react-native-create-thumbnail';
|
|
2
|
+
import type Video from 'react-native-video';
|
|
3
|
+
import type { MediaServiceInterface } from './types';
|
|
4
|
+
declare type Modules = {
|
|
5
|
+
VideoComponent: typeof Video;
|
|
6
|
+
thumbnailModule: typeof CreateThumbnail;
|
|
7
|
+
};
|
|
8
|
+
declare const createNativeMediaService: ({ VideoComponent, thumbnailModule }: Modules) => MediaServiceInterface;
|
|
9
|
+
export default createNativeMediaService;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type ExpoNotification from 'expo-notifications';
|
|
1
|
+
import type * as ExpoNotification from 'expo-notifications';
|
|
2
2
|
import type { NotificationServiceInterface } from './types';
|
|
3
3
|
declare const createExpoNotificationService: (messagingModule: typeof ExpoNotification) => NotificationServiceInterface;
|
|
4
4
|
export default createExpoNotificationService;
|
|
@@ -29,7 +29,7 @@ export interface OpenMediaLibraryOptions extends OpenResultListener {
|
|
|
29
29
|
}
|
|
30
30
|
export interface OpenCameraOptions extends OpenResultListener {
|
|
31
31
|
cameraType?: 'front' | 'back';
|
|
32
|
-
mediaType?: 'photo' | 'video';
|
|
32
|
+
mediaType?: 'photo' | 'video' | 'all';
|
|
33
33
|
}
|
|
34
34
|
export declare type OpenDocumentOptions = OpenResultListener;
|
|
35
35
|
export interface SaveOptions {
|
|
@@ -45,3 +45,22 @@ export interface FilePickerServiceInterface {
|
|
|
45
45
|
export interface FileSystemServiceInterface {
|
|
46
46
|
save(options?: SaveOptions): Promise<DownloadedPath | null>;
|
|
47
47
|
}
|
|
48
|
+
interface VideoProps {
|
|
49
|
+
source: {
|
|
50
|
+
uri: string;
|
|
51
|
+
} | number;
|
|
52
|
+
resizeMode?: 'cover' | 'contain' | 'stretch';
|
|
53
|
+
onLoad?: () => void;
|
|
54
|
+
}
|
|
55
|
+
interface GetVideoThumbnailOptions {
|
|
56
|
+
url: string;
|
|
57
|
+
timeMills?: number;
|
|
58
|
+
quality?: number;
|
|
59
|
+
}
|
|
60
|
+
export interface MediaServiceInterface {
|
|
61
|
+
VideoComponent<Props = {}>(props: VideoProps & Props): JSX.Element;
|
|
62
|
+
getVideoThumbnail(options: GetVideoThumbnailOptions): Promise<{
|
|
63
|
+
path: string;
|
|
64
|
+
} | null>;
|
|
65
|
+
}
|
|
66
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const VERSION = "1.0
|
|
1
|
+
declare const VERSION = "1.1.0";
|
|
2
2
|
export default VERSION;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sendbird/uikit-react-native",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "react-native-uikit",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"access": "public"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@sendbird/uikit-chat-hooks": "1.0
|
|
45
|
-
"@sendbird/uikit-react-native-foundation": "1.0
|
|
46
|
-
"@sendbird/uikit-utils": "1.0
|
|
44
|
+
"@sendbird/uikit-chat-hooks": "1.1.0",
|
|
45
|
+
"@sendbird/uikit-react-native-foundation": "1.1.0",
|
|
46
|
+
"@sendbird/uikit-utils": "1.1.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@react-native-clipboard/clipboard": "^1.8.5",
|
|
@@ -53,24 +53,29 @@
|
|
|
53
53
|
"@react-native-firebase/messaging": "^14.4.0",
|
|
54
54
|
"@types/react": "*",
|
|
55
55
|
"@types/react-native": "*",
|
|
56
|
+
"@types/react-native-video": "^5.0.14",
|
|
56
57
|
"date-fns": "^2.28.0",
|
|
58
|
+
"expo-av": "^12.0.4",
|
|
57
59
|
"expo-clipboard": "^2.1.1",
|
|
58
60
|
"expo-document-picker": "^10.1.3",
|
|
59
61
|
"expo-file-system": "^13.1.4",
|
|
60
62
|
"expo-image-picker": "^12.0.2",
|
|
61
63
|
"expo-media-library": "^14.0.1",
|
|
62
64
|
"expo-notifications": "^0.14.1",
|
|
65
|
+
"expo-video-thumbnails": "^6.4.0",
|
|
63
66
|
"glob": "^7.2.0",
|
|
64
67
|
"inquirer": "^8.2.0",
|
|
65
68
|
"js-convert-case": "^4.2.0",
|
|
66
69
|
"react": "17.0.2",
|
|
67
70
|
"react-native": "0.66.4",
|
|
68
71
|
"react-native-builder-bob": "^0.18.0",
|
|
72
|
+
"react-native-create-thumbnail": "^1.5.1",
|
|
69
73
|
"react-native-document-picker": "^8.0.0",
|
|
70
74
|
"react-native-file-access": "^2.4.3",
|
|
71
75
|
"react-native-image-picker": "^4.7.1",
|
|
72
76
|
"react-native-permissions": "^3.6.0",
|
|
73
77
|
"react-native-safe-area-context": "^3.3.2",
|
|
78
|
+
"react-native-video": "^5.2.0",
|
|
74
79
|
"typescript": "^4.1.3"
|
|
75
80
|
},
|
|
76
81
|
"peerDependencies": {
|
|
@@ -79,18 +84,22 @@
|
|
|
79
84
|
"@react-native-community/netinfo": ">=9.3.0",
|
|
80
85
|
"@react-native-firebase/messaging": ">=14.4.0",
|
|
81
86
|
"date-fns": ">=2.28.0",
|
|
87
|
+
"expo-av": ">=12.0.4",
|
|
82
88
|
"expo-clipboard": ">=2.1.1",
|
|
83
89
|
"expo-document-picker": ">=10.1.3",
|
|
84
90
|
"expo-file-system": ">=13.1.4",
|
|
85
91
|
"expo-image-picker": ">=12.0.2",
|
|
86
92
|
"expo-notifications": ">=0.14.1",
|
|
93
|
+
"expo-video-thumbnails": ">=6.4.0",
|
|
87
94
|
"react": ">=16.13.1",
|
|
88
95
|
"react-native": ">=0.63.3",
|
|
96
|
+
"react-native-create-thumbnail": ">=1.5.1",
|
|
89
97
|
"react-native-document-picker": ">=8.0.0",
|
|
90
98
|
"react-native-file-access": ">=2.4.3",
|
|
91
99
|
"react-native-image-picker": ">=4.7.1",
|
|
92
100
|
"react-native-permissions": ">=3.6.0",
|
|
93
101
|
"react-native-safe-area-context": ">=3.3.2",
|
|
102
|
+
"react-native-video": ">=5.2.0",
|
|
94
103
|
"sendbird": "^3.1.22"
|
|
95
104
|
},
|
|
96
105
|
"peerDependenciesMeta": {
|
|
@@ -150,5 +159,5 @@
|
|
|
150
159
|
"readmeFile": "./README.md",
|
|
151
160
|
"displayName": "@sendbird/uikit-react-native"
|
|
152
161
|
},
|
|
153
|
-
"gitHead": "
|
|
162
|
+
"gitHead": "787ef6d52fec5d01e9b831d7a6f17e33614e2d09"
|
|
154
163
|
}
|
|
@@ -23,7 +23,12 @@ import { useLocalization } from './hooks/useContext';
|
|
|
23
23
|
import StringSetEn from './localization/StringSet.en';
|
|
24
24
|
import type { StringSet } from './localization/StringSet.type';
|
|
25
25
|
import SBUDynamicModule from './platform/dynamicModule';
|
|
26
|
-
import type {
|
|
26
|
+
import type {
|
|
27
|
+
ClipboardServiceInterface,
|
|
28
|
+
FileServiceInterface,
|
|
29
|
+
MediaServiceInterface,
|
|
30
|
+
NotificationServiceInterface,
|
|
31
|
+
} from './platform/types';
|
|
27
32
|
import type { ErrorBoundaryProps, LocalCacheStorage } from './types';
|
|
28
33
|
import VERSION from './version';
|
|
29
34
|
|
|
@@ -40,11 +45,14 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
|
|
|
40
45
|
file: FileServiceInterface;
|
|
41
46
|
notification: NotificationServiceInterface;
|
|
42
47
|
clipboard: ClipboardServiceInterface;
|
|
48
|
+
media?: MediaServiceInterface;
|
|
43
49
|
};
|
|
44
50
|
chatOptions?: {
|
|
45
51
|
localCacheStorage?: LocalCacheStorage;
|
|
46
|
-
enableAutoPushTokenRegistration?: boolean;
|
|
47
52
|
onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;
|
|
53
|
+
enableAutoPushTokenRegistration?: boolean;
|
|
54
|
+
enableChannelListTypingIndicator?: boolean;
|
|
55
|
+
enableChannelListMessageReceiptStatus?: boolean;
|
|
48
56
|
};
|
|
49
57
|
localization?: {
|
|
50
58
|
stringSet?: StringSet;
|
|
@@ -53,6 +61,7 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
|
|
|
53
61
|
theme?: UIKitTheme;
|
|
54
62
|
statusBarTranslucent?: boolean;
|
|
55
63
|
defaultHeaderTitleAlign?: 'left' | 'center';
|
|
64
|
+
defaultHeaderHeight?: number;
|
|
56
65
|
HeaderComponent?: HeaderStyleContextType['HeaderComponent'];
|
|
57
66
|
};
|
|
58
67
|
toast?: {
|
|
@@ -132,12 +141,15 @@ const SendbirdUIKitContainer = ({
|
|
|
132
141
|
<SendbirdChatProvider
|
|
133
142
|
sdkInstance={sdkInstance}
|
|
134
143
|
enableAutoPushTokenRegistration={chatOptions?.enableAutoPushTokenRegistration ?? true}
|
|
144
|
+
enableChannelListTypingIndicator={chatOptions?.enableChannelListTypingIndicator ?? false}
|
|
145
|
+
enableChannelListMessageReceiptStatus={chatOptions?.enableChannelListMessageReceiptStatus ?? false}
|
|
135
146
|
>
|
|
136
147
|
<LocalizationProvider stringSet={localization?.stringSet ?? StringSetEn}>
|
|
137
148
|
<PlatformServiceProvider
|
|
138
149
|
fileService={platformServices.file}
|
|
139
150
|
notificationService={platformServices.notification}
|
|
140
151
|
clipboardService={platformServices.clipboard}
|
|
152
|
+
mediaService={platformServices.media}
|
|
141
153
|
>
|
|
142
154
|
<UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>
|
|
143
155
|
<HeaderStyleProvider
|