import { API, setupCopyBtn, showError } from '../shared.js';
export const page = {
title: 'DNS Lookup',
template: () => `
`,
async init(search) {
const input = document.getElementById('dns-domain-input');
const select = document.getElementById('dns-type-select');
const btn = document.getElementById('dns-lookup-button');
const errorEl = document.getElementById('dns-lookup-error');
const section = document.getElementById('dns-lookup-results-section');
const queryEl = document.getElementById('dns-lookup-query');
const loader = document.getElementById('dns-lookup-loader');
const output = document.getElementById('dns-lookup-output');
const copyBtn = document.getElementById('copy-dns-btn');
const syncBtn = () => { btn.disabled = !input.value.trim(); };
input.addEventListener('input', syncBtn);
setupCopyBtn(copyBtn, () => output.textContent);
async function doLookup() {
const domain = input.value.trim();
const type = select.value;
if (!domain) return;
const url = new URL(location.href);
url.searchParams.set('domain', domain);
url.searchParams.set('type', type);
history.replaceState({}, '', url);
showError(errorEl, null);
section.classList.remove('hidden');
loader.classList.remove('hidden');
output.textContent = '';
queryEl.textContent = `${domain} (${type})`;
try {
const r = await fetch(`${API}/dns-lookup?domain=${encodeURIComponent(domain)}&type=${encodeURIComponent(type)}`);
const data = await r.json();
if (!r.ok || !data.success) throw new Error(data.error || `HTTP ${r.status}`);
output.textContent = JSON.stringify(data.records, null, 2);
} catch (err) {
showError(errorEl, err.message);
output.textContent = '';
} finally {
loader.classList.add('hidden');
}
}
btn.addEventListener('click', doLookup);
input.addEventListener('keypress', e => { if (e.key === 'Enter' && !btn.disabled) doLookup(); });
const params = new URLSearchParams(search);
const d = params.get('domain');
if (d) {
input.value = d;
const t = params.get('type');
if (t) select.value = t;
syncBtn();
doLookup();
}
}
};