| 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); | |
| } | |
| } | |