fix+feat(ux): 已存草稿显示已保存(Q6) + AI 推理动画指示器(A)
- Q6 bug: useAutosave 加 initialSavedText,进页种入已存草稿时初始即「已保存」,修「加载已存草稿却显示尚未保存」的误导。 - A: 新 ThinkingIndicator(三点波动,motion-safe 尊重 reduced-motion)接入审稿进行中/验收中/回炉中三处静态文案,长等待看得见在工作。
This commit is contained in:
@@ -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> => {
|
||||
|
||||
Reference in New Issue
Block a user