+
-
+
+
+
+ {items.map((item) => )}
+ {items.length === 0 && } text="暂无收件规则" description="新建规则后,可自动标记、移动或转发符合条件的邮件。" className="border-solid bg-card" />}
-
- {items.map((item) => )}
- {items.length === 0 && } text="暂无收件规则" description="新建规则后,可自动标记、移动或转发符合条件的邮件。" />}
-
)
@@ -2857,15 +2858,20 @@ function RuleCheckbox({ checked, onCheckedChange, label }: { checked: boolean; o
function RuleListItem({ item, mailboxes, onDelete }: { item: MailRule; mailboxes: Mailbox[]; onDelete: (id: string) => void }) {
const mailbox = item.mailboxId ? mailboxes.find((m) => m.id === item.mailboxId)?.address : "全部邮箱"
const [confirmOpen, setConfirmOpen] = React.useState(false)
+ const conditionText = ruleConditionSummary(item.conditions, item.fromContains, item.subjectContains)
+ const actionText = item.actions.map(ruleActionSummary).filter(Boolean).join(";") || "无动作"
return (
-
-
-
-
{item.name}
-
{item.enabled ? "启用" : "停用"}
- {item.actions.map((action, index) =>
{actionSummary(action)})}
+
+
+
+ {item.name}
+ {item.enabled ? "已启用" : "已停用"}
-
{mailbox} · {item.matchMode === "any" ? "任一条件" : "所有条件"} · {conditionSummary(item.conditions, item.fromContains, item.subjectContains)}
+
+
条件:{conditionText}
+
动作:{actionText}
+
+
{mailbox} · {item.matchMode === "any" ? "任一条件" : "所有条件"}
{ onDelete(item.id); setConfirmOpen(false) }} />
@@ -2904,24 +2910,25 @@ function conditionPlaceholder(field?: MailRuleCondition["field"]) {
return "输入值"
}
-function conditionSummary(conditions: MailRuleCondition[] = [], fromContains = "", subjectContains = "") {
+function ruleConditionSummary(conditions: MailRuleCondition[] = [], fromContains = "", subjectContains = "") {
const items = conditions.length > 0 ? conditions : [fromContains ? { field: "from", operator: "contains", value: fromContains } as MailRuleCondition : undefined, subjectContains ? { field: "subject", operator: "contains", value: subjectContains } as MailRuleCondition : undefined].filter(Boolean) as MailRuleCondition[]
- return items.map(conditionItemSummary).join(";") || "无条件"
+ return items.map(ruleConditionItemSummary).join(";") || "无条件"
}
-function conditionItemSummary(item: MailRuleCondition): string {
+function ruleConditionItemSummary(item: MailRuleCondition): string {
if (item.conditions?.length) {
const mode = item.matchMode === "any" ? "任一" : "全部"
- return `${mode}(${item.conditions.map(conditionItemSummary).join(";")})`
+ return `${mode}(${item.conditions.map(ruleConditionItemSummary).join(";")})`
}
const field = item.field || "from"
const operator = item.operator || defaultConditionOperator(field)
- return `${conditionFieldLabels[field]} ${conditionOperatorLabels[operator]} ${item.value || ""}`
+ const value = item.value ? `"${item.value}"` : ""
+ return `${conditionFieldShortLabels[field]}${conditionOperatorLabels[operator]}${value}`
}
-function actionSummary(action: MailRuleAction) {
- if (action.type === "label") return `${ruleActionLabels[action.type]}${action.value ? `:${action.value}` : ""}`
- if (action.type === "move") return `${ruleActionLabels[action.type]}:${folderLabel(action.value || "Archive")}`
+function ruleActionSummary(action: MailRuleAction) {
+ if (action.type === "label") return `${ruleActionLabels[action.type]}${action.value ? `:"${action.value}"` : ""}`
+ if (action.type === "move") return `${ruleActionLabels[action.type]}:"${folderLabel(action.value || "Archive")}"`
if (action.type === "forward") return `${ruleActionLabels[action.type]}${action.value ? `:${action.value}` : ""}`
return ruleActionLabels[action.type]
}