import apiRequest from './client' export async function deleteAccount(password: string): Promise { // This goes to ciphera-auth return apiRequest('/auth/user', { method: 'DELETE', body: JSON.stringify({ password }), }) } export interface Session { id: string client_ip: string user_agent: string created_at: string expires_at: string is_current: boolean } export async function getUserSessions(): Promise<{ sessions: Session[] }> { // Hash the current refresh token to identify current session const refreshToken = typeof window !== 'undefined' ? localStorage.getItem('refreshToken') : null let currentTokenHash = '' if (refreshToken) { // Hash the refresh token using SHA-256 const encoder = new TextEncoder() const data = encoder.encode(refreshToken) const hashBuffer = await crypto.subtle.digest('SHA-256', data) const hashArray = Array.from(new Uint8Array(hashBuffer)) currentTokenHash = hashArray.map(b => b.toString(16).padStart(2, '0')).join('') } return apiRequest<{ sessions: Session[] }>('/auth/user/sessions', { headers: currentTokenHash ? { 'X-Current-Session-Hash': currentTokenHash, } : undefined, }) } export async function revokeSession(sessionId: string): Promise { return apiRequest(`/auth/user/sessions/${sessionId}`, { method: 'DELETE', }) } export interface UserPreferences { email_notifications: { new_file_received: boolean file_downloaded: boolean login_alerts: boolean password_alerts: boolean two_factor_alerts: boolean } } export async function updateUserPreferences(preferences: UserPreferences): Promise { return apiRequest('/auth/user/preferences', { method: 'PUT', body: JSON.stringify(preferences), }) } export async function updateDisplayName(displayName: string): Promise { return apiRequest('/auth/user/display-name', { method: 'PUT', body: JSON.stringify({ display_name: displayName }), }) }