Skip to content

Connect all: unify disconnect/reconnect flow for Slack, WhatsApp, and Google Workspace #2

@dtomic15

Description

@dtomic15

Summary

Connect all currently has inconsistent disconnect/reconnect behavior across Slack, WhatsApp, and Google Workspace. Users can get into stale auth states (or repeated “Connect again” prompts), and there is no unified, reliable way to reset and reconnect all tools from the UI.

Affected Tools

  • Slack
  • WhatsApp
  • Google Workspace

Reproduction (generic)

  1. Open Connect all popup.
  2. Connect one or more tools (Slack/WhatsApp/Google Workspace).
  3. Attempt to disconnect and reconnect from the UI.
  4. Observe status inconsistencies (e.g., still connected, or stuck on connect/reconnect loop).

Actual behavior

  • Disconnect/reconnect UX is inconsistent per tool.
  • Google Workspace and Slack do not expose explicit backend disconnect endpoints in current webui routes.
  • WhatsApp has a disconnect endpoint, but overall Connect all behavior is not unified.
  • Status checks rely on cached/local session state in places, which can keep stale “connected” state.

Expected behavior

  • Every connector should support first-class disconnect and reconnect from Connect all.
  • Disconnect should clear provider sessions for the current user and immediately reflect Connect in UI.
  • Reconnect should start from a clean state and reliably land in Connected.
  • UX should be consistent across all three tools.

Repo-level observations

  • Google Workspace routes include authorize/callback/status, but no disconnect route:
    • webui/google_workspace_oauth.py
  • Slack route includes status, but no disconnect route:
    • webui/slack_oauth.py
  • WhatsApp includes explicit disconnect route:
    • webui/whatsapp_qr.py (DELETE /disconnect)
  • Frontend toggle/status orchestration is centralized in:
    • webui/custom.js

Proposed fix

  1. Add disconnect endpoints for Slack and Google Workspace (parallel to WhatsApp disconnect semantics).
  2. Standardize provider session cleanup (oauth_session) per user/provider on disconnect.
  3. In Connect all, treat disconnect as source-of-truth state reset (clear temporary success flags and force status refresh).
  4. Harmonize status polling and reduce stale local/cached “connected” display.
  5. Add integration tests for connect -> disconnect -> reconnect for each tool.

Impact

  • Users cannot reliably self-recover from stale auth state.
  • Increased support burden and confusion in tool onboarding/use.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions