wiimart-extension/classDefinitions.js
2025-07-04 13:34:40 -04:00

515 lines
15 KiB
JavaScript

const _injectedWiiShopSoundUrls = window._wiiShopSoundUrls_ || [];
const _injectedWiiShopBgmUrl = window._wiiShopBgmUrl_ || '';
const _bgmInitiallyEnabled = window._wiiShopBgmInitiallyEnabled_ === true;
const _bgmAlreadyPlaying = window._bgmAlreadyPlaying || false;
var ecsUrl = "";
var iasUrl = "";
var ccsUrl = "";
var ucsUrl = "";
var tid = "";
var tsz = "";
var ttmdsz = "";
var lv = "";
// Expose the URLs to the global scope
window.ecsUrl = ecsUrl;
window.iasUrl = iasUrl;
window.ccsUrl = ccsUrl;
window.ucsUrl = ucsUrl;
window.tid = tid;
window.tsz = tsz;
window.ttmdsz = ttmdsz;
window.lv = lv;
// Define the trace function
const trace = function(...args) {
extensionStorage.slog(...args)
console.log(...args);
//console.trace(...args);
};
// content-script.js
const storageCache = {};
const STORAGE_ENDPOINT = '/_extension_storage';
const extensionStorage = {
set: (key, value) => {
storageCache[key] = value;
fetch(`${STORAGE_ENDPOINT}?set_key=${encodeURIComponent(key)}&set_value=${encodeURIComponent(value)}`)
.catch(() => {});
},
get: (key) => {
if (key in storageCache) return storageCache[key];
const request = new XMLHttpRequest();
request.open('GET', `${STORAGE_ENDPOINT}?get=${encodeURIComponent(key)}`, false);
request.send(null);
if (request.status === 0) {
try {
const data = JSON.parse(request.responseText);
storageCache[key] = data.value;
return data.value;
} catch {
return null;
}
}
return null;
},
slog: (message) => {
fetch(`${STORAGE_ENDPOINT}?set_key=slogs&set_value=${encodeURIComponent(message)}`)
.catch(() => {});
},
getLogs: () => {
return extensionStorage.get('logs') || [];
},
clearLogs: () => {
fetch(`${STORAGE_ENDPOINT}?clogs=true`)
.catch(() => {});
storageCache.logs = [];
},
spts: (points) => {
const pointsToAdd = parseInt(points) || 0;
if (pointsToAdd > 0) {
fetch(`${STORAGE_ENDPOINT}?set_key=spts&set_value=${pointsToAdd}`)
.catch(() => {});
}
},
getpts: () => {
const points = extensionStorage.get('pts');
return parseInt(points) || 0;
},
clearpts: () => {
fetch(`${STORAGE_ENDPOINT}?cpts=true`)
.catch(() => {});
storageCache.pts = 0;
}
};
console.log("Current points:", extensionStorage.getpts());
console.log("Trace loaded:", extensionStorage.getLogs());
// Define the ECommerceInterface class
class ECommerceInterface {
constructor() {
const unwantedPath = "/oss/serv/CheckRegistered.jsp";
if (window.location.pathname === unwantedPath) {
//window.location.pathname = "/oss/serv/W_01.jsp";
console.log("Do nothing...");
}
this._titlesMap = new Map([
["0001000248414241", {
name: 'Wii Shop Channel',
version: '21',
isTmdPresent: true,
}],
['0001000248414242', {
name: 'idk',
version: '1',
isTmdPresent: true,
}],
]);
trace("ECommerceInterface initialized"); // Use the trace function
}
getTicketInfos(titleId) {
// Return a mock object that simulates an unlimited license
return {
length: 1, // Simulate the length property
get: function(index) {
if (index === 0) {
return {
deviceId: 222222, // Simulate a personalized ticket
limits: null // No limits, indicating an unlimited license
};
}
return null; // Return null for any other index
}
};
}
getTitleInfo(shopAppTitleId) {
const title = this._titlesMap.get(shopAppTitleId);
if (!title || typeof title !== 'object' || !title.isTmdPresent || title.version == null) {
return null;
}
}
getTitleInfo(titleid) {
return {
isOnDevice: false,
version: 0,
isTmdPresent: false,
}
}
getLog() {
return extensionStorage.getLogs() || ""; // Return the stored trace or an empty string
}
getPoints() {
return extensionStorage.getpts() || 0; // Return the current points
}
setPoints(newPoints) {
if (!Number.isInteger(newPoints)) {
newPoints = parseInt(newPoints, 10); // Convert to integer if not
}
if (isNaN(newPoints)) {
console.error("Invalid points value provided:", newPoints);
return;
}
extensionStorage.spts(newPoints);
trace("Points updated to: " + extensionStorage.getpts());
}
loadPoints() {
console.log("nah i dont load points, they alr loaded");
}
cancelOperation() {
console.log("bro what do you want me to cancel");
}
setWebSvcUrls(ecsuri, iasuri) {
window.ecsUrl = ecsuri;
window.iasUrl = iasuri;
}
setContentUrls(ccsuri, ucsuri) {
window.ccsUrl = ccsuri;
window.ucsUrl = ucsuri;
}
getCachedBalance() {
const storedPoints = window.localStorage.getItem('points');
if (storedPoints) {
return parseInt(storedPoints, 10);
}
else {
return 0;
}
}
refreshCachedBalance() {
const storedPoints = window.localStorage.getItem('points');
if (storedPoints) {
return parseInt(storedPoints, 10);
}
else {
return 0;
}
}
checkDeviceStatus() {
return {
status: 0,
operation: "checkDeviceStatus",
description: "",
phase: 17,
isCancelRequested: "false",
downloadedSize: 888,
totalSize: 888,
errCode: "",
errInfo: "",
};
}
getDeviceInfo() {
return {
country: "CA", // Example value
region: "USA", // Example value
isParentalControlEnabled: false, // Example value
userAge: 20, // Example value
language: "fr", // Example value
accountId: "659247", // Example value
deviceId: "458757", // Example value
serial: "PC156494873", // Example value
maxUserInodes: 200000,
usedUserInodes: 100000,
freeChannelAppCount: 41,
freeChannelAppCount: 41,
blockSize: 536870912,
totalBlocks: 65536,
usedBlocks: 0,
totalSysBlocks: 65536,
usedSysBlocks: 0,
titleId: "0001000248414241",
accountCountry: "CA",
deviceCode: "N/A",
accountDeviceCode: "N/A",
};
}
setSessionValue(key, value) {
extensionStorage.set(key, value);
}
getSessionValue(key) {
return extensionStorage.get(key);
}
pubKeyEncrypt(nah) {
console.log("behonest this is not required: " + nah);
return nah;
}
purchasePoints(pointsToBuy, itemId, price, payment, taxes, purchaseInfo, discount) {
this.setPoints(pointsToBuy);
return 100;
}
getProgress() {
console.log("idk what to return its a progress?");
return 100;
}
checkRegistration() {
return true;
}
getWeakToken() {
return "iamaweaktoken";
}
}
class wiiShop {
constructor() {
trace("wiiShop initialized"); // Use the trace function
return "isok";
}
retry() {
window.location.pathname = "/oss/serv/W_01.jsp";
}
endWaiting() {
console.log("Currently does nothing endwaiting");
}
enableHRP() {
console.log("Does Jack shit homebuttonenabler");
}
sleep(duration) {
return new Promise(resolve => setTimeout(resolve, duration)); // duration is in milliseconds
}
async beginWaiting(seconds) {
// Check if the input is a string and convert to integer if so
if (seconds == null) {
seconds = 3;
}
if (typeof seconds === 'string') {
const parsedValue = parseInt(seconds, 10);
if (isNaN(parsedValue) || parsedValue.toString() !== seconds) {
console.error("Invalid input: Please provide a valid integer value.");
return; // Exit the function if the string is not a valid integer
}
seconds = parsedValue; // Convert string to integer
}
// Check if the input is a valid integer
if (!Number.isInteger(seconds)) {
console.error("Invalid input: Please provide an integer value.");
return; // Exit the function if the input is not an integer
}
let duration;
// Convert single-digit seconds to milliseconds
duration = (seconds < 10) ? seconds * 1000 : seconds; // Convert to ms if single digit
await this.sleep(duration);
console.log("Wait complete!");
}
isCompatibleMode() {
return true;
}
}
class wiiSound {
static audioUrls = _injectedWiiShopSoundUrls;
static currentBgmAudio = null;
constructor() {
trace("wiiSound initialized");
}
playSE(snd) {
const soundIndex = parseInt(snd, 10);
if (isNaN(soundIndex) || soundIndex < 1 || soundIndex >= wiiSound.audioUrls.length) {
console.warn("Invalid sound index for wiiSound.playSE:", snd);
return;
}
const audioUrl = wiiSound.audioUrls[soundIndex];
if (!audioUrl) {
console.warn("No audio URL found for sound index:", soundIndex);
return;
}
const audio = new Audio(audioUrl);
audio.style.display = 'none';
audio.play()
.then(() => {
console.log('Wii Shop Sound played:', soundIndex, audioUrl);
})
.catch(error => {
console.error('Error playing Wii Shop Sound:', soundIndex, audioUrl, error);
});
}
playBGM() {
if (window._bgmAlreadyPlaying === true) {
return "nah mate, i aint playin for ya, im already playin";
} else {
window._bgmAlreadyPlaying = true;
if (wiiSound.currentBgmAudio && !wiiSound.currentBgmAudio.paused) {
wiiSound.currentBgmAudio.pause();
wiiSound.currentBgmAudio.currentTime = 0;
console.log('Stopped previous BGM.');
}
if (!_injectedWiiShopBgmUrl) {
console.warn("No BGM URL available.");
return;
}
const audio = new Audio(_injectedWiiShopBgmUrl);
audio.loop = true;
audio.style.display = 'none';
audio.play()
.then(() => {
wiiSound.currentBgmAudio = audio;
console.log('Wii Shop BGM started and looping:', _injectedWiiShopBgmUrl);
})
.catch(error => {
console.error('Error playing Wii Shop BGM:', _injectedWiiShopBgmUrl, error);
// Autoplay policy issues are common here.
});
}
}
stopBGM() {
if (window._bgmAlreadyPlaying === true){
if (wiiSound.currentBgmAudio) {
wiiSound.currentBgmAudio.pause();
wiiSound.currentBgmAudio.currentTime = 0;
wiiSound.currentBgmAudio = null;
console.log('Wii Shop BGM stopped.');
}
} else {
return "wtf do you want me to stop eh?";
}
}
}
class wiiKeyboard {
constructor() {
trace("wiiKeyboard initialized");
}
}
class ECCreditCardEncryptedPayment {
constructor(smth) {
this.smth = smth;
}
}
class ECPrice {
constructor(uhh, ahh) {
return uhh;
}
}
class wiiSDCard {
constructor() {
return;
}
}
class wiiNwc24 {
constructor() {
return;
}
sendable() {
return true;
}
mailErrNo() {
return null;
}
errMsg() {
return null;
}
getFriendNum() {
return 5;
}
getFriendInfo(fnm, data) {
if (typeof fnm === 'string') {
const parsedValue = parseInt(fnm, 10);
if (isNaN(parsedValue) || parsedValue.toString() !== fnm) {
console.error("Invalid input: Please provide a valid integer value.");
return; // Exit the function if the string is not a valid integer
}
fnm = parsedValue; // Convert string to integer
}
if (data == "name") {
if (fnm == 0) {
return "User1";
} else if (fnm == 1) {
return "User2";
} else if (fnm == 2) {
return "User3";
} else if (fnm == 3) {
return "User4";
} else if (fnm == 4) {
return "User5";
}
}
if (data == "userId") {
if (fnm == 0) {
return "3630753603591712";
} else if (fnm == 1) {
return "3630753603591712";
} else if (fnm == 2) {
return "3630753603591712";
} else if (fnm == 3) {
return "3630753603591712";
} else if (fnm == 4) {
return "3630753603591712";
}
}
if (data == "miiImage") {
return "111"
}
}
}
class wiiDlTask {
constructor() {
trace("WiiDlTask init");
}
addDownloadTask(url, interval){
trace("yes i got it dw i will download it :tro:");
}
}
class wiiMii {
constructor() {
trace("wiiMii init");
}
}
window.ECommerceInterface = ECommerceInterface;
window.ECCreditCardEncryptedPayment = ECCreditCardEncryptedPayment;
window.ECPrice = ECPrice;
window.wiiKeyboard = wiiKeyboard;
window.wiiShop = wiiShop;
window.wiiSound = wiiSound;
window.wiiMii = wiiMii;
if (_bgmInitiallyEnabled) {
// Use a short delay or an event listener to ensure all page elements are ready
// and to potentially work around immediate autoplay blocks (though not guaranteed).
document.addEventListener('DOMContentLoaded', () => {
if (window.wiiSound) {
const soundInstance = new window.wiiSound();
soundInstance.playBGM();
}
});
}