diff --git a/components/app.js b/components/app.js
index f8854ff..0d39426 100644
--- a/components/app.js
+++ b/components/app.js
@@ -30,6 +30,7 @@ export default class App extends Component {
realname: null,
nick: null,
saslPlain: null,
+ autoconnect: false,
autojoin: [],
},
status: Status.DISCONNECTED,
@@ -44,6 +45,32 @@ export default class App extends Component {
this.handleConnectSubmit = this.handleConnectSubmit.bind(this);
this.handleBufferListClick = this.handleBufferListClick.bind(this);
this.handleComposerSubmit = this.handleComposerSubmit.bind(this);
+
+ if (window.localStorage && localStorage.getItem("autoconnect")) {
+ var connectParams = JSON.parse(localStorage.getItem("autoconnect"));
+ this.state.connectParams = {
+ ...this.state.connectParams,
+ ...connectParams,
+ autoconnect: true,
+ };
+ } else {
+ var params = parseQueryString();
+
+ if (params.server) {
+ this.state.connectParams.serverURL = params.server;
+ } else {
+ var host = window.location.host || "localhost:8080";
+ var proto = "wss:";
+ if (window.location.protocol != "https:") {
+ proto = "ws:";
+ }
+ this.state.connectParams.serverURL = proto + "//" + host + "/socket";
+ }
+
+ if (params.channels) {
+ this.state.connectParams.autojoin = params.channels.split(",");
+ }
+ }
}
setBufferState(name, updater, callback) {
@@ -262,8 +289,8 @@ export default class App extends Component {
}
handleConnectSubmit(connectParams) {
- if (localStorage) {
- if (connectParams.rememberMe) {
+ if (window.localStorage) {
+ if (connectParams.autoconnect) {
localStorage.setItem("autoconnect", JSON.stringify(connectParams));
} else {
localStorage.removeItem("autoconnect");
@@ -284,7 +311,7 @@ export default class App extends Component {
var args = parts.slice(1);
switch (cmd) {
case "quit":
- if (localStorage) {
+ if (window.localStorage) {
localStorage.removeItem("autoconnect");
}
this.client.close();
@@ -364,36 +391,8 @@ export default class App extends Component {
}
componentDidMount() {
- if (localStorage && localStorage.getItem("autoconnect")) {
- var connectParams = JSON.parse(localStorage.getItem("autoconnect"));
- this.connect(connectParams);
- } else {
- var params = parseQueryString();
-
- var serverURL = params.server;
- if (!serverURL) {
- var host = window.location.host || "localhost:8080";
- var proto = "wss:";
- if (window.location.protocol != "https:") {
- proto = "ws:";
- }
- serverURL = proto + "//" + host + "/socket";
- }
-
- var autojoin = [];
- if (params.channels) {
- autojoin = params.channels.split(",");
- }
-
- this.setState((state) => {
- return {
- connectParams: {
- ...state.connectParams,
- serverURL,
- autojoin,
- },
- };
- });
+ if (this.state.connectParams.autoconnect) {
+ this.connect(this.state.connectParams);
}
}
diff --git a/components/connect.js b/components/connect.js
index f8971bf..97589e0 100644
--- a/components/connect.js
+++ b/components/connect.js
@@ -23,7 +23,7 @@ export default class Connect extends Component {
...this.state,
serverURL: props.params.serverURL || "",
nick: props.params.nick || "",
- rememberMe: props.params.rememberMe || false,
+ rememberMe: props.params.autoconnect || false,
username: props.params.username || "",
realname: props.params.realname || "",
autojoin: (props.params.autojoin || []).join(","),
@@ -48,7 +48,7 @@ export default class Connect extends Component {
serverURL: this.state.serverURL,
serverPass: this.state.serverPass,
nick: this.state.nick,
- rememberMe: this.state.rememberMe,
+ autoconnect: this.state.rememberMe,
username: this.state.username || this.state.nick,
realname: this.state.realname || this.state.nick,
saslPlain: null,
@@ -74,6 +74,17 @@ export default class Connect extends Component {
}
render() {
+ var rememberMe = null;
+ if (window.localStorage) {
+ rememberMe = html`
+
+
+ `;
+ }
+
return html`