Skip to content

Commit a79ac92

Browse files
committed
feat: added visibility of users who reacted in SuperGroupChannel
1 parent 5500831 commit a79ac92

File tree

8 files changed

+92
-46
lines changed

8 files changed

+92
-46
lines changed

packages/uikit-react-native/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.tsx

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -123,27 +123,24 @@ const ReactionUserListBottomSheet = ({
123123
};
124124

125125
const renderPage = () => {
126-
const userCountDifference = (focusedReaction?.count || 0) - (focusedReaction?.sampledUserIds.length || 0);
126+
const userCountDifference = (focusedReaction?.count || 0) - (focusedReaction?.sampledUserInfoList.length || 0);
127127

128128
return (
129129
<>
130-
{focusedReaction?.sampledUserIds.map((userId) => {
130+
{focusedReaction?.sampledUserInfoList.map((reactedUserInfo) => {
131131
if (channel?.isGroupChannel()) {
132-
const user = channel.members.find((x) => x.userId === userId);
133132
return (
134133
<Pressable
135-
key={userId}
134+
key={reactedUserInfo.userId}
136135
onPress={async () => {
137-
if (user) {
138-
await onClose();
139-
onPressUserProfile(user);
140-
}
136+
await onClose();
137+
onPressUserProfile(reactedUserInfo);
141138
}}
142139
style={styles.pageItem}
143140
>
144-
<Avatar size={36} uri={user?.profileUrl} containerStyle={styles.avatar} />
141+
<Avatar size={36} uri={reactedUserInfo?.profileUrl} containerStyle={styles.avatar} />
145142
<Text subtitle2 style={{ flex: 1 }}>
146-
{user?.nickname || STRINGS.LABELS.USER_NO_NAME}
143+
{reactedUserInfo?.nickname || STRINGS.LABELS.USER_NO_NAME}
147144
</Text>
148145
</Pressable>
149146
);

packages/uikit-react-native/src/components/ReactionBottomSheets/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type React from 'react';
22

3-
import type { SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';
3+
import { SendbirdMember, SendbirdReactedUserInfo, SendbirdUser } from '@sendbird/uikit-utils';
44

55
import type { LocalizationContext } from '../../contexts/LocalizationCtx';
66
import type { ReactionContext } from '../../contexts/ReactionCtx';
@@ -13,7 +13,7 @@ export type ReactionBottomSheetProps = {
1313
visible: boolean;
1414
onDismiss: () => void;
1515
onClose: () => Promise<void>;
16-
onPressUserProfile: (user: SendbirdUser | SendbirdMember) => void;
16+
onPressUserProfile: (user: SendbirdUser | SendbirdMember | SendbirdReactedUserInfo) => void;
1717
chatCtx: GetFromContext<typeof SendbirdChatContext>;
1818
reactionCtx: GetFromContext<typeof ReactionContext>;
1919
localizationCtx: GetFromContext<typeof LocalizationContext>;

packages/uikit-react-native/src/containers/SendbirdUIKitContainer.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
SendbirdGroupChannel,
2626
SendbirdGroupChannelCreateParams,
2727
SendbirdMember,
28+
SendbirdReactedUserInfo,
2829
SendbirdUser,
2930
useIsFirstMount,
3031
} from '@sendbird/uikit-utils';
@@ -141,11 +142,11 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
141142
onCreateChannel: (channel: SendbirdGroupChannel) => void;
142143
onBeforeCreateChannel?: (
143144
channelParams: SendbirdGroupChannelCreateParams,
144-
users: SendbirdUser[] | SendbirdMember[],
145+
users: SendbirdUser[] | SendbirdMember[] | SendbirdReactedUserInfo[],
145146
) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;
146147
};
147148
reaction?: {
148-
onPressUserProfile?: (user: SendbirdUser | SendbirdMember) => void;
149+
onPressUserProfile?: (user: SendbirdUser | SendbirdMember | SendbirdReactedUserInfo) => void;
149150
};
150151
userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;
151152
imageCompression?: Partial<ImageCompressionConfigInterface>;

packages/uikit-react-native/src/contexts/UserProfileCtx.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type {
66
SendbirdGroupChannel,
77
SendbirdGroupChannelCreateParams,
88
SendbirdMember,
9+
SendbirdReactedUserInfo,
910
SendbirdUser,
1011
} from '@sendbird/uikit-utils';
1112
import { Logger, PASS, getDefaultGroupChannelCreateParams, useIIFE } from '@sendbird/uikit-utils';
@@ -16,15 +17,15 @@ import { SendbirdChatContext } from '../contexts/SendbirdChatCtx';
1617
type OnCreateChannel = (channel: SendbirdGroupChannel) => void;
1718
type OnBeforeCreateChannel = (
1819
channelParams: SendbirdGroupChannelCreateParams,
19-
users: SendbirdUser[] | SendbirdMember[],
20+
users: SendbirdUser[] | SendbirdMember[] | SendbirdReactedUserInfo[],
2021
) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;
2122

2223
type ShowOptions = {
2324
hideMessageButton?: boolean;
2425
};
2526

2627
export type UserProfileContextType = {
27-
show(user: SendbirdUser | SendbirdMember, options?: ShowOptions): void;
28+
show(user: SendbirdUser | SendbirdMember | SendbirdReactedUserInfo, options?: ShowOptions): void;
2829
hide(): void;
2930
};
3031

@@ -58,7 +59,7 @@ export const UserProfileProvider = ({
5859

5960
const { bottom, left, right } = useSafeAreaInsets();
6061

61-
const [user, setUser] = useState<SendbirdUser | SendbirdMember>();
62+
const [user, setUser] = useState<SendbirdUser | SendbirdMember | SendbirdReactedUserInfo>();
6263
const [visible, setVisible] = useState(false);
6364
const [hideMessageButton, setHideMessageButton] = useState(false);
6465

packages/uikit-react-native/src/localization/StringSet.type.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type {
88
SendbirdMessage,
99
SendbirdOpenChannel,
1010
SendbirdParticipant,
11+
SendbirdReactedUserInfo,
1112
SendbirdUser,
1213
SendbirdUserMessage,
1314
} from '@sendbird/uikit-utils';
@@ -377,6 +378,6 @@ export interface StringSet {
377378
PROFILE_CARD: {
378379
BUTTON_MESSAGE: string;
379380
BODY_LABEL: string;
380-
BODY: (user: SendbirdUser | SendbirdMember) => string;
381+
BODY: (user: SendbirdUser | SendbirdMember | SendbirdReactedUserInfo) => string;
381382
};
382383
}

packages/uikit-utils/src/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ import type {
2525
Member,
2626
MessageCollection,
2727
} from '@sendbird/chat/groupChannel';
28-
import type {
28+
import {
2929
OpenChannelCreateParams,
3030
OpenChannelUpdateParams,
31+
ReactedUserInfo,
3132
SendableMessage,
3233
} from '@sendbird/chat/lib/__definition';
3334
import type {
@@ -112,6 +113,7 @@ export type SendbirdOpenChannel = OpenChannel;
112113
export type SendbirdFeedChannel = FeedChannel;
113114

114115
export type SendbirdReaction = Reaction;
116+
export type SendbirdReactedUserInfo = ReactedUserInfo;
115117
export type SendbirdEmoji = Emoji;
116118
export type SendbirdEmojiCategory = EmojiCategory;
117119
export type SendbirdEmojiContainer = EmojiContainer;

sample/ios/Podfile.lock

Lines changed: 63 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,7 +1021,7 @@ PODS:
10211021
- React-Mapbuffer (0.74.3):
10221022
- glog
10231023
- React-debug
1024-
- react-native-cameraroll (7.8.1):
1024+
- react-native-cameraroll (7.8.3):
10251025
- DoubleConversion
10261026
- glog
10271027
- hermes-engine
@@ -1044,8 +1044,27 @@ PODS:
10441044
- Yoga
10451045
- react-native-create-thumbnail (2.0.0):
10461046
- React-Core
1047-
- react-native-document-picker (9.3.0):
1047+
- react-native-document-picker (9.3.1):
1048+
- DoubleConversion
1049+
- glog
1050+
- hermes-engine
1051+
- RCT-Folly (= 2024.01.01.00)
1052+
- RCTRequired
1053+
- RCTTypeSafety
1054+
- React-Codegen
10481055
- React-Core
1056+
- React-debug
1057+
- React-Fabric
1058+
- React-featureflags
1059+
- React-graphics
1060+
- React-ImageManager
1061+
- React-NativeModulesApple
1062+
- React-RCTFabric
1063+
- React-rendererdebug
1064+
- React-utils
1065+
- ReactCommon/turbomodule/bridging
1066+
- ReactCommon/turbomodule/core
1067+
- Yoga
10491068
- react-native-image-picker (7.1.2):
10501069
- DoubleConversion
10511070
- glog
@@ -1091,13 +1110,32 @@ PODS:
10911110
- ReactCommon/turbomodule/bridging
10921111
- ReactCommon/turbomodule/core
10931112
- Yoga
1094-
- react-native-netinfo (11.3.2):
1113+
- react-native-netinfo (11.4.1):
10951114
- React-Core
1096-
- react-native-safe-area-context (4.10.8):
1115+
- react-native-safe-area-context (4.14.0):
10971116
- React-Core
1098-
- react-native-slider (4.4.2):
1117+
- react-native-slider (4.5.5):
1118+
- DoubleConversion
1119+
- glog
1120+
- hermes-engine
1121+
- RCT-Folly (= 2024.01.01.00)
1122+
- RCTRequired
1123+
- RCTTypeSafety
1124+
- React-Codegen
10991125
- React-Core
1100-
- react-native-video (6.3.0):
1126+
- React-debug
1127+
- React-Fabric
1128+
- React-featureflags
1129+
- React-graphics
1130+
- React-ImageManager
1131+
- React-NativeModulesApple
1132+
- React-RCTFabric
1133+
- React-rendererdebug
1134+
- React-utils
1135+
- ReactCommon/turbomodule/bridging
1136+
- ReactCommon/turbomodule/core
1137+
- Yoga
1138+
- react-native-video (6.7.0):
11011139
- DoubleConversion
11021140
- glog
11031141
- hermes-engine
@@ -1111,15 +1149,15 @@ PODS:
11111149
- React-featureflags
11121150
- React-graphics
11131151
- React-ImageManager
1114-
- react-native-video/Video (= 6.3.0)
1152+
- react-native-video/Video (= 6.7.0)
11151153
- React-NativeModulesApple
11161154
- React-RCTFabric
11171155
- React-rendererdebug
11181156
- React-utils
11191157
- ReactCommon/turbomodule/bridging
11201158
- ReactCommon/turbomodule/core
11211159
- Yoga
1122-
- react-native-video/Video (6.3.0):
1160+
- react-native-video/Video (6.7.0):
11231161
- DoubleConversion
11241162
- glog
11251163
- hermes-engine
@@ -1369,14 +1407,14 @@ PODS:
13691407
- React-logger (= 0.74.3)
13701408
- React-perflogger (= 0.74.3)
13711409
- React-utils (= 0.74.3)
1372-
- ReactNativeFileAccess (3.1.0):
1410+
- ReactNativeFileAccess (3.1.1):
13731411
- React-Core
13741412
- ZIPFoundation
1375-
- RNAudioRecorderPlayer (3.6.10):
1413+
- RNAudioRecorderPlayer (3.6.12):
13761414
- React-Core
1377-
- RNCAsyncStorage (1.23.1):
1415+
- RNCAsyncStorage (1.24.0):
13781416
- React-Core
1379-
- RNCClipboard (1.14.1):
1417+
- RNCClipboard (1.14.3):
13801418
- React-Core
13811419
- RNCPushNotificationIOS (1.11.0):
13821420
- React-Core
@@ -1401,7 +1439,7 @@ PODS:
14011439
- RNNotifeeCore/NotifeeCore (5.7.0)
14021440
- RNPermissions (3.10.1):
14031441
- React-Core
1404-
- RNScreens (3.32.0):
1442+
- RNScreens (3.35.0):
14051443
- DoubleConversion
14061444
- glog
14071445
- hermes-engine
@@ -1749,16 +1787,16 @@ SPEC CHECKSUMS:
17491787
React-jsitracing: 6b3c8c98313642140530f93c46f5a6ca4530b446
17501788
React-logger: fa92ba4d3a5d39ac450f59be2a3cec7b099f0304
17511789
React-Mapbuffer: 9f68550e7c6839d01411ac8896aea5c868eff63a
1752-
react-native-cameraroll: a9138c165c9975da773d26945591d313992c799b
1790+
react-native-cameraroll: 4f313ab09aeaf42ac5f72dec840641da7656f104
17531791
react-native-create-thumbnail: ab55d24aea01723cf386f18b0b542aabb1982f27
1754-
react-native-document-picker: 5b97e24a7f1a1e4a50a72c540a043f32d29a70a2
1792+
react-native-document-picker: c4f197741c327270453aa9840932098e0064fd52
17551793
react-native-image-picker: c3afe5472ef870d98a4b28415fc0b928161ee5f7
17561794
react-native-image-resizer: fd0c333eca55147bd55c5e054cac95dcd0da6814
17571795
react-native-mmkv: 8c9a677e64a1ac89b0c6cf240feea528318b3074
1758-
react-native-netinfo: 076df4f9b07f6670acf4ce9a75aac8d34c2e2ccc
1759-
react-native-safe-area-context: b7daa1a8df36095a032dff095a1ea8963cb48371
1760-
react-native-slider: 33b8d190b59d4f67a541061bb91775d53d617d9d
1761-
react-native-video: 449453bcc9e02d17f7d5dd55e07bafd4129cec5c
1796+
react-native-netinfo: f0a9899081c185db1de5bb2fdc1c88c202a059ac
1797+
react-native-safe-area-context: 4532f1a0c5d34a46b9324ccaaedcb5582a302b7d
1798+
react-native-slider: 646f6727b04b619ec62d6547fe90b8f561950036
1799+
react-native-video: d78e478668d5472aa28a2e612785f5605991da93
17621800
React-nativeconfig: fa5de9d8f4dbd5917358f8ad3ad1e08762f01dcb
17631801
React-NativeModulesApple: 585d1b78e0597de364d259cb56007052d0bda5e5
17641802
React-perflogger: 7bb9ba49435ff66b666e7966ee10082508a203e8
@@ -1782,10 +1820,10 @@ SPEC CHECKSUMS:
17821820
React-runtimescheduler: 0c80752bceb80924cb8a4babc2a8e3ed70d41e87
17831821
React-utils: a06061b3887c702235d2dac92dacbd93e1ea079e
17841822
ReactCommon: f00e436b3925a7ae44dfa294b43ef360fbd8ccc4
1785-
ReactNativeFileAccess: e3b1a0a36b919d20279947aac31c2e939827c93b
1786-
RNAudioRecorderPlayer: f3b4f32d5581a44be0f9eb383dc87f98f941b08b
1787-
RNCAsyncStorage: 826b603ae9c0f88b5ac4e956801f755109fa4d5c
1788-
RNCClipboard: 0a720adef5ec193aa0e3de24c3977222c7e52a37
1823+
ReactNativeFileAccess: 863c8952c05c0ea5f592ef3101169baaf66777bd
1824+
RNAudioRecorderPlayer: 224c7de87722938aedce04000d09baa633148f5b
1825+
RNCAsyncStorage: ec53e44dc3e75b44aa2a9f37618a49c3bc080a7a
1826+
RNCClipboard: 2821ac938ef46f736a8de0c8814845dde2dcbdfb
17891827
RNCPushNotificationIOS: 64218f3c776c03d7408284a819b2abfda1834bc8
17901828
RNDateTimePicker: 1dd15d7ed1ab7d999056bc77879a42920d139c12
17911829
RNFastImage: 5c9c9fed9c076e521b3f509fe79e790418a544e8
@@ -1794,11 +1832,11 @@ SPEC CHECKSUMS:
17941832
RNNotifee: 40cc97ddc290e102894ea5381e90905f50598cfe
17951833
RNNotifeeCore: 2d6233c6e9cf7755b8f460061c7811113043d2d3
17961834
RNPermissions: 4e3714e18afe7141d000beae3755e5b5fb2f5e05
1797-
RNScreens: 5aeecbb09aa7285379b6e9f3c8a3c859bb16401c
1835+
RNScreens: 6b641f232990a9d505a6d139fd18c3c759c9d290
17981836
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
17991837
SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d
18001838
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
1801-
Yoga: 04f1db30bb810187397fa4c37dd1868a27af229c
1839+
Yoga: 88480008ccacea6301ff7bf58726e27a72931c8d
18021840
ZIPFoundation: b8c29ea7ae353b309bc810586181fd073cb3312c
18031841

18041842
PODFILE CHECKSUM: 854e85b2bbfd7d0e442b6dea393d8c15cb83909e

sample/ios/SendbirdUIKitSample.xcodeproj/project.pbxproj

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,10 @@
701701
"-DFOLLY_CFG_NO_COROUTINES=1",
702702
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
703703
);
704-
OTHER_LDFLAGS = "$(inherited) ";
704+
OTHER_LDFLAGS = (
705+
"$(inherited)",
706+
" ",
707+
);
705708
REACT_NATIVE_PATH = "${PODS_ROOT}/../../../node_modules/react-native";
706709
SDKROOT = iphoneos;
707710
USE_HERMES = true;
@@ -773,7 +776,10 @@
773776
"-DFOLLY_CFG_NO_COROUTINES=1",
774777
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
775778
);
776-
OTHER_LDFLAGS = "$(inherited) ";
779+
OTHER_LDFLAGS = (
780+
"$(inherited)",
781+
" ",
782+
);
777783
REACT_NATIVE_PATH = "${PODS_ROOT}/../../../node_modules/react-native";
778784
SDKROOT = iphoneos;
779785
USE_HERMES = true;

0 commit comments

Comments
 (0)