@@ -29,7 +29,7 @@ export default function MembersModal({ onCancel }: Props): ReactElement {
2929
3030 const { channel } = useChannelSettingsContext ( ) ;
3131 const state = useSendbirdStateContext ( ) ;
32- const currentUser = state ?. config ?. userId ;
32+ const currentUserId = state ?. config ?. userId ;
3333 const { stringSet } = useContext ( LocalizationContext ) ;
3434
3535 useEffect ( ( ) => {
@@ -67,123 +67,125 @@ export default function MembersModal({ onCancel }: Props): ReactElement {
6767 } ) }
6868 >
6969 {
70- members . map ( ( member : Member ) => (
71- < UserListItem
72- user = { member }
73- key = { member . userId }
74- currentUser = { currentUser }
75- action = { ( { parentRef, actionRef } ) => (
76- < >
77- { channel ?. myRole === 'operator' && (
78- < ContextMenu
79- menuTrigger = { ( toggleDropdown ) => (
80- < IconButton
81- className = "sendbird-user-message__more__menu"
82- width = "32px"
83- height = "32px"
84- onClick = { ( ) => {
85- toggleDropdown ( ) ;
86- } }
87- >
88- < Icon
89- width = "24px"
90- height = "24px"
91- type = { IconTypes . MORE }
92- fillColor = { IconColors . CONTENT_INVERSE }
93- />
94- </ IconButton >
95- ) }
96- menuItems = { ( closeDropdown ) => (
97- < MenuItems
98- parentContainRef = { parentRef }
99- parentRef = { actionRef } // for catching location(x, y) of MenuItems
100- closeDropdown = { closeDropdown }
101- openLeft
102- >
103- < OperatorMenuItem
104- channel = { channel }
105- user = { member }
106- disable = { currentUser === member . userId }
107- onChange = { ( _ , member , isOperator ) => {
108- setMembers ( members . map ( m => {
109- if ( m . userId === member . userId ) {
110- return {
111- ...member ,
112- role : isOperator ? Role . OPERATOR : Role . NONE ,
113- } ;
114- }
115- return m ;
116- } ) ) ;
117- closeDropdown ( ) ;
118- } }
119- onError = { ( ) => {
120- // FIXME: handle error later
121- closeDropdown ( ) ;
70+ members . map ( ( member : Member ) => {
71+ return (
72+ < UserListItem
73+ user = { member }
74+ key = { member . userId }
75+ currentUser = { currentUserId }
76+ action = { ( { parentRef, actionRef } ) => (
77+ < >
78+ { channel ?. myRole === 'operator' && currentUserId !== member . userId && (
79+ < ContextMenu
80+ menuTrigger = { ( toggleDropdown ) => (
81+ < IconButton
82+ className = "sendbird-user-message__more__menu"
83+ width = "32px"
84+ height = "32px"
85+ onClick = { ( ) => {
86+ toggleDropdown ( ) ;
12287 } }
123- dataSbId = { `channel_setting_member_context_menu_${ (
124- member . role !== 'operator'
125- ) ? 'register_as_operator' : 'unregister_operator' } `}
12688 >
89+ < Icon
90+ width = "24px"
91+ height = "24px"
92+ type = { IconTypes . MORE }
93+ fillColor = { IconColors . CONTENT_INVERSE }
94+ />
95+ </ IconButton >
96+ ) }
97+ menuItems = { ( closeDropdown ) => (
98+ < MenuItems
99+ parentContainRef = { parentRef }
100+ parentRef = { actionRef } // for catching location(x, y) of MenuItems
101+ closeDropdown = { closeDropdown }
102+ openLeft
103+ >
104+ < OperatorMenuItem
105+ channel = { channel }
106+ user = { member }
107+ disable = { currentUserId === member . userId }
108+ onChange = { ( _ , member , isOperator ) => {
109+ setMembers ( members . map ( m => {
110+ if ( m . userId === member . userId ) {
111+ return {
112+ ...member ,
113+ role : isOperator ? Role . OPERATOR : Role . NONE ,
114+ } ;
115+ }
116+ return m ;
117+ } ) ) ;
118+ closeDropdown ( ) ;
119+ } }
120+ onError = { ( ) => {
121+ // FIXME: handle error later
122+ closeDropdown ( ) ;
123+ } }
124+ dataSbId = { `channel_setting_member_context_menu_${ (
125+ member . role !== 'operator'
126+ ) ? 'register_as_operator' : 'unregister_operator' } `}
127+ >
128+ {
129+ member . role !== 'operator'
130+ ? stringSet . CHANNEL_SETTING__MODERATION__REGISTER_AS_OPERATOR
131+ : stringSet . CHANNEL_SETTING__MODERATION__UNREGISTER_OPERATOR
132+ }
133+ </ OperatorMenuItem >
127134 {
128- member . role !== 'operator'
129- ? stringSet . CHANNEL_SETTING__MODERATION__REGISTER_AS_OPERATOR
130- : stringSet . CHANNEL_SETTING__MODERATION__UNREGISTER_OPERATOR
135+ // No muted members in broadcast channel
136+ ! channel ?. isBroadcast && (
137+ < MuteMenuItem
138+ channel = { channel }
139+ user = { member }
140+ onChange = { ( _ , member , isMuted ) => {
141+ setMembers ( members . map ( m => {
142+ if ( m . userId === member . userId ) {
143+ return {
144+ ...member ,
145+ isMuted,
146+ } ;
147+ }
148+ return m ;
149+ } ) ) ;
150+ closeDropdown ( ) ;
151+ } }
152+ onError = { ( ) => {
153+ // FIXME: handle error later
154+ closeDropdown ( ) ;
155+ } }
156+ dataSbId = { `channel_setting_member_context_menu_${ (
157+ member . isMuted ) ? 'unmute' : 'mute' } `
158+ }
159+ >
160+ {
161+ member . isMuted
162+ ? stringSet . CHANNEL_SETTING__MODERATION__UNMUTE
163+ : stringSet . CHANNEL_SETTING__MODERATION__MUTE
164+ }
165+ </ MuteMenuItem >
166+ )
131167 }
132- </ OperatorMenuItem >
133- {
134- // No muted members in broadcast channel
135- ! channel ?. isBroadcast && (
136- < MuteMenuItem
137- channel = { channel }
138- user = { member }
139- onChange = { ( _ , member , isMuted ) => {
140- setMembers ( members . map ( m => {
141- if ( m . userId === member . userId ) {
142- return {
143- ...member ,
144- isMuted,
145- } ;
146- }
147- return m ;
168+ < MenuItem
169+ onClick = { ( ) => {
170+ channel ?. banUser ( member , - 1 , '' ) . then ( ( ) => {
171+ setMembers ( members . filter ( ( { userId } ) => {
172+ return userId !== member . userId ;
148173 } ) ) ;
149- closeDropdown ( ) ;
150- } }
151- onError = { ( ) => {
152- // FIXME: handle error later
153- closeDropdown ( ) ;
154- } }
155- dataSbId = { `channel_setting_member_context_menu_${ (
156- member . isMuted ) ? 'unmute' : 'mute' } `
157- }
158- >
159- {
160- member . isMuted
161- ? stringSet . CHANNEL_SETTING__MODERATION__UNMUTE
162- : stringSet . CHANNEL_SETTING__MODERATION__MUTE
163- }
164- </ MuteMenuItem >
165- )
166- }
167- < MenuItem
168- onClick = { ( ) => {
169- channel ?. banUser ( member , - 1 , '' ) . then ( ( ) => {
170- setMembers ( members . filter ( ( { userId } ) => {
171- return userId !== member . userId ;
172- } ) ) ;
173- } ) ;
174- } }
175- dataSbId = "channel_setting_member_context_menu_ban"
176- >
177- { stringSet . CHANNEL_SETTING__MODERATION__BAN }
178- </ MenuItem >
179- </ MenuItems >
180- ) }
181- />
182- ) }
183- </ >
184- ) }
185- />
186- ) )
174+ } ) ;
175+ } }
176+ dataSbId = "channel_setting_member_context_menu_ban"
177+ >
178+ { stringSet . CHANNEL_SETTING__MODERATION__BAN }
179+ </ MenuItem >
180+ </ MenuItems >
181+ ) }
182+ />
183+ ) }
184+ </ >
185+ ) }
186+ />
187+ ) ;
188+ } )
187189 }
188190 </ div >
189191 </ Modal >
0 commit comments