mirror of
https://github.com/hacks-guide/Guide_3DS.git
synced 2025-08-18 06:21:37 +02:00
automatically replace link to file accordingly to selected version
This commit is contained in:
committed by
lifehackerhansol
parent
18c99906c7
commit
c791cbaffe
66
docs/public/assets/js/common.js
Normal file
66
docs/public/assets/js/common.js
Normal file
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
Copyright (C) 2024 Nintendo Homebrew
|
||||
|
||||
SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
(() => {
|
||||
|
||||
// probably not really needed?
|
||||
function c(key, value) {
|
||||
Object.defineProperty(window, key, { value, writable: false, enumerable: true, configurable: false });
|
||||
}
|
||||
|
||||
if (!window.COMMON_LOADED) {
|
||||
c("COMMON_LOADED", true);
|
||||
|
||||
// Possible max minor for each major, major as key
|
||||
const major_minor_map = {
|
||||
0: -1, // invalidate all 0.x
|
||||
1: 1,
|
||||
2: 2,
|
||||
3: 1,
|
||||
4: 5,
|
||||
5: 1,
|
||||
6: 4,
|
||||
7: 2,
|
||||
8: 1,
|
||||
9: 9,
|
||||
10: 7,
|
||||
11: 17
|
||||
}
|
||||
|
||||
// Validate version
|
||||
// CHN/TWN doesn't have new model
|
||||
// KOR/CHN/TWN doesn't have 11.17 currently
|
||||
c("validate_version", (major, minor, native, region, model) => {
|
||||
if (model == DEVICE_N3DS && ["C", "T"].includes(region)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (major == 11 && minor == 17 && ["K", "C", "T"].includes(region)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const minor_max = major_minor_map[major];
|
||||
if (!isNaN(minor_max) && minor > minor_max) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
c("DEVICE_N3DS", 1);
|
||||
c("DEVICE_O3DS", 0);
|
||||
|
||||
c("FILENAME_REGION_MAP", {
|
||||
"U": "usa",
|
||||
"E": "eur",
|
||||
"J": "jpn",
|
||||
"K": "kor",
|
||||
"C": "cnh",
|
||||
"T": "twn",
|
||||
});
|
||||
}
|
||||
|
||||
})();
|
33
docs/public/assets/js/link-common.js
Normal file
33
docs/public/assets/js/link-common.js
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright (C) 2024 DannyAAM
|
||||
|
||||
SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
(() => {
|
||||
|
||||
const selectedVersion = sessionStorage.getItem("selected_version");
|
||||
if (selectedVersion && window.MATCH && window.generateLink) {
|
||||
function replaceLink() {
|
||||
const {major, minor, nver, region, model} = JSON.parse(selectedVersion);
|
||||
if (!validate_version(major, minor, nver, region, model)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const links = document.querySelectorAll(`a[href*="${MATCH}"]`);
|
||||
for(const link of links) {
|
||||
const newLink = generateLink(major, minor, nver, region, model, link.href);
|
||||
if (newLink) {
|
||||
link.setAttribute("href", newLink);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (document.readyState === "loading") {
|
||||
document.addEventListener("DOMContentLoaded", replaceLink);
|
||||
} else {
|
||||
replaceLink();
|
||||
}
|
||||
}
|
||||
|
||||
})();
|
@@ -5,44 +5,11 @@
|
||||
SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
const DEVICE_N3DS = 1;
|
||||
const DEVICE_O3DS = 0;
|
||||
// required as vitepress don't always fully reload page
|
||||
// without putting script in its own scope will have const redefine issue
|
||||
(() => {
|
||||
|
||||
// Possible max minor for each major, major as key
|
||||
const major_minor_map = {
|
||||
0: -1, // invalidate all 0.x
|
||||
1: 1,
|
||||
2: 2,
|
||||
3: 1,
|
||||
4: 5,
|
||||
5: 1,
|
||||
6: 4,
|
||||
7: 2,
|
||||
8: 1,
|
||||
9: 9,
|
||||
10: 7,
|
||||
11: 17
|
||||
}
|
||||
|
||||
// Validate version
|
||||
// CHN/TWN doesn't have new model
|
||||
// KOR/CHN/TWN doesn't have 11.17 currently
|
||||
function validate_version(major, minor, native, region, model) {
|
||||
if (model == DEVICE_N3DS && ["C", "T"].includes(region)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (major == 11 && minor == 17 && ["K", "C", "T"].includes(region)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const minor_max = major_minor_map[major];
|
||||
if (!isNaN(minor_max) && minor > minor_max) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
// validate_version moved to common.js
|
||||
|
||||
// Soundhax
|
||||
// 1.0-11.3
|
||||
@@ -208,6 +175,9 @@ function redirect() {
|
||||
return;
|
||||
}
|
||||
|
||||
// Store selected version for some later pages
|
||||
sessionStorage.setItem("selected_version", JSON.stringify({major, minor, nver, region, model}));
|
||||
|
||||
const redirected = [
|
||||
can_soundhax,
|
||||
can_ssloth,
|
||||
@@ -221,3 +191,7 @@ function redirect() {
|
||||
document.getElementById("result_methodUnavailable").style.display = "block";
|
||||
return false;
|
||||
}
|
||||
|
||||
window.redirect = redirect;
|
||||
|
||||
})();
|
||||
|
43
docs/public/assets/js/skater-link.js
Normal file
43
docs/public/assets/js/skater-link.js
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
Copyright (C) 2024 DannyAAM
|
||||
|
||||
SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
(() => {
|
||||
|
||||
const BASE = "https://hacksguidewiki.sfo3.digitaloceanspaces.com/hacksguidewiki/Super-skaterhax";
|
||||
|
||||
window.MATCH = "skater.nintendohomebrew.com";
|
||||
|
||||
window.generateLink = (major, minor, nver, region, model, link) => {
|
||||
const fileRegion = FILENAME_REGION_MAP[region];
|
||||
|
||||
if (model != DEVICE_N3DS || major < 11) {
|
||||
return null;
|
||||
}
|
||||
|
||||
let fileVersion;
|
||||
switch (region) {
|
||||
case "U":
|
||||
if (minor == 17) {
|
||||
fileVersion = "v11.17";
|
||||
} else {
|
||||
fileVersion = "pre17";
|
||||
}
|
||||
break;
|
||||
case "K":
|
||||
if (minor == 17) {
|
||||
return null;
|
||||
} else {
|
||||
fileVersion = "pre17";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
fileVersion = "all";
|
||||
break;
|
||||
}
|
||||
return `${BASE}-${fileRegion}-${fileVersion}.zip`;
|
||||
}
|
||||
|
||||
})();
|
54
docs/public/assets/js/soundhax-link.js
Normal file
54
docs/public/assets/js/soundhax-link.js
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
Copyright (C) 2024 DannyAAM
|
||||
|
||||
SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
(() => {
|
||||
|
||||
const BASE = "https://github.com/nedwill/soundhax/raw/master/soundhax";
|
||||
|
||||
window.MATCH = "soundhax.com";
|
||||
|
||||
window.generateLink = (major, minor, nver, region, model, link) => {
|
||||
const fileRegion = FILENAME_REGION_MAP[region];
|
||||
|
||||
if (model == DEVICE_N3DS) {
|
||||
return `${BASE}-${fileRegion}-n3ds.m4a`;
|
||||
}
|
||||
|
||||
if (model == DEVICE_O3DS) {
|
||||
if (major <= 2 && ["K", "C", "T"].includes(region)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
let fileVersion;
|
||||
switch (parseInt(major)) {
|
||||
case 1:
|
||||
fileVersion = "pre2.1";
|
||||
break;
|
||||
case 2:
|
||||
// 2.1 special case:
|
||||
// - if nver lower than 4, use pre 2.1, as sound app is not updated
|
||||
// - otherwise, use 2.1/2.2 for newer soundhax app
|
||||
if (minor == 1 && nver < 4) {
|
||||
fileVersion = "pre2.1";
|
||||
} else {
|
||||
fileVersion = "v2.1and2.2";
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
fileVersion = "v3.xand4.x";
|
||||
break;
|
||||
default: // 5.x and later... maybe reject past 11.3?
|
||||
fileVersion = "post5.0";
|
||||
break;
|
||||
}
|
||||
return `${BASE}-${fileRegion}-o3ds-${fileVersion}.m4a`;
|
||||
}
|
||||
|
||||
return null; // wtf?
|
||||
}
|
||||
|
||||
})();
|
Reference in New Issue
Block a user