MediaWiki:Gadget-main-spoiler-warning-screen.js: Difference between revisions
No edit summary |
No edit summary |
||
Line 12: | Line 12: | ||
/* Spoiler warning screen */ | /* Spoiler warning screen */ | ||
window. | window.rgwiki_main_spoilerWarningScreenWasShown = false; | ||
findAndExecute(".rgwiki-main-show-spoiler-warning-screen", (trigger) => { | findAndExecute(".rgwiki-main-show-spoiler-warning-screen", (trigger) => { | ||
if (window. | const acknowledgementDuration = 1 * 24 * 60 * 60 * 1000; // in ms, for how long should the spoiler stay hidden | ||
const pageName = window.mw.config.values.wgPageName; | |||
const now = Date.now(); | |||
// Check if this spoiler warning was already acknowledged recently | |||
{ | |||
let localStorageData; | |||
const localStorageString = window.localStorage.getItem("rgwiki-main-spoilerWarning"); | |||
let localStorageData; | |||
try { | |||
let localStorageData = JSON.parse(localStorageString); | |||
const pageTimestamp = data.spoilerAcknowledgedTimestamps[pageName]; | |||
if (pageTimestamp !== undefined && now < (pageTimestamp + acknowledgementDuration)) { | |||
window.rgwiki_main_spoilerWarningScreenWasShown = true; | |||
} | |||
} catch { | |||
localStorageData = {spoilerAcknowledgedTimestamps: {}} | |||
} | |||
} | |||
if (window.rgwiki_main_spoilerWarningScreenWasShown) { | |||
return; | return; | ||
} | } | ||
Line 42: | Line 62: | ||
continueBtn.addEventListener("click", (e) => { | continueBtn.addEventListener("click", (e) => { | ||
screen.remove(); | screen.remove(); | ||
// Save acknowledgement to local storage | |||
const localStorageString = window.localStorage.getItem("rgwiki-main-spoilerWarning"); | |||
let localStorageData; | |||
try { | |||
localStorageData = JSON.parse(localStorageString); | |||
localStorageData.spoilerAcknowledgedTimestamps[pageName] = now; | |||
} catch { | |||
localStorageData = {spoilerAcknowledgedTimestamps: {}}; | |||
} | |||
window.localStorage.setItem("rgwiki-main-spoilerWarning", JSON.stringify(localStorageData); | |||
}); | }); | ||
buttons.appendChild(continueBtn); | buttons.appendChild(continueBtn); | ||
Line 48: | Line 79: | ||
document.body.appendChild(screen); | document.body.appendChild(screen); | ||
window. | window.rgwiki_main_spoilerWarningScreenWasShown = true; | ||
}); | }); |