Commit 3d857120 authored by Juliusz Chroboczek's avatar Juliusz Chroboczek

Check for group existence on landing page.

parent a21134d3
...@@ -18,8 +18,10 @@ ...@@ -18,8 +18,10 @@
<form id="groupform"> <form id="groupform">
<label for="group">Group:</label> <label for="group">Group:</label>
<input id="group" type="text" name="group" class="form-control form-control-inline"/> <input id="group" type="text" name="group" class="form-control form-control-inline"/>
<input type="submit" value="Join" class="btn btn-default btn-large"/><br/> <input id='submitbutton' type="submit" value="Join" class="btn btn-default btn-large"/><br/>
</form> </form>
<p id="errormessage"></p>
<div id="public-groups" class="groups"> <div id="public-groups" class="groups">
<h2>Public groups</h2> <h2>Public groups</h2>
......
...@@ -4,6 +4,12 @@ body { ...@@ -4,6 +4,12 @@ body {
flex-direction: column; flex-direction: column;
} }
#errormessage {
color: red;
font-weight: bold;
height: 12px;
}
.groups { .groups {
} }
......
...@@ -20,13 +20,63 @@ ...@@ -20,13 +20,63 @@
'use strict'; 'use strict';
document.getElementById('groupform').onsubmit = function(e) { document.getElementById('groupform').onsubmit = async function(e) {
e.preventDefault(); e.preventDefault();
let group = document.getElementById('group').value.trim(); clearError();
if(group !== '') let groupinput = document.getElementById('group')
location.href = '/group/' + group + '/'; let button = document.getElementById('submitbutton');
let group = groupinput.value.trim();
if(group === '')
return;
let url = '/group/' + group + '/';
try {
groupinput.disabled = true;
button.disabled = true;
try {
let resp = await fetch(url, {
method: 'HEAD',
});
if(!resp.ok) {
if(resp.status === 404)
displayError('No such group');
else
displayError(`The server said: ${resp.status} ${resp.statusText}`);
return;
}
} catch(e) {
displayError(`Coudln't connect: ${e.toString()}`);
return;
}
} finally {
groupinput.disabled = false;
button.disabled = false;
}
location.href = url;
}; };
var clearErrorTimeout = null;
function displayError(message) {
clearError();
let p = document.getElementById('errormessage');
p.textContent = message;
clearErrorTimeout = setTimeout(() => {
let p = document.getElementById('errormessage');
p.textContent = '';
clearErrorTimeout = null;
}, 2500);
}
function clearError() {
if(clearErrorTimeout != null) {
clearTimeout(clearErrorTimeout);
clearErrorTimeout = null;
}
}
async function listPublicGroups() { async function listPublicGroups() {
let div = document.getElementById('public-groups'); let div = document.getElementById('public-groups');
let table = document.getElementById('public-groups-table'); let table = document.getElementById('public-groups-table');
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment