Add GUI for handling rejected connection attempts
This commit is contained in:
parent
60413ecbea
commit
5eefeeb721
|
@ -65,6 +65,64 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<!-- /ko -->
|
<!-- /ko -->
|
||||||
|
<!-- ko with: connectErrorDialog -->
|
||||||
|
<div class="connect-dialog error-dialog dialog" data-bind="visible: visible()">
|
||||||
|
<div class="dialog-header">
|
||||||
|
Failed to connect
|
||||||
|
</div>
|
||||||
|
<form data-bind="submit: connect">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td colspan=2>
|
||||||
|
<!-- ko if: type() == 0 || type() == 8 -->
|
||||||
|
The connection has been refused.
|
||||||
|
<!-- /ko -->
|
||||||
|
<!-- ko if: type() == 1 -->
|
||||||
|
The server uses an incompatible version.
|
||||||
|
<!-- /ko -->
|
||||||
|
<!-- ko if: type() == 2 -->
|
||||||
|
Your user name was rejected. Maybe try a different one?
|
||||||
|
<!-- /ko -->
|
||||||
|
<!-- ko if: type() == 3 -->
|
||||||
|
The given password is incorrect.
|
||||||
|
The user name you have chosen requires a special one.
|
||||||
|
<!-- /ko -->
|
||||||
|
<!-- ko if: type() == 4 -->
|
||||||
|
The given password is incorrect.
|
||||||
|
<!-- /ko -->
|
||||||
|
<!-- ko if: type() == 5 -->
|
||||||
|
The user name you have chosen is already in use.
|
||||||
|
<!-- /ko -->
|
||||||
|
<!-- ko if: type() == 6 -->
|
||||||
|
The server is full.
|
||||||
|
<!-- /ko -->
|
||||||
|
<!-- ko if: type() == 7 -->
|
||||||
|
The server requires you to provide a client certificate
|
||||||
|
which is not supported by this web application.
|
||||||
|
<!-- /ko -->
|
||||||
|
<br>
|
||||||
|
The server reports:
|
||||||
|
<br>
|
||||||
|
"<span class="connect-error-reason" data-bind="text: reason"></span>"
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr data-bind="visible: type() == 2 || type() == 3 || type() == 5">
|
||||||
|
<td>Username</td>
|
||||||
|
<td><input id="username" type="text" data-bind="value: username"></td>
|
||||||
|
</tr>
|
||||||
|
<tr data-bind="visible: type() == 3 || type() == 4">
|
||||||
|
<td>Password</td>
|
||||||
|
<td><input id="password" type="password" data-bind="value: password"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<input class="dialog-close" type="button" value="Cancel"
|
||||||
|
data-bind="click: hide, visible: !joinOnly()">
|
||||||
|
<input class="dialog-submit" type="submit" value="Retry">
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- /ko -->
|
||||||
<!-- ko with: settingsDialog -->
|
<!-- ko with: settingsDialog -->
|
||||||
<div class="settings-dialog dialog" data-bind="visible: $data">
|
<div class="settings-dialog dialog" data-bind="visible: $data">
|
||||||
<div class="dialog-header">
|
<div class="dialog-header">
|
||||||
|
|
23
app/index.js
23
app/index.js
|
@ -38,6 +38,22 @@ function ConnectDialog () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ConnectErrorDialog (connectDialog) {
|
||||||
|
var self = this
|
||||||
|
self.type = ko.observable(0)
|
||||||
|
self.reason = ko.observable('')
|
||||||
|
self.username = connectDialog.username
|
||||||
|
self.password = connectDialog.password
|
||||||
|
self.joinOnly = connectDialog.joinOnly
|
||||||
|
self.visible = ko.observable(false)
|
||||||
|
self.show = self.visible.bind(self.visible, true)
|
||||||
|
self.hide = self.visible.bind(self.visible, false)
|
||||||
|
self.connect = () => {
|
||||||
|
self.hide()
|
||||||
|
connectDialog.connect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function ConnectionInfo () {
|
function ConnectionInfo () {
|
||||||
var self = this
|
var self = this
|
||||||
self.visible = ko.observable(false)
|
self.visible = ko.observable(false)
|
||||||
|
@ -131,6 +147,7 @@ class GlobalBindings {
|
||||||
this.settings = new Settings()
|
this.settings = new Settings()
|
||||||
this.client = null
|
this.client = null
|
||||||
this.connectDialog = new ConnectDialog()
|
this.connectDialog = new ConnectDialog()
|
||||||
|
this.connectErrorDialog = new ConnectErrorDialog(this.connectDialog)
|
||||||
this.connectionInfo = new ConnectionInfo()
|
this.connectionInfo = new ConnectionInfo()
|
||||||
this.commentDialog = new CommentDialog()
|
this.commentDialog = new CommentDialog()
|
||||||
this.settingsDialog = ko.observable()
|
this.settingsDialog = ko.observable()
|
||||||
|
@ -246,8 +263,10 @@ class GlobalBindings {
|
||||||
this.client.setSelfMute(true)
|
this.client.setSelfMute(true)
|
||||||
}
|
}
|
||||||
}, err => {
|
}, err => {
|
||||||
if (err.type == 4) {
|
if (err.$type && err.$type.name === 'Reject') {
|
||||||
log('Connection error: invalid server password')
|
this.connectErrorDialog.type(err.type)
|
||||||
|
this.connectErrorDialog.reason(err.reason)
|
||||||
|
this.connectErrorDialog.show()
|
||||||
} else {
|
} else {
|
||||||
log('Connection error:', err)
|
log('Connection error:', err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -303,3 +303,7 @@ form {
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
width: calc(100% - 8px);
|
width: calc(100% - 8px);
|
||||||
}
|
}
|
||||||
|
.connect-dialog.error-dialog {
|
||||||
|
width: 400px;
|
||||||
|
left: calc(50% - 200px);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue