diff --git a/src/frontend/src/components/ChannelConfigDialog.vue b/src/frontend/src/components/ChannelConfigDialog.vue new file mode 100644 index 000000000..dfd5cf8aa --- /dev/null +++ b/src/frontend/src/components/ChannelConfigDialog.vue @@ -0,0 +1,119 @@ + + + diff --git a/src/frontend/src/components/ChannelConfigRow.vue b/src/frontend/src/components/ChannelConfigRow.vue new file mode 100644 index 000000000..34e3b83bc --- /dev/null +++ b/src/frontend/src/components/ChannelConfigRow.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/frontend/src/components/SharingPanel.vue b/src/frontend/src/components/SharingPanel.vue index 4ea8becd1..379101241 100644 --- a/src/frontend/src/components/SharingPanel.vue +++ b/src/frontend/src/components/SharingPanel.vue @@ -96,33 +96,53 @@ - +

Channels

- Connect this agent to messaging channels. Expand a row to configure it. + Connect this agent to messaging channels. Use Configure to set one up.

- + - + - + - + - + - + - - +
@@ -152,6 +172,7 @@ import { useAuthStore } from '../stores/auth' import { useNotification } from '../composables' import { useSessionsStore } from '../stores/sessions' import ChannelDisclosure from './ChannelDisclosure.vue' +import ChannelConfigRow from './ChannelConfigRow.vue' import PublicLinksPanel from './PublicLinksPanel.vue' import SlackChannelPanel from './SlackChannelPanel.vue' import TelegramChannelPanel from './TelegramChannelPanel.vue' @@ -182,6 +203,30 @@ const loadAgent = () => { emit('agent-updated') } +// --------------------------------------------------------------------------- +// Channel summary-row status derivations (#19). Each maps a channel's GET +// response to { connected, label, warn } for the compact row; the full config +// panel renders in the row's Configure dialog. +// --------------------------------------------------------------------------- +const slackStatus = (d) => ({ + connected: !!d?.bound, + label: d?.bound ? `#${d.channel_name}` : '', +}) +const telegramStatus = (d) => ({ + connected: !!d?.configured, + label: d?.configured && d.bot_username ? `@${d.bot_username}` : '', + warn: !!d?.configured && !d?.webhook_url, +}) +const whatsappStatus = (d) => ({ + connected: !!d?.configured, + label: d?.configured ? (d.from_number || '') : '', +}) +const voipStatus = (d) => ({ + connected: !!d?.configured, + label: d?.configured ? `${d.from_number || ''}${d.enabled ? '' : ' (disabled)'}` : '', + warn: !!d?.configured && !d?.enabled, +}) + // --------------------------------------------------------------------------- // External access policy + pending requests (Issue #311, reframed by #18) // ---------------------------------------------------------------------------