|
|
|
|
@ -1,11 +1,9 @@ |
|
|
|
|
import type { IRoom, IUser } from '@rocket.chat/core-typings'; |
|
|
|
|
import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; |
|
|
|
|
import { escapeHTML } from '@rocket.chat/string-helpers'; |
|
|
|
|
import { useTranslation, usePermission, useUserRoom, useUserSubscription } from '@rocket.chat/ui-contexts'; |
|
|
|
|
import { useMemo } from 'react'; |
|
|
|
|
|
|
|
|
|
import { useEndpointAction } from '../../../../../hooks/useEndpointAction'; |
|
|
|
|
import { roomCoordinator } from '../../../../../lib/rooms/roomCoordinator'; |
|
|
|
|
import type { Action } from '../../../../hooks/useActionSpread'; |
|
|
|
|
import { getRoomDirectives } from '../../../lib/getRoomDirectives'; |
|
|
|
|
import { useUserHasRoomRole } from '../../useUserHasRoomRole'; |
|
|
|
|
@ -25,14 +23,11 @@ export const useChangeLeaderAction = (user: Pick<IUser, '_id' | 'username'>, rid |
|
|
|
|
const endpointPrefix = room.t === 'p' ? '/v1/groups' : '/v1/channels'; |
|
|
|
|
const { roomCanSetLeader } = getRoomDirectives({ room, showingUserId: uid, userSubscription }); |
|
|
|
|
const isLeader = useUserHasRoomRole(uid, rid, 'leader'); |
|
|
|
|
const roomName = room?.t && escapeHTML(roomCoordinator.getRoomName(room.t, room)); |
|
|
|
|
|
|
|
|
|
const changeLeaderEndpoint = isLeader ? 'removeLeader' : 'addLeader'; |
|
|
|
|
const changeLeaderMessage = isLeader |
|
|
|
|
? 'User__username__removed_from__room_name__leaders' |
|
|
|
|
: 'User__username__is_now_a_leader_of__room_name_'; |
|
|
|
|
const changeLeaderMessage = isLeader ? 'removed__username__as__role_' : 'set__username__as__role_'; |
|
|
|
|
const changeLeader = useEndpointAction('POST', `${endpointPrefix}.${changeLeaderEndpoint}`, { |
|
|
|
|
successMessage: t(changeLeaderMessage, { username: user.username, room_name: roomName }), |
|
|
|
|
successMessage: t(changeLeaderMessage, { username: user.username, role: 'leader' }), |
|
|
|
|
}); |
|
|
|
|
const changeLeaderAction = useMutableCallback(() => changeLeader({ roomId: rid, userId: uid })); |
|
|
|
|
const changeLeaderOption = useMemo( |
|
|
|
|
|