Skip to content
Snippets Groups Projects
Commit 1ecd21cb authored by Marcelo Schmidt's avatar Marcelo Schmidt
Browse files

Restrict changing channel name

parent 4830887c
No related merge requests found
......@@ -8,6 +8,9 @@ Template.createChannelFlex.helpers
error: ->
return Template.instance().error.get()
roomName: ->
return Template.instance().roomName.get()
autocompleteSettings: ->
return {
limit: 10
......@@ -60,10 +63,17 @@ Template.createChannelFlex.events
'click .save-channel': (e, instance) ->
err = SideNav.validate()
instance.roomName.set instance.find('#channel-name').value
console.log err
if not err
Meteor.call 'createChannel', instance.find('#channel-name').value, instance.selectedUsers.get(), (err, result) ->
if err
return toastr.error err.reason
if err
console.log err
if err.error is 'name-invalid'
instance.error.set({ invalid: true })
return
else
return toastr.error err.reason
SideNav.closeFlex()
......@@ -71,16 +81,18 @@ Template.createChannelFlex.events
Router.go 'room', { _id: result.rid }
else
Template.instance().error.set(err)
instance.error.set({ fields: err })
Template.createChannelFlex.onCreated ->
instance = this
instance.selectedUsers = new ReactiveVar []
instance.selectedUserNames = {}
instance.error = new ReactiveVar []
instance.roomName = new ReactiveVar ''
instance.clearForm = ->
instance.error.set([])
instance.roomName.set('')
instance.selectedUsers.set([])
instance.find('#channel-name').value = ''
instance.find('#channel-members').value = ''
......@@ -17,14 +17,20 @@
{{/each}}
</ul>
</div>
{{#if error}}
{{#if error.fields}}
<div class="input-error">
<strong>Ops!</strong>
{{#each error}}
<p>The field {{error}} is required.</p>
{{#each error.fields}}
<p>The field {{.}} is required.</p>
{{/each}}
</div>
{{/if}}
{{#if error.invalid}}
<div class="input-error">
<strong>Ops!</strong>
{{{_ "chatRooms.Invalid_room_name" roomName}}}
</div>
{{/if}}
<div class="input-submit">
<button class="button clean primary save-channel">{{_ "chatRooms.Save" }}</button>
<button class="button clean cancel-channel">{{_ "chatRooms.Cancel" }}</button>
......
......@@ -37,7 +37,8 @@
"No_favorites_yet": "You haven't added any favorites yet.",
"Create_new_channel": "Create a new channel",
"Channels_list": "List of public channels",
"More_channels": "More channels"
"More_channels": "More channels",
"Invalid_room_name": "<strong>%s</strong> is not a valid room name,<br/> use only letters, numbers and dashes"
},
"chatWindowDashboard": {
"Add_users": "Add users",
......
......@@ -34,7 +34,8 @@
"No_channels_yet": "Você não faz parte de nenhum canal ainda.",
"No_direct_messages_yet": "Você não iniciou nenhuma conversa ainda.",
"No_groups_yet": "Nenhum grupo privado ainda.",
"No_favorites_yet": "Nenhum favorito ainda."
"No_favorites_yet": "Nenhum favorito ainda.",
"Invalid_room_name": "<strong>%s</strong> não é um nome válido,<br/> use apenas letras, números e traços"
},
"chatWindowDashboard": {
"Add_users": "Adicionar usuários",
......
Meteor.methods
createChannel: (name, members) ->
if not /^[0-9a-z-_]+$/i.test name
throw new Meteor.Error 'name-invalid'
fromId = Meteor.userId()
# console.log '[methods] createChannel -> '.green, 'fromId:', fromId, 'members:', members
......@@ -7,7 +10,7 @@ Meteor.methods
members.push Meteor.userId()
name = s.slugify name
# name = s.slugify name
# create new room
roomId = ChatRoom.insert
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment