dsh-folia 3.5.0 → 3.6.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.
Files changed (2) hide show
  1. package/lib/client.js +41 -1
  2. package/package.json +1 -1
package/lib/client.js CHANGED
@@ -16274,6 +16274,30 @@ window.__ModuleLoader__.load({
16274
16274
 
16275
16275
  React.useEffect(() => { load(false); }, [load]);
16276
16276
 
16277
+ // ── 「应用」= 写 active + 刷新页面 ─────────────────────────────────────────
16278
+ // 皮肤中心**只在页面加载时**应用皮肤,而它的控制器没有导出(0.4.8 与 0.4.11 都
16279
+ // 没有全局句柄 / activate API / 文件监听)。所以让用户"点一下就出效果"的唯一
16280
+ // 可行做法,是让页面重新加载一次,触发它的 boot。
16281
+ //
16282
+ // 用 sessionStorage 留时间戳标记:页面确实重载了,标记就还在(同一标签页会话内
16283
+ // 有效)—— 据此判断"刷新到底发生了没有",而不是靠猜。刷新被桌面壳吞掉时,
16284
+ // 标记留在原地,4 秒后给出明确的兜底提示。
16285
+ React.useEffect(() => {
16286
+ try {
16287
+ const raw = sessionStorage.getItem("folia.applyPending");
16288
+ if (!raw) return;
16289
+ sessionStorage.removeItem("folia.applyPending");
16290
+ const o = JSON.parse(raw);
16291
+ if (o && Date.now() - Number(o.at || 0) < 20000) {
16292
+ setNote({
16293
+ kind: "ok",
16294
+ text: weT("页面已重新加载,「") + (o.label || o.id)
16295
+ + weT("」应由皮肤中心应用。若仍无变化,请到「设置 → 皮肤」点「应用」。"),
16296
+ });
16297
+ }
16298
+ } catch { /* sessionStorage 不可用就跳过,不影响主流程 */ }
16299
+ }, []);
16300
+
16277
16301
  /**
16278
16302
  * 执行一个动作。
16279
16303
  * · install / remove:宿主真正干活(下载解压 / 删目录)。
@@ -16301,9 +16325,25 @@ window.__ModuleLoader__.load({
16301
16325
  setNote({
16302
16326
  kind: "ok",
16303
16327
  text: skinCenter
16304
- ? weT("已选中「") + label + weT("」—— 请到「设置 → 皮肤」点「应用」完成(这是唯一完整生效的路径)")
16328
+ ? weT("已选中「") + label + weT("」,正在重新加载页面让皮肤生效…")
16305
16329
  : weT("已选中「") + label + weT("」—— 未检测到皮肤中心,无法渲染;请安装 @linxin666/dsh-client-ui-skin-center 后重启"),
16306
16330
  });
16331
+ // 只有皮肤中心在台时,刷新才有意义(boot 时它会应用 active)。
16332
+ if (skinCenter) {
16333
+ try {
16334
+ sessionStorage.setItem("folia.applyPending", JSON.stringify({ id, label, at: Date.now() }));
16335
+ } catch { /* 不可用就退化:不刷新,只给提示 */ }
16336
+ setTimeout(() => {
16337
+ try { window.location.reload(); } catch { /* 桌面壳拦了刷新 */ }
16338
+ }, 700);
16339
+ // 兜底:4 秒后页面还在(说明刷新被吞),明确告诉用户改用手动重启。
16340
+ setTimeout(() => {
16341
+ setNote({
16342
+ kind: "err",
16343
+ text: weT("页面没有自动刷新 —— 桌面壳可能拦了刷新。请手动重启 DSH 让「") + label + weT("」生效。"),
16344
+ });
16345
+ }, 4000);
16346
+ }
16307
16347
  } else if (kind === "remove") {
16308
16348
  setNote({ kind: "ok", text: weT("已删除:") + label });
16309
16349
  await load(true);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-folia",
3
- "version": "3.5.0",
3
+ "version": "3.6.0",
4
4
  "description": "Folia 壁纸引擎:把本机 Wallpaper Engine 壁纸搬进 DSH 界面(场景实时渲染 / 视频 / 网页),内置液态玻璃与 Folia 吉祥物,并可从自建站点拉取壁纸。单包形态(组件已合并)。",
5
5
  "type": "module",
6
6
  "engines": {