fix: reset Liang appearance on activation

This commit is contained in:
kingOfSoySauce
2026-08-17 15:33:48 +08:00
parent f28cd98b92
commit 9661a02d64
4 changed files with 23 additions and 15 deletions

View File

@@ -52,7 +52,7 @@
- `滑动变祖`:显示滑块并启用人物、背景和自适应配色。 - `滑动变祖`:显示滑块并启用人物、背景和自适应配色。
- `原生`:移除背景层、皮肤变量和滑块,恢复 Harness 原生界面。 - `原生`:移除背景层、皮肤变量和滑块,恢复 Harness 原生界面。
选择保存在当前浏览器本地,不会改动模型配置。 “原生”只对当前 Liang client 激活周期生效;从皮肤市场切换到其他皮肤后再切回,梁祖皮肤会重新显示。该选择不会改动模型配置。
## 安装 ## 安装

View File

@@ -798,7 +798,6 @@ var PACKAGE_ID = "dsh-client-liang-intensity-skin";
var LOCALE_NAMESPACE = "liang.skin"; var LOCALE_NAMESPACE = "liang.skin";
var ASSET_PREFIX = `/plugins/${PACKAGE_ID}/assets`; var ASSET_PREFIX = `/plugins/${PACKAGE_ID}/assets`;
var VIDEO_DURATION = 8.033; var VIDEO_DURATION = 8.033;
var PREFERENCE_KEY = "dsh-liang-intensity-skin.enabled";
var BIND_EFFORT_KEY = "dsh-liang-intensity-skin.bind-effort"; var BIND_EFFORT_KEY = "dsh-liang-intensity-skin.bind-effort";
var PORTRAIT_ANCHORS = [ var PORTRAIT_ANCHORS = [
{ level: 0, file: "stage-00.png" }, { level: 0, file: "stage-00.png" },
@@ -1295,16 +1294,20 @@ var inject = [
"theme" "theme"
]; ];
function createPreferenceStore() { function createPreferenceStore() {
try {
localStorage.removeItem("dsh-liang-intensity-skin.enabled");
} catch {
}
let snapshot = { let snapshot = {
enabled: localStorage.getItem(PREFERENCE_KEY) !== "0", enabled: true,
bindEffort: localStorage.getItem(BIND_EFFORT_KEY) !== "0" bindEffort: localStorage.getItem(BIND_EFFORT_KEY) !== "0"
}; };
const listeners = /* @__PURE__ */ new Set(); const listeners = /* @__PURE__ */ new Set();
const onStorage = (event) => { const onStorage = (event) => {
if (event.key !== PREFERENCE_KEY && event.key !== BIND_EFFORT_KEY) return; if (event.key !== BIND_EFFORT_KEY) return;
const next = { const next = {
enabled: event.key === PREFERENCE_KEY ? event.newValue !== "0" : snapshot.enabled, enabled: snapshot.enabled,
bindEffort: event.key === BIND_EFFORT_KEY ? event.newValue !== "0" : snapshot.bindEffort bindEffort: event.newValue !== "0"
}; };
if (next.enabled === snapshot.enabled && next.bindEffort === snapshot.bindEffort) return; if (next.enabled === snapshot.enabled && next.bindEffort === snapshot.bindEffort) return;
snapshot = next; snapshot = next;
@@ -1319,7 +1322,6 @@ function createPreferenceStore() {
}, },
async set(enabled) { async set(enabled) {
if (enabled === snapshot.enabled) return; if (enabled === snapshot.enabled) return;
localStorage.setItem(PREFERENCE_KEY, enabled ? "1" : "0");
snapshot = { ...snapshot, enabled }; snapshot = { ...snapshot, enabled };
for (const listener of listeners) listener(); for (const listener of listeners) listener();
}, },

File diff suppressed because one or more lines are too long

View File

@@ -25,7 +25,6 @@ const PACKAGE_ID = "dsh-client-liang-intensity-skin";
const LOCALE_NAMESPACE = "liang.skin"; const LOCALE_NAMESPACE = "liang.skin";
const ASSET_PREFIX = `/plugins/${PACKAGE_ID}/assets`; const ASSET_PREFIX = `/plugins/${PACKAGE_ID}/assets`;
const VIDEO_DURATION = 8.033; const VIDEO_DURATION = 8.033;
const PREFERENCE_KEY = "dsh-liang-intensity-skin.enabled";
const BIND_EFFORT_KEY = "dsh-liang-intensity-skin.bind-effort"; const BIND_EFFORT_KEY = "dsh-liang-intensity-skin.bind-effort";
const PORTRAIT_ANCHORS = [ const PORTRAIT_ANCHORS = [
@@ -750,16 +749,24 @@ export const inject = [
]; ];
function createPreferenceStore(): PreferenceStore { function createPreferenceStore(): PreferenceStore {
// The market's active skin is the source of truth for whether this client
// should be visible. The appearance switch is therefore scoped to this
// client activation and must not survive switching away and back.
try {
localStorage.removeItem("dsh-liang-intensity-skin.enabled");
} catch {
// Storage may be unavailable; the in-memory default still enables Liang.
}
let snapshot: SkinSettings = { let snapshot: SkinSettings = {
enabled: localStorage.getItem(PREFERENCE_KEY) !== "0", enabled: true,
bindEffort: localStorage.getItem(BIND_EFFORT_KEY) !== "0", bindEffort: localStorage.getItem(BIND_EFFORT_KEY) !== "0",
}; };
const listeners = new Set<() => void>(); const listeners = new Set<() => void>();
const onStorage = (event: StorageEvent) => { const onStorage = (event: StorageEvent) => {
if (event.key !== PREFERENCE_KEY && event.key !== BIND_EFFORT_KEY) return; if (event.key !== BIND_EFFORT_KEY) return;
const next = { const next = {
enabled: event.key === PREFERENCE_KEY ? event.newValue !== "0" : snapshot.enabled, enabled: snapshot.enabled,
bindEffort: event.key === BIND_EFFORT_KEY ? event.newValue !== "0" : snapshot.bindEffort, bindEffort: event.newValue !== "0",
}; };
if (next.enabled === snapshot.enabled && next.bindEffort === snapshot.bindEffort) return; if (next.enabled === snapshot.enabled && next.bindEffort === snapshot.bindEffort) return;
snapshot = next; snapshot = next;
@@ -774,7 +781,6 @@ function createPreferenceStore(): PreferenceStore {
}, },
async set(enabled) { async set(enabled) {
if (enabled === snapshot.enabled) return; if (enabled === snapshot.enabled) return;
localStorage.setItem(PREFERENCE_KEY, enabled ? "1" : "0");
snapshot = { ...snapshot, enabled }; snapshot = { ...snapshot, enabled };
for (const listener of listeners) listener(); for (const listener of listeners) listener();
}, },