mirror of
https://github.com/jech/galene.git
synced 2024-11-22 00:25:58 +01:00
Check for group existence on landing page.
This commit is contained in:
parent
a21134d310
commit
3d857120db
3 changed files with 63 additions and 5 deletions
|
@ -18,8 +18,10 @@
|
|||
<form id="groupform">
|
||||
<label for="group">Group:</label>
|
||||
<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>
|
||||
|
||||
<p id="errormessage"></p>
|
||||
|
||||
<div id="public-groups" class="groups">
|
||||
<h2>Public groups</h2>
|
||||
|
|
|
@ -4,6 +4,12 @@ body {
|
|||
flex-direction: column;
|
||||
}
|
||||
|
||||
#errormessage {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
.groups {
|
||||
}
|
||||
|
||||
|
|
|
@ -20,13 +20,63 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
document.getElementById('groupform').onsubmit = function(e) {
|
||||
document.getElementById('groupform').onsubmit = async function(e) {
|
||||
e.preventDefault();
|
||||
let group = document.getElementById('group').value.trim();
|
||||
if(group !== '')
|
||||
location.href = '/group/' + group + '/';
|
||||
clearError();
|
||||
let groupinput = document.getElementById('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() {
|
||||
let div = document.getElementById('public-groups');
|
||||
let table = document.getElementById('public-groups-table');
|
||||
|
|
Loading…
Reference in a new issue