refactor(web): 下载盘、RSS、订阅、设置与待处理的剩余去噪项(DEAI-2)
- 下载面板:下载盘只显示「已用 x / 总量」与进度条,暂停线 / 在途 / 预留 / 可清理 / 做种保留收进详情; 阈值文案统一「暂停线 / 恢复线 / 下载盘满暂停」 - RSS 页去掉与站点页重复的站点表,节标题「RSS 地址」;用途只在非通用时显示 - 订阅:一条都没有时不铺筛选;表单里「空 = 24;0 = 关」等等式改成 placeholder + 一句说明 - 设置:浏览器服务、元数据识别、MCP 说明去掉组件名与实现细节;会话目录与 fake 脚本只在开发构建显示; API Key scope 前加中文名;命名模板变量去掉「MP 无」 - 待处理顶部计数卡改成一行筛选按钮 - 智能体悬浮按钮只在没有侧栏的窄屏出现,抽屉打开时不再显示「收起」胶囊 Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
57ce40168d
commit
2c8c33c31c
15 files changed
+185
-237
No files matched your search
@@ -275,63 +275,68 @@ export default function SubscriptionsPage() {
|
||||
/>
|
||||
) : (
|
||||
<>
|
||||
<div className="mb-3">
|
||||
<Pills
|
||||
label="分组"
|
||||
value={v.group as SubscriptionGroup | ""}
|
||||
onChange={(x) => f.set("group", x)}
|
||||
items={[
|
||||
{ value: "", label: "全部", count: allCount },
|
||||
...GROUP_ORDER.map((g) => ({ value: g, label: GROUP_LABEL[g], count: counts?.[g] })),
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<FilterBar
|
||||
search={{ value: q, onChange: setQ, placeholder: "作品标题 / 别名 / 检索词" }}
|
||||
onReset={
|
||||
filtered
|
||||
? () => {
|
||||
setQ("");
|
||||
for (const k of ["q", "site", "rg", "origin", "up"] as const) f.set(k, "");
|
||||
}
|
||||
: undefined
|
||||
}
|
||||
>
|
||||
<FilterSelect
|
||||
label="站点"
|
||||
value={v.site}
|
||||
onChange={(x) => f.set("site", x)}
|
||||
options={(sites.data?.items ?? []).map((s) => ({ value: s.id, label: s.name }))}
|
||||
/>
|
||||
<FilterSelect
|
||||
label="规则组"
|
||||
value={v.rg}
|
||||
onChange={(x) => f.set("rg", x)}
|
||||
options={(groups.data?.items ?? []).map((g) => ({ value: g.id, label: g.name }))}
|
||||
/>
|
||||
<FilterSelect
|
||||
label="来源"
|
||||
value={v.origin}
|
||||
onChange={(x) => f.set("origin", x)}
|
||||
options={opts(SUB_ORIGIN)}
|
||||
/>
|
||||
<FilterSelect
|
||||
label="洗版"
|
||||
value={v.up}
|
||||
onChange={(x) => f.set("up", x)}
|
||||
options={[
|
||||
{ value: "true", label: "洗版中" },
|
||||
{ value: "false", label: "未洗版" },
|
||||
]}
|
||||
/>
|
||||
<FilterSelect
|
||||
label="排序"
|
||||
value={v.sort}
|
||||
onChange={(x) => f.set("sort", x)}
|
||||
allLabel="按分组"
|
||||
options={opts(SORT_LABEL)}
|
||||
/>
|
||||
</FilterBar>
|
||||
{/* 一条订阅都没有时只留空态和「新建订阅」,不铺筛选 */}
|
||||
{allCount === 0 && !filtered && !v.group && !v.kind ? null : (
|
||||
<>
|
||||
<div className="mb-3">
|
||||
<Pills
|
||||
label="分组"
|
||||
value={v.group as SubscriptionGroup | ""}
|
||||
onChange={(x) => f.set("group", x)}
|
||||
items={[
|
||||
{ value: "", label: "全部", count: allCount },
|
||||
...GROUP_ORDER.map((g) => ({ value: g, label: GROUP_LABEL[g], count: counts?.[g] })),
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<FilterBar
|
||||
search={{ value: q, onChange: setQ, placeholder: "作品标题 / 别名 / 检索词" }}
|
||||
onReset={
|
||||
filtered
|
||||
? () => {
|
||||
setQ("");
|
||||
for (const k of ["q", "site", "rg", "origin", "up"] as const) f.set(k, "");
|
||||
}
|
||||
: undefined
|
||||
}
|
||||
>
|
||||
<FilterSelect
|
||||
label="站点"
|
||||
value={v.site}
|
||||
onChange={(x) => f.set("site", x)}
|
||||
options={(sites.data?.items ?? []).map((s) => ({ value: s.id, label: s.name }))}
|
||||
/>
|
||||
<FilterSelect
|
||||
label="规则组"
|
||||
value={v.rg}
|
||||
onChange={(x) => f.set("rg", x)}
|
||||
options={(groups.data?.items ?? []).map((g) => ({ value: g.id, label: g.name }))}
|
||||
/>
|
||||
<FilterSelect
|
||||
label="来源"
|
||||
value={v.origin}
|
||||
onChange={(x) => f.set("origin", x)}
|
||||
options={opts(SUB_ORIGIN)}
|
||||
/>
|
||||
<FilterSelect
|
||||
label="洗版"
|
||||
value={v.up}
|
||||
onChange={(x) => f.set("up", x)}
|
||||
options={[
|
||||
{ value: "true", label: "洗版中" },
|
||||
{ value: "false", label: "未洗版" },
|
||||
]}
|
||||
/>
|
||||
<FilterSelect
|
||||
label="排序"
|
||||
value={v.sort}
|
||||
onChange={(x) => f.set("sort", x)}
|
||||
allLabel="按分组"
|
||||
options={opts(SORT_LABEL)}
|
||||
/>
|
||||
</FilterBar>
|
||||
</>
|
||||
)}
|
||||
|
||||
{selecting ? (
|
||||
<div className="pg-slab sticky top-2 z-20 mb-3 flex flex-wrap items-center gap-2 rounded-xl px-3 py-2">
|
||||
@@ -393,7 +398,7 @@ export default function SubscriptionsPage() {
|
||||
icon={CalendarClock}
|
||||
title={filtered || v.group || v.kind ? "没有符合条件的订阅" : "还没有订阅"}
|
||||
description={
|
||||
filtered || v.group || v.kind ? undefined : "从媒体库、搜索或智能体添加,也可以点「新建订阅」。"
|
||||
filtered || v.group || v.kind ? undefined : "在搜索或媒体库里点「订阅」,或点右上角「新建订阅」。"
|
||||
}
|
||||
/>
|
||||
) : grouped ? (
|
||||
|
||||
Reference in new issue
Block a user