@college-africa/chat-sdk
v1.1.2
Published
Client SDK for the College Africa Chat Service
Readme
College Africa Chat SDK
Client SDK for the College Africa Chat Service.
Installation
yarn add @college-africa/chat-sdkOr with npm:
npm install @college-africa/chat-sdkPhase 1 - Foundation
Phase 1 provides the HTTP client foundation with authentication methods.
Quick Start
import { ChatClient } from '@college-africa/chat-sdk';
// Initialize the client
const client = new ChatClient({
baseURL: 'http://localhost:3000',
});
// Exchange an external JWT for a chat JWT
const chatToken = await client.exchangeToken(externalAppJWT, {
deviceToken: 'your-fcm-token',
platform: 'web',
});
// Get your profile
const me = await client.getMe();
console.log('My profile:', me);
// Get another user by ID
const otherUser = await client.getUser(otherUserId);
console.log('Other user:', otherUser);API Reference
ChatClient
Constructor
new ChatClient(config: ChatClientConfig)Config Options:
baseURL(required): Base URL of the chat service APIauthToken(optional): Pre-set auth token for requeststimeout(optional): Request timeout in milliseconds (default: 30000)WebSocketClass(optional): Custom WebSocket implementation for Node.js
Authentication Methods
exchangeToken(extToken: string, options?: ExchangeTokenOptions): Promise<string>
Exchange an external application JWT for a chat JWT.
extToken: External application JWToptions.deviceToken: Optional FCM device token for push notificationsoptions.platform: Platform for push notifications (required if deviceToken provided)- Returns: Chat JWT
getMe(): Promise<User>
Get the authenticated user's profile.
getUser(id: number): Promise<User>
Get a user by their chat ID.
Token Management
setAuthToken(token: string): void
Set the auth token for subsequent requests.
clearAuthToken(): void
Clear the auth token.
hasAuthToken(): boolean
Check if an auth token is set.
Error Handling
The SDK provides custom error classes for different error types:
import {
ChatError,
AuthError,
NetworkError,
ValidationError,
NotFoundError,
PermissionError,
} from '@college-africa/chat-sdk';
try {
await client.exchangeToken(token);
} catch (error) {
if (error instanceof AuthError) {
console.error('Authentication failed:', error.message);
} else if (error instanceof NetworkError) {
console.error('Network error:', error.message);
} else if (error instanceof ValidationError) {
console.error('Invalid input:', error.message);
} else if (error instanceof NotFoundError) {
console.error('Resource not found:', error.message);
} else if (error instanceof PermissionError) {
console.error('Permission denied:', error.message);
} else {
console.error('Unknown error:', error);
}
}TypeScript Support
The SDK is written in TypeScript and provides full type definitions. All types are exported for your use:
import type {
User,
Message,
Group,
Org,
ConversationSummary,
MessagePage,
Cursor,
ChatRole,
PushPlatform,
} from '@college-africa/chat-sdk';Development
Build
yarn buildWatch mode
yarn devClean
yarn cleanLicense
MIT
