blob: fc9e93bfe3aed7fd981005c15833522f172fbc16 [file] [log] [blame]
/*!
* @license
* Copyright 2020 The Go Authors. All rights reserved.
* Use of this source code is governed by a BSD-style
* license that can be found in the LICENSE file.
*/
const fetchButton = document.querySelector('.js-fetchButton');
if (fetchButton) {
fetchButton.addEventListener('click', e => {
e.preventDefault();
fetchPath();
});
}
async function fetchPath() {
const fetchMessageEl = document.querySelector<HTMLHeadingElement>('.js-fetchMessage');
const fetchMessageSecondary = document.querySelector<HTMLParagraphElement>(
'.js-fetchMessageSecondary'
);
const fetchButton = document.querySelector<HTMLButtonElement>('.js-fetchButton');
const fetchLoading = document.querySelector<HTMLDivElement>('.js-fetchLoading');
if (!(fetchMessageEl && fetchMessageSecondary && fetchButton && fetchLoading)) {
return;
}
fetchMessageEl.textContent = `Fetching ${fetchMessageEl.dataset.path}`;
fetchMessageSecondary.textContent =
'Feel free to navigate away and check back later, we’ll keep working on it!';
fetchButton.style.display = 'none';
fetchLoading.style.display = 'block';
const response = await fetch(`/fetch${window.location.pathname}`, { method: 'POST' });
if (response.ok) {
window.location.reload();
return;
}
const responseText = await response.text();
fetchLoading.style.display = 'none';
fetchMessageSecondary.textContent = '';
const responseTextParsedDOM = new DOMParser().parseFromString(responseText, 'text/html');
fetchMessageEl.innerHTML = responseTextParsedDOM.documentElement.textContent ?? '';
}