Skip to content

Commit

Permalink
automatically replace link to file accordingly to selected version
Browse files Browse the repository at this point in the history
  • Loading branch information
danny8376 authored and lifehackerhansol committed Nov 19, 2024
1 parent 18c9990 commit c791cba
Show file tree
Hide file tree
Showing 18 changed files with 284 additions and 52 deletions.
7 changes: 4 additions & 3 deletions docs/el_GR/get-started.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
noneSelected: Απαιτείται το μοντέλο συστήματος.
invalidVersion: Αυτή δεν φαίνεται να είναι έγκυρη έκδοση συστήματος.
head:
- - script
- src: /assets/js/selecting.js
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/selecting.js'}]
]
---

# Έναρξη
Expand Down
8 changes: 8 additions & 0 deletions docs/el_GR/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Εγκατάσταση του boot9strap (Soundhax)

:::details Τεχνικές λεπτομέρειες (προαιρετικό)
Expand Down
1 change: 1 addition & 0 deletions docs/get-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
noneSelected: System model is required.
invalidVersion: This doesn't seem to be a valid system version.
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/selecting.js'}]
]
---
Expand Down
7 changes: 4 additions & 3 deletions docs/hu_HU/get-started.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
noneSelected: A rendszer modell szükséges.
invalidVersion: Ez nem tűnik egy érvényes rendszer verziónak.
head:
- - script
- src: /assets/js/selecting.js
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/selecting.js'}]
]
---

# Kezdeti lépések
Expand Down
8 changes: 8 additions & 0 deletions docs/hu_HU/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Boot9strap telepítése (Soundhax)

:::details Technikai részletek (opcionális)
Expand Down
8 changes: 8 additions & 0 deletions docs/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Installing boot9strap (Soundhax)

::: details Technical Details (optional)
Expand Down
8 changes: 8 additions & 0 deletions docs/installing-boot9strap-(super-skaterhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/skater-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Installing boot9strap (super-skaterhax)

::: details Technical Details (optional)
Expand Down
7 changes: 4 additions & 3 deletions docs/it_IT/get-started.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
noneSelected: Il modello della console è richiesto.
invalidVersion: Questa non sembra essere una versione di sistema valida.
head:
- - script
- src: /assets/js/selecting.js
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/selecting.js'}]
]
---

# Cominciamo!
Expand Down
8 changes: 8 additions & 0 deletions docs/it_IT/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Installazione di boot9strap (Soundhax)

:::details Dettagli tecnici (opzionale)
Expand Down
7 changes: 4 additions & 3 deletions docs/ko_KR/get-started.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
noneSelected: 시스템 모델을 선택하세요.
invalidVersion: 올바른 시스템 버전으로 확인되지 않습니다.
head:
- - script
- src: /assets/js/selecting.js
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/selecting.js'}]
]
---

# 시작하기
Expand Down
8 changes: 8 additions & 0 deletions docs/ko_KR/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# boot9strap 설치 (Soundhax)

:::details 기술적 상세 정보 (선택 사항)
Expand Down
7 changes: 4 additions & 3 deletions docs/pt_BR/get-started.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
---
noneSelected: Modelo do sistema é necessário.
invalidVersion: Esta não parece ser uma versão válida de sistema.
head:
- - script
- src: /assets/js/selecting.js
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/selecting.js'}]
]
---

# Começando
Expand Down
8 changes: 8 additions & 0 deletions docs/pt_BR/installing-boot9strap-(soundhax).md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
---
head: [
['script', {src: '/assets/js/common.js'}],
['script', {src: '/assets/js/soundhax-link.js'}],
['script', {src: '/assets/js/link-common.js'}],
]
---

# Instalando boot9strap (Soundhax)

:::details Detalhes Técnicos (opcional)
Expand Down
66 changes: 66 additions & 0 deletions docs/public/assets/js/common.js
Original file line number Diff line number Diff line change
@@ -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 changes: 33 additions & 0 deletions docs/public/assets/js/link-common.js
Original file line number Diff line number Diff line change
@@ -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();
}
}

})();
48 changes: 11 additions & 37 deletions docs/public/assets/js/selecting.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,44 +5,11 @@
SPDX-License-Identifier: MIT
*/

const DEVICE_N3DS = 1;
const DEVICE_O3DS = 0;

// 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;
}
// required as vitepress don't always fully reload page
// without putting script in its own scope will have const redefine issue
(() => {

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
Expand Down Expand Up @@ -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,
Expand All @@ -221,3 +191,7 @@ function redirect() {
document.getElementById("result_methodUnavailable").style.display = "block";
return false;
}

window.redirect = redirect;

})();
43 changes: 43 additions & 0 deletions docs/public/assets/js/skater-link.js
Original file line number Diff line number Diff line change
@@ -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`;
}

})();
Loading

0 comments on commit c791cba

Please sign in to comment.