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.
52 lines
1.4 KiB
TypeScript
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);
|
|
}
|