learning_ai_notes/web/src/lib/platform-api.ts
saravanakumardb1 71062a57be fix(web): fix auth token key inconsistency and DRY getAccessToken()
feature-flags.ts and prompt-client.ts used bare 'access_token' key
instead of PRODUCT_ID-prefixed key — auth tokens were never sent.

Consolidates 10 web lib files to import the shared getAccessToken()
from api-helpers.ts instead of each redefining their own copy.
2026-04-13 09:59:18 -07:00

52 lines
1.4 KiB
TypeScript

"use client";
import { createPlatformClient, type PlatformClient } from "@bytelyst/platform-client";
import { PLATFORM_SERVICE_URL, PRODUCT_ID } from "@/lib/product-config";
import { getAccessToken } from "@/lib/api-helpers";
let _client: PlatformClient | null = null;
function getClient(): PlatformClient {
if (!_client) {
_client = createPlatformClient({
baseUrl: PLATFORM_SERVICE_URL,
productId: PRODUCT_ID,
getAccessToken,
});
}
return _client;
}
export interface UserSettings {
theme?: "dark" | "light" | "system";
language?: string;
notificationsEnabled?: boolean;
[key: string]: unknown;
}
export interface ActiveSession {
id: string;
deviceName: string;
lastActiveAt: string;
isCurrent: boolean;
}
export async function getUserSettings(): Promise<UserSettings> {
return getClient().get<UserSettings>("/settings");
}
export async function updateUserSettings(settings: Partial<UserSettings>): Promise<UserSettings> {
return getClient().put<UserSettings>("/settings", settings);
}
export async function listSessions(): Promise<ActiveSession[]> {
return getClient().get<ActiveSession[]>("/sessions");
}
export async function revokeSession(sessionId: string): Promise<void> {
await getClient().del(`/sessions/${sessionId}`);
}
export async function updateProfile(updates: { displayName?: string }): Promise<void> {
await getClient().put("/auth/profile", updates);
}