diff --git a/frontend/src/components/workspace/channels/workspace-channels-list.tsx b/frontend/src/components/workspace/channels/workspace-channels-list.tsx index bb48a5ef7..68066ed89 100644 --- a/frontend/src/components/workspace/channels/workspace-channels-list.tsx +++ b/frontend/src/components/workspace/channels/workspace-channels-list.tsx @@ -34,10 +34,13 @@ function providerCanConnect(provider: ChannelProvider): boolean { ); } -function getProviderDisabledReason( +function getProviderUnavailableReason( provider: ChannelProvider, t: ReturnType["t"], ): string | undefined { + if (provider.unavailable_reason) { + return provider.unavailable_reason; + } if (!provider.enabled) { return t.channels.disabled; } @@ -84,6 +87,7 @@ export function WorkspaceChannelsList() { connectMutation.isPending && connectMutation.variables === provider.provider; const canConnect = providerCanConnect(provider); + const unavailableReason = getProviderUnavailableReason(provider, t); return ( @@ -103,9 +107,14 @@ export function WorkspaceChannelsList() { "h-8 w-24 px-2 text-xs", isConnected && "gap-1", )} - disabled={!canConnect || isPending} - title={getProviderDisabledReason(provider, t)} + disabled={isConnected || isPending} + title={unavailableReason} onClick={() => { + if (!canConnect) { + toast.error(unavailableReason ?? t.channels.unavailable); + return; + } + const connectWindow = provider.auth_mode === "deep_link" ? prepareConnectWindow() diff --git a/frontend/src/components/workspace/settings/channels-settings-page.tsx b/frontend/src/components/workspace/settings/channels-settings-page.tsx index 279de5ddb..0b8bfe08b 100644 --- a/frontend/src/components/workspace/settings/channels-settings-page.tsx +++ b/frontend/src/components/workspace/settings/channels-settings-page.tsx @@ -81,10 +81,13 @@ function getStatusLabel( return t.channels.notConnected; } -function getProviderDisabledReason( +function getProviderUnavailableReason( provider: ChannelProvider, t: ReturnType["t"], ): string | undefined { + if (provider.unavailable_reason) { + return provider.unavailable_reason; + } if (!provider.enabled) { return t.channels.disabled; } @@ -116,7 +119,7 @@ function ChannelProviderItem({ disconnectMutation.variables === connection?.id; const connectionLabel = connection ? getConnectionLabel(connection) : null; const statusLabel = getStatusLabel(provider, connection, t); - const unavailableReason = getProviderDisabledReason(provider, t); + const unavailableReason = getProviderUnavailableReason(provider, t); return ( @@ -162,9 +165,14 @@ function ChannelProviderItem({