const GITHUB_TOKEN = atob( "Z2l0aHViX3BhdF8xMUFYNEtVTlkwMGFoclFZdjNBRzdLX1MwOW1aOFVDM2VRaTlMNW1mWDk2akdDSWFUaXRuaHJhbEkwSmR4TmRPc2k3Q1RPRUJKTXg4M3NQeExv" ); const GITHUB_OWNER = "Adityadn64"; const GITHUB_REPO = "KARTU-UCAPAN-EID-1446H"; const URLS_DATAS_FILE_PATH = "d/urlsdatas.json"; async function getURLSDATAs() { const res = await fetch( `https://api.github.com/repos/${GITHUB_OWNER}/${GITHUB_REPO}/contents/${URLS_DATAS_FILE_PATH}`, { headers: { Accept: "application/vnd.github+json", Authorization: `Bearer ${GITHUB_TOKEN}`, }, } ); const fileData = await res.json(); let currentURLSDATAs = {}; try { currentURLSDATAs = JSON.parse( decodeURIComponent(escape(window.atob(fileData.content))) ); } catch (e) { console.error("Error parsing current urlsdatas; using empty object", e); } return [currentURLSDATAs, fileData]; } async function getURLSDATA(urlsdata) { return (await getURLSDATAs())[0][urlsdata]; } async function setURLSDATAData(urlsdata, data) { let [urlsdatasDB, fileData] = await getURLSDATAs(); const bata = urlsdatasDB[urlsdata]; const rbdY = bata && bata.from && bata.target && bata.option && bata.message && bata.from === data.from && bata.target === data.target && bata.option === data.option && bata.message === (data.message || ""); const rbdN = bata && bata.from && bata.target && bata.option && bata.message && bata.message.trim() !== "" && (bata.from !== data.from || bata.target !== data.target || bata.option !== data.option || bata.message === (data.message || "")); if (bata && rbdN) return [false, urlsdatasDB]; if (!rbdY) { urlsdatasDB[urlsdata] = data; await updateURLSDATADataToGitHub(urlsdatasDB, fileData); } return [true, urlsdatasDB]; } async function updateURLSDATADataToGitHub(urlsdataData, fileData) { try { if (!fileData) fileData = (await getURLSDATAs())[1]; const sha = fileData.sha; const newContent = btoa( unescape(encodeURIComponent(JSON.stringify(urlsdataData, null, 4))) ); const updateRes = await fetch( `https://api.github.com/repos/${GITHUB_OWNER}/${GITHUB_REPO}/contents/${URLS_DATAS_FILE_PATH}`, { method: "PUT", headers: { Accept: "application/vnd.github+json", Authorization: `Bearer ${GITHUB_TOKEN}`, }, body: JSON.stringify({ message: "Update urlsdata data", content: newContent, sha: sha, }), } ); const result = await updateRes.json(); console.log("Update urlsdata data result:", result, urlsdataData); } catch (err) { console.error("Error updating urlsdata data to GitHub:", err); } }