diff --git a/.github/.site/js/script.js b/.github/.site/js/script.js new file mode 100644 index 0000000..a79d13f --- /dev/null +++ b/.github/.site/js/script.js @@ -0,0 +1,88 @@ +const supabaseUrl = 'https://zvfngpoxwrgswnzytadh.supabase.co'; +const supabaseKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inp2Zm5ncG94d3Jnc3duenl0YWRoIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDAxNTIxNjMsImV4cCI6MjA1NTcyODE2M30.FNTCCMwi0QaKjOu8gtZsT5yQttUW8QiDDGXmzkn89QE'; + +async function loadSiteData() { + try { + const siteList = document.getElementById('site-list'); + const headers = { + 'apikey': supabaseKey, + 'Authorization': `Bearer ${supabaseKey}`, + 'Content-Type': 'application/json' + }; + + const response = await fetch(`${supabaseUrl}/rest/v1/public`, { + method: 'GET', + headers: headers + }); + + if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`); + + const data = await response.json(); + + siteList.innerHTML = ''; + + if (data && data.length > 0) { + const configSite = data[0].data; + + for (const siteName in configSite) { + const site = configSite[siteName]; + const siteItem = document.createElement('div'); + siteItem.className = 'site-item'; + + const siteIcon = document.createElement('img'); + siteIcon.src = `https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=${site.full_url}&size=128`; + siteIcon.alt = `${siteName} icon`; + siteIcon.onerror = function() { + this.src = 'data:image/svg+xml;utf8,'; + }; + + const siteContent = document.createElement('div'); + siteContent.className = 'site-content'; + + const siteTitle = document.createElement('h3'); + siteTitle.textContent = siteName; + + if (site.old_domain) { + const oldDomain = document.createElement('p'); + oldDomain.className = 'old-domain'; + oldDomain.innerHTML = `Previous domain: ${site.old_domain.replace(/^https?:\/\//, '')}`; + siteContent.appendChild(oldDomain); + } + + if (site.time_change) { + const timeChange = document.createElement('p'); + timeChange.className = 'time-change'; + + const changeDate = new Date(site.time_change); + const dateString = isNaN(changeDate) ? site.time_change : changeDate.toLocaleDateString(); + timeChange.innerHTML = `Updated: ${dateString}`; + siteContent.appendChild(timeChange); + } + + const siteLink = document.createElement('a'); + siteLink.href = site.full_url; + siteLink.target = '_blank'; + siteLink.innerHTML = 'Visit '; + siteLink.rel = 'noopener noreferrer'; + + siteContent.appendChild(siteTitle); + siteContent.appendChild(siteLink); + siteItem.appendChild(siteIcon); + siteItem.appendChild(siteContent); + siteList.appendChild(siteItem); + } + } else { + siteList.innerHTML = '