diff options
Diffstat (limited to 'media/js/views/browser.js')
-rw-r--r-- | media/js/views/browser.js | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/media/js/views/browser.js b/media/js/views/browser.js index 858f059..6235a59 100644 --- a/media/js/views/browser.js +++ b/media/js/views/browser.js @@ -44,11 +44,16 @@ $input = $target.is(':checkbox') && $target || $target.siblings('[type="checkbox"]'), id = $input.data('id'), room = this.rooms.get(id); + if (!room) { return; } - (!$input.is(':checked') && this.client.joinRoom(room.id)) || - (this.rooms.get(room.id).get('joined') && this.client.leaveRoom(room.id)); + + if (room.get('joined')) { + this.client.leaveRoom(room.id); + } else { + this.client.joinRoom(room); + } }, add: function(room) { var room = room.toJSON ? room.toJSON() : room, @@ -100,28 +105,60 @@ }); }, create: function(e) { + var that = this; e.preventDefault(); - var $modal = this.$('#lcb-add-room'), - $form = this.$(e.target), + var $form = this.$(e.target), + $modal = this.$('#lcb-add-room'), + $name = this.$('.lcb-room-name'), + $slug = this.$('.lcb-room-slug'), + $description = this.$('.lcb-room-description'), + $password = this.$('.lcb-room-password'), + $confirmPassword = this.$('.lcb-room-confirm-password'), data = { - name: this.$('.lcb-room-name').val().trim(), - slug: this.$('.lcb-room-slug').val().trim(), - description: this.$('.lcb-room-description').val(), + name: $name.val().trim(), + slug: $slug.val().trim(), + description: $description.val(), + password: $password.val(), callback: function success() { $modal.modal('hide'); $form.trigger('reset'); } }; + + $name.parent().removeClass('has-error'); + $slug.parent().removeClass('has-error'); + $confirmPassword.parent().removeClass('has-error'); + // we require name is non-empty if (!data.name) { $name.parent().addClass('has-error'); return; } + // we require slug is non-empty if (!data.slug) { $slug.parent().addClass('has-error'); return; } + + // remind the user, that users may share the password with others + if (data.password) { + if (data.password !== $confirmPassword.val()) { + $confirmPassword.parent().addClass('has-error'); + return; + } + + swal({ + title: 'Password-protected room', + text: 'You\'re creating a room with a shared password.\n' + + 'Anyone who obtains the password may enter the room.', + showCancelButton: true + }, function(){ + that.client.events.trigger('rooms:create', data); + }); + return; + } + this.client.events.trigger('rooms:create', data); }, addUser: function(user, room) { @@ -135,4 +172,4 @@ }); -}(window, $, _);
\ No newline at end of file +}(window, $, _); |