From 5e4d10b95027308ff3733058d184078c1e2c5dd4 Mon Sep 17 00:00:00 2001 From: iliya Date: Tue, 10 Mar 2026 12:43:03 +0200 Subject: [PATCH] feat: integrate action mode into messaging components and enhance team provisioning banner - Updated TeamDetailView to include action mode in message sending functionality. - Enhanced TeamProvisioningBanner to display a message based on the online status of team members. - Added ActionModeSelector to SendMessageDialog for selecting action modes during message composition. - Updated tests to validate action mode handling and ensure proper messaging behavior. --- .../components/team/TeamDetailView.tsx | 10 +++++-- .../team/TeamProvisioningBanner.tsx | 16 +++++++--- .../team/dialogs/SendMessageDialog.tsx | 29 +++++++++++++++++-- ...TeamProvisioningServicePostCompact.test.ts | 3 ++ 4 files changed, 50 insertions(+), 8 deletions(-) diff --git a/src/renderer/components/team/TeamDetailView.tsx b/src/renderer/components/team/TeamDetailView.tsx index ffc9bfd6..c7d74068 100644 --- a/src/renderer/components/team/TeamDetailView.tsx +++ b/src/renderer/components/team/TeamDetailView.tsx @@ -1877,12 +1877,18 @@ export const TeamDetailView = ({ teamName }: TeamDetailViewProps): React.JSX.Ele sending={sendingMessage} sendError={sendMessageError} lastResult={lastSendMessageResult} - onSend={(member, text, summary, attachments) => { + onSend={(member, text, summary, attachments, actionMode) => { void (async () => { const sentAtMs = Date.now(); setPendingRepliesByMember((prev) => ({ ...prev, [member]: sentAtMs })); try { - await sendTeamMessage(teamName, { member, text, summary, attachments }); + await sendTeamMessage(teamName, { + member, + text, + summary, + attachments, + actionMode, + }); } catch { setPendingRepliesByMember((prev) => { if (prev[member] !== sentAtMs) return prev; diff --git a/src/renderer/components/team/TeamProvisioningBanner.tsx b/src/renderer/components/team/TeamProvisioningBanner.tsx index aad0e986..7c7b0120 100644 --- a/src/renderer/components/team/TeamProvisioningBanner.tsx +++ b/src/renderer/components/team/TeamProvisioningBanner.tsx @@ -29,10 +29,11 @@ function findProgressForTeam( export const TeamProvisioningBanner = ({ teamName, }: TeamProvisioningBannerProps): React.JSX.Element | null => { - const { provisioningRuns, cancelProvisioning } = useStore( + const { provisioningRuns, cancelProvisioning, teamMembers } = useStore( useShallow((s) => ({ provisioningRuns: s.provisioningRuns, cancelProvisioning: s.cancelProvisioning, + teamMembers: s.selectedTeamData?.members, })) ); @@ -105,14 +106,21 @@ export const TeamProvisioningBanner = ({ ); } + const allTeammatesOnline = + teamMembers != null && + teamMembers.length > 0 && + teamMembers.every((m) => m.status === 'active' || m.status === 'idle'); + if (isReady) { + const readyMessage = allTeammatesOnline + ? `Team launched — all ${teamMembers!.length} teammates online` + : 'Team launched — teammates may still be starting'; + return (
-

- Team launched — teammates may still be starting -

+

{readyMessage}