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`

Connect to IRC

@@ -90,11 +101,7 @@ export default class Connect extends Component {

- -

+ ${rememberMe}
Advanced options