text: import { Meteor } from 'meteor/meteor';
  import s from 'underscore.string';
  
  RocketChat.getValidRoomName = function getValidRoomName(displayName, rid = '') {
  	let slugifiedName = displayName;
  
  	if (RocketChat.settings.get('UI_Allow_room_names_with_special_chars')) {
  		const room = RocketChat.models.Rooms.findOneByDisplayName(displayName);
  		if (room && room._id !== rid) {
  			if (room.archived) {
  				throw new Meteor.Error('error-archived-duplicate-name', `There's an archived channel with name ${ displayName }`, { function: 'RocketChat.getValidRoomName', channel_name: displayName });
  			} else {
  				throw new Meteor.Error('error-duplicate-channel-name', `A channel with name '${ displayName }' exists`, { function: 'RocketChat.getValidRoomName', channel_name: displayName });
  			}
  		}
  		slugifiedName = s.slugify(displayName);
  	}
  
  	let nameValidation;
  	try {
  		nameValidation = new RegExp(`^${ RocketChat.settings.get('UTF8_Names_Validation') }$`);
  	} catch (error) {
  		nameValidation = new RegExp('^[0-9a-zA-Z-_.]+$');
  	}
  	if (!nameValidation.test(slugifiedName)) {
  		throw new Meteor.Error('error-invalid-room-name', `${ slugifiedName } is not a valid room name.`, {
  			function: 'RocketChat.getValidRoomName',
  			channel_name: slugifiedName,
  		});
  	}
  
  	const room = RocketChat.models.Rooms.findOneByName(slugifiedName);
  	if (room && room._id !== rid) {
  		if (RocketChat.settings.get('UI_Allow_room_names_with_special_chars')) {
  			let tmpName = slugifiedName;
  			let next = 0;
  			while (RocketChat.models.Rooms.findOneByNameAndNotId(tmpName, rid)) {
  				tmpName = `${ slugifiedName }-${ ++next }`;
  			}
  			slugifiedName = tmpName;
  		} else if (room.archived) {
  			throw new Meteor.Error('error-archived-duplicate-name', `There's an archived channel with name ${ slugifiedName }`, { function: 'RocketChat.getValidRoomName', channel_name: slugifiedName });
  		} else {
  			throw new Meteor.Error('error-duplicate-channel-name', `A channel with name '${ slugifiedName }' exists`, { function: 'RocketChat.getValidRoomName', channel_name: slugifiedName });
  		}
  	}
  
  	return slugifiedName;
  };
  