Files
team/webapp/platform/client/CLAUDE.OPTIONAL.md
Nick MisasiandGitHub 2bc425abfe Add optional Claude.md orchestration for Webapp folder (#34668)
* Add CLAUDE.md documentation files for webapp directories

- Add root webapp CLAUDE.md with overview and build commands
- Add channels CLAUDE.md with architecture and testing info
- Add documentation for actions, components, selectors, utils
- Add documentation for sass, tests, and mattermost-redux
- Add platform documentation for client and types
- Update .gitignore

* Add CLAUDE docs and allow tracking

* Clarify CLAUDE instructions for i18n workflow

* Refactor webapp/CLAUDE.md into a nested hierarchy

Decomposed the monolithic webapp/CLAUDE.md into focused, context-aware
files distributed across the directory structure:
- webapp/CLAUDE.md (Root overview)
- webapp/channels/CLAUDE.md (Channels workspace)
- webapp/channels/src/components/CLAUDE.md
- webapp/channels/src/actions/CLAUDE.md
- webapp/channels/src/selectors/CLAUDE.md
- webapp/channels/src/packages/mattermost-redux/CLAUDE.md
- webapp/platform/CLAUDE.md (Platform workspace)
- webapp/platform/client/CLAUDE.md

* Move files to optional, then add script to move them to proper claud.md
2026-01-14 13:04:20 -05:00

1.8 KiB
Raw Permalink Blame History

CLAUDE: platform/client/ (@mattermost/client)

Purpose

  • Implements the Client4 HTTP layer and WebSocket client used by all Mattermost web apps and plugins.
  • Source of truth for API endpoint definitions and low-level networking helpers.

Structure

  • src/client4.ts – REST endpoints, auth handling, retries.
  • src/websocket.ts – WebSocket manager for real-time events.
  • src/helpers.ts / errors.ts – shared logic for response parsing and error types.

Client4 Usage

Singleton HTTP client for all Mattermost API requests. Methods return Promise<ClientResponse<T>>:

interface ClientResponse<T> {
    response: Response;  // Fetch Response object
    headers: Headers;    // Response headers
    data: T;            // Parsed response data
}

Usage Rules

  1. Actions Only: Client4 should only be called from Redux actions, never directly in components.
  2. Error Handling: Always handle errors appropriately.

Adding New Endpoints

Add new API methods to client4.ts. Keep signatures Promise-based.

getSomething = (id: string) => {
    return this.doFetch<SomethingType>(
        `${this.getSomethingRoute(id)}`,
        {method: 'get'},
    );
};

Error Handling

  • Throw ClientError (see errors.ts) with enough context.
  • Include forceLogoutIfNecessary logic upstream in calling actions; do not couple that here.

WebSocket Client

websocket.ts provides real-time event handling, connection management, and automatic reconnection. Accessed via WebSocketClient wrapper in web app.

Guidelines

  • Follow webapp/STYLE_GUIDE.md → Networking.
  • Each new server API must be added here first, including TypeScript types and tests.
  • Never reference React or browser globals—this package must run in Node.