Fix "ignoreSiglSections" patch

This commit is contained in:
redphx
2025-05-31 11:16:34 +07:00
parent 9112853dfc
commit cc33e27bd6
4 changed files with 67 additions and 30 deletions

View File

@@ -110,4 +110,33 @@ export class PatcherUtils {
return str;
}
static parseParams(str: string, index: number, maxRange: number) {
const substr = str.substring(index, index + maxRange);
let startIndex = substr.indexOf('({');
if (startIndex < 0) {
return false;
}
startIndex += 1;
let endIndex = substr.indexOf('})', startIndex);
if (endIndex < 0) {
return false;
}
endIndex += 1;
try {
const input = substr.substring(startIndex, endIndex);
const pairs = [...input.matchAll(/(\w+)\s*:\s*([a-zA-Z_$][\w$]*)/g)];
const result: Record<string, string> = {};
for (const [_, key, value] of pairs) {
result[key] = value;
}
return result;
} catch {
return null;
}
}
}

View File

@@ -399,6 +399,11 @@ if (titleInfo && !titleInfo.details.hasTouchSupport && !titleInfo.details.hasFak
}
try {
const params = PatcherUtils.parseParams(str, index, 1000);
if (!params) {
return false;
}
const canShowTakHUDVar = PatcherUtils.getVariableNameAfter(str, PatcherUtils.indexOf(str, 'canShowTakHUD', index, 500, true) + 1);
const guideUIVar = PatcherUtils.getVariableNameAfter(str, PatcherUtils.indexOf(str, 'guideUI', index, 500, true) + 1);
const onShowStreamMenuVar = PatcherUtils.getVariableNameAfter(str, PatcherUtils.indexOf(str, 'onShowStreamMenu', index, 500, true) + 1);
@@ -768,12 +773,13 @@ true` + text;
// home-page.js
ignoreSiglSections(str: string) {
let index = str.indexOf('SiglRow-module__heroCard___');
index >= 0 && (index = PatcherUtils.lastIndexOf(str, 'const[', index, 300));
if (index < 0) {
return false;
}
index = PatcherUtils.lastIndexOf(str, 'const[', index, 300);
if (index < 0) {
const params = PatcherUtils.parseParams(str, index - 500, 500);
if (!params || !params.id) {
return false;
}
@@ -792,16 +798,9 @@ true` + text;
galleryId && siglIds.push(galleryId);
};
const checkSyntax = siglIds.map(item => `siglId === "${item}"`).join(' || ');
const checkSyntax = siglIds.map(item => `${params.id} === "${item}"`).join(' || ');
const newCode = `if (${params.id} && (${checkSyntax})) return null;`;
const newCode = `
if (e && e.id) {
const siglId = e.id;
if (${checkSyntax}) {
return null;
}
}
`;
str = PatcherUtils.insertAt(str, index, newCode);
return str;
},