mirror of https://github.com/vector-im/riot-web
				
				
				
			Merge pull request #9452 from Arnei/last-admin-leave-room-warning
Add leave room warning for last adminpull/28217/head
						commit
						03dc48b927
					
				| 
						 | 
				
			
			@ -1198,6 +1198,35 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
 | 
			
		|||
                );
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const client = MatrixClientPeg.get();
 | 
			
		||||
        if (client && roomToLeave) {
 | 
			
		||||
            const plEvent = roomToLeave.currentState.getStateEvents(EventType.RoomPowerLevels, "");
 | 
			
		||||
            const plContent = plEvent ? plEvent.getContent() : {};
 | 
			
		||||
            const userLevels = plContent.users || {};
 | 
			
		||||
            const currentUserLevel = userLevels[client.getUserId()!];
 | 
			
		||||
            const userLevelValues = Object.values(userLevels);
 | 
			
		||||
            if (userLevelValues.every((x) => typeof x === "number")) {
 | 
			
		||||
                const maxUserLevel = Math.max(...(userLevelValues as number[]));
 | 
			
		||||
                // If the user is the only user with highest power level
 | 
			
		||||
                if (
 | 
			
		||||
                    maxUserLevel === currentUserLevel &&
 | 
			
		||||
                    userLevelValues.lastIndexOf(maxUserLevel) == userLevelValues.indexOf(maxUserLevel)
 | 
			
		||||
                ) {
 | 
			
		||||
                    const warning =
 | 
			
		||||
                        maxUserLevel >= 100
 | 
			
		||||
                            ? _t("leave_room_dialog|room_leave_admin_warning")
 | 
			
		||||
                            : _t("leave_room_dialog|room_leave_mod_warning");
 | 
			
		||||
                    warnings.push(
 | 
			
		||||
                        <strong className="warning" key="last_admin_warning">
 | 
			
		||||
                            {" " /* Whitespace, otherwise the sentences get smashed together */}
 | 
			
		||||
                            {warning}
 | 
			
		||||
                        </strong>,
 | 
			
		||||
                    );
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return warnings;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1222,6 +1251,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
 | 
			
		|||
                </span>
 | 
			
		||||
            ),
 | 
			
		||||
            button: _t("action|leave"),
 | 
			
		||||
            danger: warnings.length > 0,
 | 
			
		||||
            onFinished: async (shouldLeave) => {
 | 
			
		||||
                if (shouldLeave) {
 | 
			
		||||
                    await leaveRoomBehaviour(cli, roomId);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1515,6 +1515,8 @@
 | 
			
		|||
        "last_person_warning": "You are the only person here. If you leave, no one will be able to join in the future, including you.",
 | 
			
		||||
        "leave_room_question": "Are you sure you want to leave the room '%(roomName)s'?",
 | 
			
		||||
        "leave_space_question": "Are you sure you want to leave the space '%(spaceName)s'?",
 | 
			
		||||
        "room_leave_admin_warning": "You're the only administrator in this room. If you leave, nobody will be able to change room settings or take other important actions.",
 | 
			
		||||
        "room_leave_mod_warning": "You're the only moderator in this room. If you leave, nobody will be able to change room settings or take other important actions.",
 | 
			
		||||
        "room_rejoin_warning": "This room is not public. You will not be able to rejoin without an invite.",
 | 
			
		||||
        "space_rejoin_warning": "This space is not public. You will not be able to rejoin without an invite."
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue