diff --git a/Update.json b/Update.json index e12d6229..e996c59c 100644 --- a/Update.json +++ b/Update.json @@ -3433,6 +3433,17 @@ } ], "Notes": "No release notes were provided for this release." + }, + "3.3.2": { + "UpdateDate": 1773497456666, + "Prerelease": true, + "UpdateContents": [ + { + "PR": 934, + "Description": "feat: add refresh button to ProblemSwitcher" + } + ], + "Notes": "Added a refresh button (↻) to the ProblemSwitcher panel. Clicking it invalidates the cached contest problem list and reloads the page, useful when contest problems are updated mid-contest." } } } \ No newline at end of file diff --git a/XMOJ.user.js b/XMOJ.user.js index 49538eed..6184b409 100644 --- a/XMOJ.user.js +++ b/XMOJ.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name XMOJ -// @version 3.3.1 +// @version 3.3.2 // @description XMOJ增强脚本 // @author @XMOJ-Script-dev, @langningchen and the community // @namespace https://github/langningchen @@ -2323,6 +2323,30 @@ async function main() { } problemSwitcher.innerHTML += `${buttonText}`; } + let refreshCid = SearchParams.get("cid"); + let refreshBtn = document.createElement("a"); + refreshBtn.title = "刷新缓存"; + refreshBtn.classList.add("btn", "btn-outline-secondary", "mt-2"); + refreshBtn.innerHTML = "↻"; + refreshBtn.href = "#"; + if (refreshCid) { + refreshBtn.addEventListener("click", function(e) { + e.preventDefault(); + let prefix = "UserScript-Contest-" + refreshCid + "-"; + let keysToRemove = []; + for (let k = 0; k < localStorage.length; k++) { + let key = localStorage.key(k); + if (key && key.startsWith(prefix)) { + keysToRemove.push(key); + } + } + keysToRemove.forEach(k => localStorage.removeItem(k)); + location.reload(); + }); + } else { + refreshBtn.style.display = "none"; + } + problemSwitcher.appendChild(refreshBtn); document.body.appendChild(problemSwitcher); } if (document.querySelector("body > div > div.mt-3 > h2") != null) { diff --git a/package.json b/package.json index 9ffb1aa4..7a191097 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xmoj-script", - "version": "3.3.1", + "version": "3.3.2", "description": "an improvement script for xmoj.tech", "main": "AddonScript.js", "scripts": {