haixunMaster/lib/use-action-feedback.ts

42 lines
1.1 KiB
TypeScript
Raw Permalink Normal View History

2026-06-21 12:50:31 +00:00
"use client";
import { useCallback, useState } from "react";
import type { InlineAlertType } from "@/components/ui/inline-alert";
export interface ActionFeedback {
type: InlineAlertType;
message: string;
title?: string;
}
/** 直接操作儲存、刪除、驗證用頁面內提示AI背景任務才進通知中心。 */
export function useActionFeedback() {
const [feedback, setFeedback] = useState<ActionFeedback | null>(null);
const clearFeedback = useCallback(() => setFeedback(null), []);
const showError = useCallback((message: string, title?: string) => {
setFeedback({ type: "error", message, title });
}, []);
const showSuccess = useCallback((message: string, title?: string) => {
setFeedback({ type: "success", message, title });
}, []);
const showWarning = useCallback((message: string, title?: string) => {
setFeedback({ type: "warning", message, title });
}, []);
const showInfo = useCallback((message: string, title?: string) => {
setFeedback({ type: "info", message, title });
}, []);
return {
feedback,
clearFeedback,
showError,
showSuccess,
showWarning,
showInfo,
};
}