@sunshaobei/dsh-session-manager 3.0.6 → 3.0.7
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/client.js +21 -8
- package/package.json +1 -1
package/client.js
CHANGED
|
@@ -2139,17 +2139,30 @@ window.__ModuleLoader__.load({
|
|
|
2139
2139
|
// 约等于视口 < 800px)就整项消失,这正是「设置里没有会话回收站」的真正原因。
|
|
2140
2140
|
// 25 落在 20(mnemon「Memory System」)与 30(cost-meter「Cost」)之间,
|
|
2141
2141
|
// 属于最上面几项,任何能看见设置导航的窗口都能看见它。
|
|
2142
|
-
// 插件管理二级页(plugins.bundle.config
|
|
2143
|
-
|
|
2142
|
+
// 插件管理二级页(plugins.bundle.config,同 dsh-context)
|
|
2143
|
+
const CFG_NS = 'session-trash'; // 与 cordis patch 行 id 一致
|
|
2144
|
+
const settingsStore = (() => {
|
|
2145
|
+
let form; let state = {}; const listeners = new Set();
|
|
2146
|
+
const notify = () => listeners.forEach((fn) => fn());
|
|
2147
|
+
return {
|
|
2148
|
+
get state() { return state; },
|
|
2149
|
+
subscribe(fn) { listeners.add(fn); return () => listeners.delete(fn); },
|
|
2150
|
+
attach(f) { form = f; try { state = { ...state, ...(f && f.get ? f.get() : {}) }; } catch {} notify(); let un; try { un = f.subscribe(() => { try { state = { ...state, ...(f.get ? f.get() : {}) }; } catch {} notify(); }); } catch {} return () => { if (un) un(); if (form === f) form = undefined; }; },
|
|
2151
|
+
set(k, v) { state = { ...state, [k]: v }; notify(); if (form && typeof form.set === 'function') form.set(k, v).catch(() => {}); },
|
|
2152
|
+
};
|
|
2153
|
+
})();
|
|
2144
2154
|
const registerPluginsPageCard = (env) => {
|
|
2145
2155
|
const cf = env && env.configForms;
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
(
|
|
2156
|
+
if (!cf || typeof cf.get !== 'function' || typeof cf.whileServed !== 'function') return;
|
|
2157
|
+
ctx.effect(() => settingsStore.attach(cf.get(CFG_NS)), 'session-trash: config forms');
|
|
2158
|
+
ctx.effect(() => cf.whileServed([CFG_NS], () =>
|
|
2159
|
+
ctx.slots.inject('plugins.bundle.config', () =>
|
|
2160
|
+
ctx.slots.register(
|
|
2161
|
+
{ name: 'plugins.bundle.config', key: CFG_NS, inject: () => ({ hooks: { sessionTrash: settingsStore }, set: (k, v) => settingsStore.set(k, v) }) },
|
|
2162
|
+
(props) => TrashTab({ ...props, ctx })
|
|
2163
|
+
)
|
|
2151
2164
|
)
|
|
2152
|
-
));
|
|
2165
|
+
), 'session-trash: plugins-page card');
|
|
2153
2166
|
};
|
|
2154
2167
|
if (typeof ctx.inject === 'function') ctx.inject(['configForms'], registerPluginsPageCard);
|
|
2155
2168
|
else registerPluginsPageCard(ctx);
|
package/package.json
CHANGED