diff --git a/app/index.html b/app/index.html index c46f71f..ae47f65 100644 --- a/app/index.html +++ b/app/index.html @@ -40,10 +40,6 @@ Port - - Token - - Username @@ -52,6 +48,23 @@ Password + + Tokens + + + + + + + + + + + + + + + Channel diff --git a/app/index.js b/app/index.js index 754e661..15737e9 100644 --- a/app/index.js +++ b/app/index.js @@ -52,7 +52,9 @@ function ConnectDialog () { var self = this self.address = ko.observable('') self.port = ko.observable('') - self.token = ko.observable('') + self.tokenToAdd = ko.observable('') + self.selectedTokens = ko.observableArray([]) + self.tokens = ko.observableArray([]) self.username = ko.observable('') self.password = ko.observable('') self.channelName = ko.observable('') @@ -62,7 +64,19 @@ function ConnectDialog () { self.hide = self.visible.bind(self.visible, false) self.connect = function () { self.hide() - ui.connect(self.username(), self.address(), self.port(), self.token(), self.password(), self.channelName()) + ui.connect(self.username(), self.address(), self.port(), self.tokens(), self.password(), self.channelName()) + } + + self.addToken = function() { + if ((self.tokenToAdd() != "") && (self.tokens.indexOf(self.tokenToAdd()) < 0)) { + self.tokens.push(self.tokenToAdd()) + } + self.tokenToAdd("") + } + + self.removeSelectedTokens = function() { + this.tokens.removeAll(this.selectedTokens()) + this.selectedTokens([]) } } @@ -332,7 +346,7 @@ class GlobalBindings { return '[' + new Date().toLocaleTimeString('en-US') + ']' } - this.connect = (username, host, port, token, password, channelName = "") => { + this.connect = (username, host, port, tokens = [], password, channelName = "") => { this.resetClient() this.remoteHost(host) @@ -347,7 +361,8 @@ class GlobalBindings { // TODO: token this.connector.connect(`wss://${host}:${port}`, { username: username, - password: password + password: password, + tokens: tokens }).done(client => { log('Connected!') @@ -361,7 +376,10 @@ class GlobalBindings { // Make sure we stay open if we're running as Matrix widget window.matrixWidget.setAlwaysOnScreen(true) - // Register all channels, recursively + // Register all channels, recursively + if(channelName.indexOf("/") != 0) { + channelName = "/"+channelName; + } const registerChannel = (channel, channelPath) => { this._newChannel(channel) if(channelPath === channelName) { @@ -895,7 +913,11 @@ window.onload = function () { useJoinDialog = false } if (queryParams.token) { - ui.connectDialog.token(queryParams.token) + var tokens = queryParams.token + if (!Array.isArray(tokens)) { + tokens = [tokens] + } + ui.connectDialog.tokens(tokens) } if (queryParams.username) { ui.connectDialog.username(queryParams.username) diff --git a/themes/MetroMumbleLight/main.scss b/themes/MetroMumbleLight/main.scss index 0f5e0c1..411f944 100644 --- a/themes/MetroMumbleLight/main.scss +++ b/themes/MetroMumbleLight/main.scss @@ -444,7 +444,7 @@ form { top: calc(50% - 10px); left: calc(50% - 100px); } -.connect-dialog input[type=text] { +.connect-dialog input[type=text], select { font-size: 15px; border: 1px $dialog-input-border-color solid; border-radius: 3px;