From 2967a6f79f14abdaa62b80f4401745566644c8c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=A8=E9=9C=96=E9=93=83?= Date: Sat, 27 Jun 2026 17:53:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20ruleStorage=20?= =?UTF-8?q?=E5=86=99=E5=85=A5=E5=A4=B1=E8=B4=A5=E5=A4=84=E7=90=86=E4=B8=8E?= =?UTF-8?q?=20CopyButton=20=E6=88=90=E5=8A=9F=E6=80=81=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CopyButton.tsx | 3 ++- src/utils/ruleStorage.ts | 12 +++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/components/CopyButton.tsx b/src/components/CopyButton.tsx index 64b5314..971e6c2 100644 --- a/src/components/CopyButton.tsx +++ b/src/components/CopyButton.tsx @@ -2,6 +2,7 @@ import React, { useEffect, useRef, useState } from 'react'; import { Check, Copy } from 'lucide-react'; import { copyTextToClipboard } from '@/utils/clipboard'; import { Button, type ButtonProps } from '@/components/ui/button'; +import { cn } from '@/lib/utils'; import { toast } from 'sonner'; interface CopyButtonProps extends Omit { @@ -53,7 +54,7 @@ export const CopyButton: React.FC = ({ aria-label={tooltip ?? '复制'} variant={variant} size={size} - className={className} + className={cn(className, copied && 'text-emerald-500')} {...props} > {copied ? ( diff --git a/src/utils/ruleStorage.ts b/src/utils/ruleStorage.ts index d39c107..7ba95ce 100644 --- a/src/utils/ruleStorage.ts +++ b/src/utils/ruleStorage.ts @@ -78,7 +78,7 @@ export function save( useCount: 0, }; rules.unshift(newRule); - setAll(rules); + if (!setAll(rules)) return null; return newRule; } @@ -95,7 +95,7 @@ export function save( updatedAt: now, }; rules[index] = updatedRule; - setAll(rules); + if (!setAll(rules)) return null; return updatedRule; } @@ -117,7 +117,7 @@ export function update(id: string, updates: Partial): DataRule | null updatedAt: Date.now(), }; rules[index] = updatedRule; - setAll(rules); + if (!setAll(rules)) return null; return updatedRule; } @@ -132,7 +132,7 @@ export function deleteRule(id: string): boolean { return false; } rules.splice(index, 1); - setAll(rules); + if (!setAll(rules)) return false; return true; } @@ -267,11 +267,13 @@ export function clear(): void { /** * 保存所有规则到存储 */ -function setAll(rules: DataRule[]): void { +function setAll(rules: DataRule[]): boolean { try { localStorage.setItem(STORAGE_KEY, JSON.stringify(rules)); + return true; } catch (error) { console.error('[ruleStorage] 保存规则失败:', error); + return false; } }