diff --git a/surfsense_web/components/tool-ui/gmail/create-draft.tsx b/surfsense_web/components/tool-ui/gmail/create-draft.tsx index 4f1181039..2f7b72009 100644 --- a/surfsense_web/components/tool-ui/gmail/create-draft.tsx +++ b/surfsense_web/components/tool-ui/gmail/create-draft.tsx @@ -129,6 +129,7 @@ function ApprovalCard({ const [decided, setDecided] = useState<"approve" | "reject" | "edit" | null>( interruptData.__decided__ ?? null ); + const wasAlreadyDecided = interruptData.__decided__ != null; const [isPanelOpen, setIsPanelOpen] = useState(false); const openHitlEditPanel = useSetAtom(openHitlEditPanelAtom); @@ -175,8 +176,6 @@ function ApprovalCard({ return () => window.removeEventListener("keydown", handler); }, [handleApprove]); - if (decided && decided !== "reject") return null; - return (
{/* Header */} @@ -190,15 +189,21 @@ function ApprovalCard({ ? "Gmail Draft Approved" : "Create Gmail Draft"}

-

- {decided === "reject" - ? "Draft creation was cancelled" - : decided === "edit" - ? "Draft creation is in progress with your changes" - : decided === "approve" - ? "Draft creation is in progress" - : "Requires your approval to proceed"} -

+ {decided === "approve" || decided === "edit" ? ( + wasAlreadyDecided ? ( +

+ {decided === "edit" ? "Draft created with your changes" : "Draft created"} +

+ ) : ( + + ) + ) : ( +

+ {decided === "reject" + ? "Draft creation was cancelled" + : "Requires your approval to proceed"} +

+ )}
{!decided && canEdit && ( @@ -436,15 +441,7 @@ export const CreateGmailDraftToolUI = makeAssistantToolUI< CreateGmailDraftResult >({ toolName: "create_gmail_draft", - render: function CreateGmailDraftUI({ args, result, status }) { - if (status.type === "running") { - return ( -
- -
- ); - } - + render: function CreateGmailDraftUI({ args, result, status: _status }) { if (!result) return null; if (isInterruptResult(result)) { diff --git a/surfsense_web/components/tool-ui/gmail/send-email.tsx b/surfsense_web/components/tool-ui/gmail/send-email.tsx index 5414fdb71..8e23d23ae 100644 --- a/surfsense_web/components/tool-ui/gmail/send-email.tsx +++ b/surfsense_web/components/tool-ui/gmail/send-email.tsx @@ -130,6 +130,7 @@ function ApprovalCard({ const [decided, setDecided] = useState<"approve" | "reject" | "edit" | null>( interruptData.__decided__ ?? null ); + const wasAlreadyDecided = interruptData.__decided__ != null; const [isPanelOpen, setIsPanelOpen] = useState(false); const openHitlEditPanel = useSetAtom(openHitlEditPanelAtom); @@ -176,8 +177,6 @@ function ApprovalCard({ return () => window.removeEventListener("keydown", handler); }, [handleApprove]); - if (decided && decided !== "reject") return null; - return (
{/* Header */} @@ -192,15 +191,21 @@ function ApprovalCard({ ? "Email Sending Approved" : "Send Email"}

-

- {decided === "reject" - ? "Email sending was cancelled" - : decided === "edit" - ? "Email is being sent with your changes" - : decided === "approve" - ? "Email is being sent" - : "This will send the email immediately"} -

+ {decided === "approve" || decided === "edit" ? ( + wasAlreadyDecided ? ( +

+ {decided === "edit" ? "Email sent with your changes" : "Email sent"} +

+ ) : ( + + ) + ) : ( +

+ {decided === "reject" + ? "Email sending was cancelled" + : "Requires your approval to proceed"} +

+ )}
{!decided && canEdit && ( @@ -439,15 +444,7 @@ export const SendGmailEmailToolUI = makeAssistantToolUI< SendGmailEmailResult >({ toolName: "send_gmail_email", - render: function SendGmailEmailUI({ args, result, status }) { - if (status.type === "running") { - return ( -
- -
- ); - } - + render: function SendGmailEmailUI({ args, result, status: _status }) { if (!result) return null; if (isInterruptResult(result)) { diff --git a/surfsense_web/components/tool-ui/gmail/trash-email.tsx b/surfsense_web/components/tool-ui/gmail/trash-email.tsx index 2becf5dcc..6a7af5c59 100644 --- a/surfsense_web/components/tool-ui/gmail/trash-email.tsx +++ b/surfsense_web/components/tool-ui/gmail/trash-email.tsx @@ -149,6 +149,7 @@ function ApprovalCard({ const [decided, setDecided] = useState<"approve" | "reject" | null>( interruptData.__decided__ ?? null ); + const wasAlreadyDecided = interruptData.__decided__ != null; const [deleteFromKb, setDeleteFromKb] = useState(false); const account = interruptData.context?.account; @@ -180,8 +181,6 @@ function ApprovalCard({ return () => window.removeEventListener("keydown", handler); }, [handleApprove]); - if (decided && decided !== "reject") return null; - return (
{/* Header */} @@ -196,13 +195,19 @@ function ApprovalCard({ ? "Email Trash Approved" : "Trash Email"}

-

- {decided === "reject" - ? "Email trash was cancelled" - : decided === "approve" - ? "Email is being trashed" + {decided === "approve" ? ( + wasAlreadyDecided ? ( +

Email trashed

+ ) : ( + + ) + ) : ( +

+ {decided === "reject" + ? "Email trash was cancelled" : "Requires your approval to proceed"} -

+

+ )}
@@ -396,15 +401,7 @@ export const TrashGmailEmailToolUI = makeAssistantToolUI< TrashGmailEmailResult >({ toolName: "trash_gmail_email", - render: function TrashGmailEmailUI({ result, status }) { - if (status.type === "running") { - return ( -
- -
- ); - } - + render: function TrashGmailEmailUI({ result, status: _status }) { if (!result) return null; if (isInterruptResult(result)) { diff --git a/surfsense_web/components/tool-ui/google-calendar/create-event.tsx b/surfsense_web/components/tool-ui/google-calendar/create-event.tsx index fcf8f804f..b14e27fa3 100644 --- a/surfsense_web/components/tool-ui/google-calendar/create-event.tsx +++ b/surfsense_web/components/tool-ui/google-calendar/create-event.tsx @@ -157,6 +157,7 @@ function ApprovalCard({ const [decided, setDecided] = useState<"approve" | "reject" | "edit" | null>( interruptData.__decided__ ?? null ); + const wasAlreadyDecided = interruptData.__decided__ != null; const [isPanelOpen, setIsPanelOpen] = useState(false); const openHitlEditPanel = useSetAtom(openHitlEditPanelAtom); @@ -217,8 +218,6 @@ function ApprovalCard({ return () => window.removeEventListener("keydown", handler); }, [handleApprove]); - if (decided && decided !== "reject") return null; - const attendeesList = (args.attendees as string[]) ?? []; return ( @@ -235,15 +234,21 @@ function ApprovalCard({ ? "Calendar Event Approved" : "Create Calendar Event"}

-

- {decided === "reject" - ? "Event creation was cancelled" - : decided === "edit" - ? "Event creation is in progress with your changes" - : decided === "approve" - ? "Event creation is in progress" - : "Requires your approval to proceed"} -

+ {decided === "approve" || decided === "edit" ? ( + wasAlreadyDecided ? ( +

+ {decided === "edit" ? "Event created with your changes" : "Event created"} +

+ ) : ( + + ) + ) : ( +

+ {decided === "reject" + ? "Event creation was cancelled" + : "Requires your approval to proceed"} +

+ )} {!decided && canEdit && ( @@ -549,15 +554,7 @@ export const CreateCalendarEventToolUI = makeAssistantToolUI< CreateCalendarEventResult >({ toolName: "create_calendar_event", - render: function CreateCalendarEventUI({ args, result, status }) { - if (status.type === "running") { - return ( -
- -
- ); - } - + render: function CreateCalendarEventUI({ args, result }) { if (!result) return null; if (isInterruptResult(result)) { diff --git a/surfsense_web/components/tool-ui/google-calendar/delete-event.tsx b/surfsense_web/components/tool-ui/google-calendar/delete-event.tsx index ce7b9ec8f..c5c10fed0 100644 --- a/surfsense_web/components/tool-ui/google-calendar/delete-event.tsx +++ b/surfsense_web/components/tool-ui/google-calendar/delete-event.tsx @@ -177,6 +177,7 @@ function ApprovalCard({ const [decided, setDecided] = useState<"approve" | "reject" | null>( interruptData.__decided__ ?? null ); + const wasAlreadyDecided = interruptData.__decided__ != null; const [deleteFromKb, setDeleteFromKb] = useState(false); const context = interruptData.context; @@ -209,8 +210,6 @@ function ApprovalCard({ return () => window.removeEventListener("keydown", handler); }, [handleApprove]); - if (decided && decided !== "reject") return null; - return (
{/* Header */} @@ -225,13 +224,19 @@ function ApprovalCard({ ? "Calendar Event Deletion Approved" : "Delete Calendar Event"}

-

- {decided === "reject" - ? "Event deletion was cancelled" - : decided === "approve" - ? "Event deletion is in progress" + {decided === "approve" ? ( + wasAlreadyDecided ? ( +

Event deleted

+ ) : ( + + ) + ) : ( +

+ {decided === "reject" + ? "Event deletion was cancelled" : "Requires your approval to proceed"} -

+

+ )}
@@ -447,15 +452,7 @@ export const DeleteCalendarEventToolUI = makeAssistantToolUI< DeleteCalendarEventResult >({ toolName: "delete_calendar_event", - render: function DeleteCalendarEventUI({ result, status }) { - if (status.type === "running") { - return ( -
- -
- ); - } - + render: function DeleteCalendarEventUI({ result }) { if (!result) return null; if (isInterruptResult(result)) { diff --git a/surfsense_web/components/tool-ui/google-calendar/update-event.tsx b/surfsense_web/components/tool-ui/google-calendar/update-event.tsx index 5fc72f6f4..85eb4d661 100644 --- a/surfsense_web/components/tool-ui/google-calendar/update-event.tsx +++ b/surfsense_web/components/tool-ui/google-calendar/update-event.tsx @@ -168,6 +168,7 @@ function ApprovalCard({ const [decided, setDecided] = useState<"approve" | "reject" | "edit" | null>( interruptData.__decided__ ?? null ); + const wasAlreadyDecided = interruptData.__decided__ != null; const [isPanelOpen, setIsPanelOpen] = useState(false); const openHitlEditPanel = useSetAtom(openHitlEditPanelAtom); @@ -251,8 +252,6 @@ function ApprovalCard({ return () => window.removeEventListener("keydown", handler); }, [handleApprove]); - if (decided && decided !== "reject") return null; - return (
{/* Header */} @@ -267,15 +266,21 @@ function ApprovalCard({ ? "Calendar Event Update Approved" : "Update Calendar Event"}

-

- {decided === "reject" - ? "Event update was cancelled" - : decided === "edit" - ? "Event update is in progress with your changes" - : decided === "approve" - ? "Event update is in progress" - : "Requires your approval to proceed"} -

+ {decided === "approve" || decided === "edit" ? ( + wasAlreadyDecided ? ( +

+ {decided === "edit" ? "Event updated with your changes" : "Event updated"} +

+ ) : ( + + ) + ) : ( +

+ {decided === "reject" + ? "Event update was cancelled" + : "Requires your approval to proceed"} +

+ )}
{!decided && canEdit && ( @@ -592,15 +597,7 @@ export const UpdateCalendarEventToolUI = makeAssistantToolUI< UpdateCalendarEventResult >({ toolName: "update_calendar_event", - render: function UpdateCalendarEventUI({ result, status }) { - if (status.type === "running") { - return ( -
- -
- ); - } - + render: function UpdateCalendarEventUI({ result }) { if (!result) return null; if (isInterruptResult(result)) { diff --git a/surfsense_web/components/tool-ui/google-drive/create-file.tsx b/surfsense_web/components/tool-ui/google-drive/create-file.tsx index aa2eb9eee..cca93ce17 100644 --- a/surfsense_web/components/tool-ui/google-drive/create-file.tsx +++ b/surfsense_web/components/tool-ui/google-drive/create-file.tsx @@ -134,6 +134,7 @@ function ApprovalCard({ const [decided, setDecided] = useState<"approve" | "reject" | "edit" | null>( interruptData.__decided__ ?? null ); + const wasAlreadyDecided = interruptData.__decided__ != null; const [isPanelOpen, setIsPanelOpen] = useState(false); const openHitlEditPanel = useSetAtom(openHitlEditPanelAtom); @@ -202,8 +203,6 @@ function ApprovalCard({ return () => window.removeEventListener("keydown", handler); }, [handleApprove]); - if (decided && decided !== "reject") return null; - return (
{/* Header */} @@ -216,15 +215,21 @@ function ApprovalCard({ ? `${fileTypeLabel} Approved` : `Create ${fileTypeLabel}`}

-

- {decided === "reject" - ? "File creation was cancelled" - : decided === "edit" - ? "File creation is in progress with your changes" - : decided === "approve" - ? "File creation is in progress" - : "Requires your approval to proceed"} -

+ {decided === "approve" || decided === "edit" ? ( + wasAlreadyDecided ? ( +

+ {decided === "edit" ? "File created with your changes" : "File created"} +

+ ) : ( + + ) + ) : ( +

+ {decided === "reject" + ? "File creation was cancelled" + : "Requires your approval to proceed"} +

+ )}
{!decided && canEdit && (