import { t } from '../../i18n.js'; import { checkLicenseStatus } from '../../ui/license.js'; export async function renderLicense(container) { const status = await checkLicenseStatus(); container.innerHTML = `

${t('license_management')}

${t('license_intro')}

${t('current_edition')}

${status.valid ? status.data.level : t('trial_community')}

${t('machine_id')}
${status.hwid}
${status.valid ? `
${t('expiry_info')} ${t('valid_until', { date: `${status.data.expiry}` })}
` : ''}

${t('activate_license_title')}

`; bindLicenseEvents(container); } function bindLicenseEvents(container) { const copyBtn = container.querySelector('#copy-hwid-btn'); if (copyBtn) { copyBtn.onclick = () => { const hwid = container.querySelector('code').textContent; navigator.clipboard.writeText(hwid); // Simple visual feedback const icon = copyBtn.querySelector('i'); icon.className = 'fas fa-check'; setTimeout(() => icon.className = 'fas fa-copy', 2000); }; } const activateBtn = container.querySelector('#activate-license-btn'); if (activateBtn) { activateBtn.onclick = async () => { const key = container.querySelector('#license-key-input').value.trim(); if (!key) { alert(t('enter_license_key')); return; } activateBtn.disabled = true; activateBtn.innerHTML = ` ${t('verifying')}`; try { const res = await fetch('/api/license/activate', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ key }) }); const result = await res.json(); if (result.success) { alert(t('license_activated_success')); location.reload(); } else { alert(t('activation_failed') + result.message); } } catch (err) { alert(t('connection_error') + err.message); } finally { activateBtn.disabled = false; activateBtn.innerHTML = ` ${t('activate_license_btn')}`; } }; } }