fix+feat(ux): 已存草稿显示已保存(Q6) + AI 推理动画指示器(A)

- Q6 bug: useAutosave 加 initialSavedText,进页种入已存草稿时初始即「已保存」,修「加载已存草稿却显示尚未保存」的误导。
- A: 新 ThinkingIndicator(三点波动,motion-safe 尊重 reduced-motion)接入审稿进行中/验收中/回炉中三处静态文案,长等待看得见在工作。
This commit is contained in:
Yaojia Wang
2026-06-21 18:05:55 +02:00
parent 10c0d4bead
commit c51623836f
6 changed files with 59 additions and 9 deletions

View File

@@ -22,14 +22,24 @@ export interface UseAutosave {
// 防抖自动保存草稿:乐观置 saving → PUT 成功置 saved落「保存于 hh:mm」
// 失败回滚状态 + toast不丢正文已在编辑器里
// `initialSavedText`:进页种入的已存草稿——非空时初始即「已保存」,修「加载已存草稿却显示尚未保存」的误导。
export function useAutosave(
projectId: string,
chapterNo: number,
initialSavedText?: string,
): UseAutosave {
const [status, setStatus] = useState<SaveStatus>("idle");
const [savedLabel, setSavedLabel] = useState<string | null>(null);
const hasInitialDraft = (initialSavedText ?? "").length > 0;
const [status, setStatus] = useState<SaveStatus>(
hasInitialDraft ? "saved" : "idle",
);
const [savedLabel, setSavedLabel] = useState<string | null>(
hasInitialDraft ? "已保存" : null,
);
const toast = useToast();
const lastSavedRef = useRef<string | null>(null);
// 种入已存草稿为基线用户未改动时不触发冗余保存save 早退)。
const lastSavedRef = useRef<string | null>(
hasInitialDraft ? (initialSavedText as string) : null,
);
const save = useCallback(
async (text: string): Promise<void> => {