Add "auth" parameter to tune connect form

This commit is contained in:
Drew DeVault 2021-06-10 11:40:59 -04:00 committed by Simon Ser
parent 6039e13411
commit eef2093c88
3 changed files with 31 additions and 6 deletions

View file

@ -85,6 +85,11 @@ gamja default settings can be set using a `config.json` file at the root:
"url": "wss://irc.example.org",
// Channel(s) to auto-join (string or array of strings).
"autojoin": "#gamja",
// Controls how the password UI is presented to the user. Set to
// "mandatory" to require a password, "optional" to accept one but not
// require it, and "disabled" to never ask for a password. Defaults to
// "optional".
"auth": "optional",
// Interval in seconds to send PING commands (number). Set to 0 to
// disable. Enabling PINGs can have an impact on client power usage and
// should only be enabled if necessary.

View file

@ -213,7 +213,12 @@ export default class App extends Component {
}
this.setState((state) => {
return { connectParams: { ...state.connectParams, ...connectParams } };
return {
connectParams: {
...state.connectParams,
...connectParams,
},
};
});
if (connectParams.autoconnect) {
@ -1203,6 +1208,7 @@ export default class App extends Component {
<${ConnectForm}
error=${this.state.error}
params=${this.state.connectParams}
auth=${this.config.server ? this.config.server.auth : null}
connecting=${connecting}
onSubmit=${this.handleConnectSubmit}
key=${this.state.connectParams}

View file

@ -98,6 +98,24 @@ export default class ConnectForm extends Component {
`;
}
var auth = null;
if (this.props.auth !== "disabled") {
auth = html`
<label>
Password:<br/>
<input
type="password"
name="password"
value=${this.state.password}
disabled=${disabled}
required=${this.props.auth === "mandatory"}
placeholder=${this.props.auth !== "mandatory" ? "(optional)" : ""}
/>
</label>
<br/><br/>
`;
}
return html`
<form onChange=${this.handleChange} onSubmit=${this.handleSubmit}>
<h2>Connect to IRC</h2>
@ -108,11 +126,7 @@ export default class ConnectForm extends Component {
</label>
<br/><br/>
<label>
Password:<br/>
<input type="password" name="password" value=${this.state.password} disabled=${disabled}/>
</label>
<br/><br/>
${auth}
<label>
<input type="checkbox" name="rememberMe" checked=${this.state.rememberMe} disabled=${disabled}/>