surface errors to user in popup.js

pull/18/head
Kevin Gibbons 1 year ago
parent fbf1db60bb
commit 16a52bfdc7

@ -210,7 +210,15 @@ function handleMessage(request, sender, sendResponse) {
} }
})() })()
.then(value => sendResponse({ success: true, value })) .then(value => sendResponse({ success: true, value }))
.catch(e => sendResponse({ success: false, value: e.message })); .catch(e => {
console.error(e);
let message = e?.message ?? e;
if (message === 'Failed to fetch') {
// chrome's error message for failed `fetch` is not very user-friendly
message = 'Could not connect to server';
}
sendResponse({ success: false, value: message });
});
return true; return true;
} }

@ -26,6 +26,7 @@
<div class="submit"> <div class="submit">
<button id="save-login">Save</button><span id="status-icon">&#9744;</span> <button id="save-login">Save</button><span id="status-icon">&#9744;</span>
</div> </div>
<div id="error-out"></div>
<hr> <hr>
<p>Options:</p> <p>Options:</p>
<div class="options"> <div class="options">

@ -28,6 +28,16 @@ async function sendMessage(message) {
return value; return value;
} }
let errorOut = document.getElementById('error-out');
function setError(message) {
errorOut.style.display = 'initial';
errorOut.innerText = message;
}
function clearError() {
errorOut.style.display = 'none';
}
// store access details // store access details
document.getElementById('save-login').addEventListener('click', function () { document.getElementById('save-login').addEventListener('click', function () {
let url = document.getElementById('full-url').value; let url = document.getElementById('full-url').value;
@ -60,6 +70,7 @@ document.getElementById('sendCookies').addEventListener('click', function () {
function sendCookie() { function sendCookie() {
console.log('popup send cookie'); console.log('popup send cookie');
clearError();
function handleResponse(message) { function handleResponse(message) {
console.log('handle cookie response: ' + JSON.stringify(message)); console.log('handle cookie response: ' + JSON.stringify(message));
@ -69,6 +80,7 @@ function sendCookie() {
function handleError(error) { function handleError(error) {
console.log(`Error: ${error}`); console.log(`Error: ${error}`);
setError(error);
} }
let checked = document.getElementById('sendCookies').checked; let checked = document.getElementById('sendCookies').checked;
@ -89,16 +101,23 @@ function sendCookie() {
// send ping message to TA backend // send ping message to TA backend
function pingBackend() { function pingBackend() {
clearError();
function handleResponse(message) { function handleResponse(message) {
if (message.response === 'pong') { // TODO move this check into background.js
if (message?.response === 'pong') {
setStatusIcon(true); setStatusIcon(true);
console.log('connection validated'); console.log('connection validated');
} else if (message?.detail) {
handleError(message.detail);
} else {
handleError(`got unknown message ${JSON.stringify(message)}`);
} }
} }
function handleError(error) { function handleError(error) {
console.log(`Verify got error: ${error}`); console.log(`Verify got error: ${error}`);
setStatusIcon(false); setStatusIcon(false);
setError(error);
} }
console.log('ping TA server'); console.log('ping TA server');
@ -113,6 +132,7 @@ function addUrl(access) {
} }
function setCookieState() { function setCookieState() {
clearError();
function handleResponse(message) { function handleResponse(message) {
console.log(message); console.log(message);
document.getElementById('sendCookies').checked = message.cookie_enabled; document.getElementById('sendCookies').checked = message.cookie_enabled;
@ -123,6 +143,7 @@ function setCookieState() {
function handleError(error) { function handleError(error) {
console.log(`Error: ${error}`); console.log(`Error: ${error}`);
setError(error);
} }
console.log('set cookie state'); console.log('set cookie state');

@ -76,4 +76,8 @@ hr {
} }
.icons img { .icons img {
width: 25px; width: 25px;
} }
#error-out {
color: red;
display: none; /* will be made visible when an error occurs */
}

Loading…
Cancel
Save