freshrss-kagi-summarizer/static/script.js

68 lines
1.8 KiB
JavaScript
Raw Normal View History

2023-09-25 14:03:51 -05:00
if (document.readyState && document.readyState !== 'loading') {
2023-09-25 14:44:28 -05:00
configureSummarizeButtons();
2023-09-25 14:03:51 -05:00
} else {
2023-09-25 14:44:28 -05:00
document.addEventListener('DOMContentLoaded', configureSummarizeButtons, false);
2023-09-25 14:03:51 -05:00
}
2023-09-25 14:44:28 -05:00
function configureSummarizeButtons() {
2023-09-25 15:03:36 -05:00
document.getElementById('global').addEventListener('click', function(e) {
for (var target = e.target; target && target != this; target = target.parentNode) {
if (target.matches('.kagi-summary a.btn')) {
e.preventDefault();
e.stopPropagation();
2023-09-25 15:28:13 -05:00
if (target.href) {
2023-09-25 16:07:55 -05:00
summarizeButtonClick(target);
2023-09-25 15:07:33 -05:00
}
2023-09-25 15:03:36 -05:00
break;
}
}
}, false);
2023-09-25 13:30:27 -05:00
}
2023-09-25 15:07:33 -05:00
2023-09-25 16:06:56 -05:00
function summarizeButtonClick(button) {
var url = button.href;
var loadingMsg = button.dataset.loading;
var errorMsg = button.dataset.error;
2023-09-25 15:57:46 -05:00
var container = button.parentNode;
2023-09-25 16:06:56 -05:00
container.classList.add('alert');
container.classList.add('alert-warning');
container.innerHTML = loadingMsg;
2023-09-25 15:57:46 -05:00
var request = new XMLHttpRequest();
request.open('POST', url, true);
request.responseType = 'json';
request.onload = function(e) {
if (this.status != 200) {
2023-09-25 16:06:56 -05:00
return request.onerror(e);
}
var response = xmlHttpRequestJson(this);
if (!response) {
return request.onerror(e);
2023-09-25 15:57:46 -05:00
}
2023-09-25 16:06:56 -05:00
if (response.status !== 200) {
return request.onerror(e);
}
container.classList.remove('alert-warning');
container.classList.add('alert-success');
container.innerHTML = 'placeholder';
2023-09-25 15:57:46 -05:00
}
request.onerror = function(e) {
badAjax(this.status == 403);
2023-09-25 16:06:56 -05:00
container.classList.remove('alert-warning');
2023-09-25 15:57:46 -05:00
container.classList.add('alert-error');
2023-09-25 16:11:41 -05:00
container.innerHTML = errorMsg;
2023-09-25 15:57:46 -05:00
}
2023-09-25 16:10:23 -05:00
request.setRequestHeader('Content-Type', 'application/json');
request.send(JSON.stringify({
ajax: true,
_csrf: context.csrf
}));
2023-09-25 15:07:33 -05:00
}