61 lines
1.6 KiB
JavaScript
61 lines
1.6 KiB
JavaScript
document.addEventListener('DOMContentLoaded', () => {
|
|
if ('serviceWorker' in navigator) {
|
|
const channel = new BroadcastChannel('sw-messages');
|
|
channel.addEventListener('message', (event) => handle_message(event.data));
|
|
navigator.serviceWorker.register('sw.js');
|
|
} else {
|
|
fetch_data(1);
|
|
}
|
|
});
|
|
|
|
async function previous() {
|
|
let id = parseInt(document.getElementById('api_id').innerHTML, 10);
|
|
id--;
|
|
if (id <= 0) {
|
|
id = 0;
|
|
}
|
|
fetch_data(id);
|
|
}
|
|
|
|
async function next() {
|
|
let id = parseInt(document.getElementById('api_id').innerHTML, 10);
|
|
id++;
|
|
fetch_data(id);
|
|
}
|
|
|
|
async function fetch_data(id) {
|
|
document.getElementById('api_id').innerHTML = id;
|
|
fetch(`https://swapi.dev/api/people/${id}`).then((response) => {
|
|
if (response.ok) {
|
|
response.json().then((data) => {
|
|
document.getElementById('result').innerHTML = JSON.stringify(data, null, 2);
|
|
document.getElementById('api_id').focus();
|
|
});
|
|
} else {
|
|
document.getElementById('result').innerHTML = "You're currently offline";
|
|
document.getElementById('api_id').focus();
|
|
}
|
|
});
|
|
}
|
|
|
|
function handle_message(message) {
|
|
if (message.ready === true) {
|
|
setTimeout(() => fetch_data(1), 0);
|
|
}
|
|
|
|
if (message.offline !== undefined) {
|
|
document.getElementById('offline').style.visibility = message.offline
|
|
? 'visible'
|
|
: 'hidden';
|
|
}
|
|
|
|
if (message.loading !== undefined) {
|
|
document.getElementById('loading').style.visibility = message.loading
|
|
? 'visible'
|
|
: 'hidden';
|
|
document.getElementById('result').style.visibility = message.loading
|
|
? 'hidden'
|
|
: 'visible';
|
|
}
|
|
}
|