dsh-folia 3.0.2 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client.js +22 -1
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -16596,6 +16596,13 @@ window.__ModuleLoader__.load({
|
|
|
16596
16596
|
const id = await activeSkinIdFromHost();
|
|
16597
16597
|
if (mine !== seq) return; // 期间又变了,放弃这次
|
|
16598
16598
|
if (!id) return;
|
|
16599
|
+
// ⭐ 关键:如果 `html[data-dsh-skin]` 已经等于当前皮肤,说明**皮肤中心自己在启动时
|
|
16600
|
+
// 把它应用好了**(它会在页面加载时走完整流程:作用域化 CSS、六层、hooks、背景、
|
|
16601
|
+
// 校验)。那种情况下我们**什么都不做** —— 任何额外注入都只会干扰它。
|
|
16602
|
+
// 只有它没应用(我们拿不到它的应用路径 / 它没装)时,才用自建那套兜底。
|
|
16603
|
+
try {
|
|
16604
|
+
if (document.documentElement.getAttribute("data-dsh-skin") === id) return;
|
|
16605
|
+
} catch { /* 读不到属性就按"未应用"处理 */ }
|
|
16599
16606
|
try { await applySkinHot(id); } catch { /* 失败就保持原生外观 */ }
|
|
16600
16607
|
};
|
|
16601
16608
|
try {
|
|
@@ -16677,17 +16684,21 @@ window.__ModuleLoader__.load({
|
|
|
16677
16684
|
let applyErr = "";
|
|
16678
16685
|
let bgKind = "none";
|
|
16679
16686
|
let hooksInfo = { ran: false, reason: "skipped" };
|
|
16687
|
+
let reloadAfter = false;
|
|
16680
16688
|
try {
|
|
16681
16689
|
// ① 壁纸先让位:清掉 `id` 之后壁纸层撤下、`data-we-wallpaper` 消失,
|
|
16682
16690
|
// 皮肤中心也不会再扣住皮肤。(反方向由 startSkinArbiter 负责。)
|
|
16683
16691
|
if (typeof onClearWallpaper === "function") {
|
|
16684
16692
|
try { await Promise.resolve(onClearWallpaper()); } catch { /* 清不掉也继续换肤 */ }
|
|
16685
16693
|
}
|
|
16686
|
-
// ②
|
|
16694
|
+
// ② 让**皮肤中心自己**应用:写完 active 之后重新加载页面,它启动时会走完整流程
|
|
16695
|
+
// (这是唯一 100% 正确的路径)。自建那套只在"刷新没发生/它没装"时兜底。
|
|
16696
|
+
// 先做一次热应用,保证即使刷新被桌面壳吞掉,用户也立刻看到变化。
|
|
16687
16697
|
const applied = await applySkinHot(id);
|
|
16688
16698
|
info = applied.info;
|
|
16689
16699
|
bgKind = applied.bg.kind;
|
|
16690
16700
|
hooksInfo = applied.hooks;
|
|
16701
|
+
reloadAfter = true;
|
|
16691
16702
|
} catch (e) {
|
|
16692
16703
|
applyErr = String((e && e.message) || e);
|
|
16693
16704
|
}
|
|
@@ -16706,6 +16717,16 @@ window.__ModuleLoader__.load({
|
|
|
16706
16717
|
// hooks 已经跑过了;reload 只是"整页重载"的可选入口(极少数皮肤依赖启动期布局)
|
|
16707
16718
|
reload: true,
|
|
16708
16719
|
});
|
|
16720
|
+
// 刷新页面 = 把应用权交还给皮肤中心(它只在页面加载时应用)。
|
|
16721
|
+
// 用 replace 而非 reload:桌面壳里 reload 有时被吞掉。失败也不影响已完成的
|
|
16722
|
+
// 热应用 —— 用户至少能看到变化,只是缺动效那类要靠真刷新补齐。
|
|
16723
|
+
if (reloadAfter) {
|
|
16724
|
+
setTimeout(() => {
|
|
16725
|
+
try { window.location.replace(window.location.href); } catch {
|
|
16726
|
+
try { window.location.reload(); } catch { /* 两种都不可用:保留热应用结果 */ }
|
|
16727
|
+
}
|
|
16728
|
+
}, 900);
|
|
16729
|
+
}
|
|
16709
16730
|
// 不再整表重拉:本地标记已经对了,省掉那 600 ms 的"没反应"窗口。
|
|
16710
16731
|
} else if (kind === "remove") {
|
|
16711
16732
|
setNote({ kind: "ok", text: weT("已删除:") + label });
|