mattermost/webapp/platform/client/CLAUDE.OPTIONAL.md
Nick Misasi 0885f56010
Some checks are pending
API / build (push) Waiting to run
Server CI / Compute Go Version (push) Waiting to run
Server CI / Check mocks (push) Blocked by required conditions
Server CI / Check go mod tidy (push) Blocked by required conditions
Server CI / check-style (push) Blocked by required conditions
Server CI / Check serialization methods for hot structs (push) Blocked by required conditions
Server CI / Vet API (push) Blocked by required conditions
Server CI / Check migration files (push) Blocked by required conditions
Server CI / Generate email templates (push) Blocked by required conditions
Server CI / Check store layers (push) Blocked by required conditions
Server CI / Check mmctl docs (push) Blocked by required conditions
Server CI / Postgres with binary parameters (push) Blocked by required conditions
Server CI / Postgres (push) Blocked by required conditions
Server CI / Postgres (FIPS) (push) Blocked by required conditions
Server CI / Generate Test Coverage (push) Blocked by required conditions
Server CI / Run mmctl tests (push) Blocked by required conditions
Server CI / Run mmctl tests (FIPS) (push) Blocked by required conditions
Server CI / Build mattermost server app (push) Blocked by required conditions
Web App CI / check-lint (push) Waiting to run
Web App CI / check-i18n (push) Blocked by required conditions
Web App CI / check-types (push) Blocked by required conditions
Web App CI / test (platform) (push) Blocked by required conditions
Web App CI / test (mattermost-redux) (push) Blocked by required conditions
Web App CI / test (channels shard 1/4) (push) Blocked by required conditions
Web App CI / test (channels shard 2/4) (push) Blocked by required conditions
Web App CI / test (channels shard 3/4) (push) Blocked by required conditions
Web App CI / test (channels shard 4/4) (push) Blocked by required conditions
Web App CI / upload-coverage (push) Blocked by required conditions
Web App CI / build (push) Blocked by required conditions
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.