Files
fireportal/public/app.js

68 lines
1.9 KiB
JavaScript

document.addEventListener('DOMContentLoaded', () => {
const domainInput = document.getElementById('domainInput');
const searchBtn = document.getElementById('searchBtn');
const exampleLinks = document.querySelectorAll('.example-link');
const statusIndicator = document.getElementById('status-indicator');
// Check server status
checkServerStatus();
// Search button click handler
searchBtn.addEventListener('click', () => {
navigateToHnsDomain();
});
// Enter key press handler
domainInput.addEventListener('keypress', (e) => {
if (e.key === 'Enter') {
navigateToHnsDomain();
}
});
// Example link click handlers
exampleLinks.forEach(link => {
link.addEventListener('click', (e) => {
e.preventDefault();
const domain = e.target.getAttribute('data-domain');
domainInput.value = domain;
navigateToHnsDomain();
});
});
// Function to navigate to HNS domain
function navigateToHnsDomain() {
const domain = domainInput.value.trim();
if (!domain) {
alert('Please enter a Handshake domain');
return;
}
// Clean up domain input (remove trailing slashes)
const cleanDomain = domain.replace(/\/+$/, '');
// Navigate to the HNS domain
window.location.href = `/hns/${cleanDomain}`;
}
// Check server status
async function checkServerStatus() {
try {
const response = await fetch('/api/status');
const data = await response.json();
if (data.status === 'online') {
statusIndicator.textContent = 'Online';
statusIndicator.classList.add('online');
} else {
statusIndicator.textContent = 'Degraded';
statusIndicator.classList.add('offline');
}
} catch (error) {
statusIndicator.textContent = 'Offline';
statusIndicator.classList.add('offline');
console.error('Error checking server status:', error);
}
}
});