/** * POST /api/debug/privacy/update * Update a privacy setting */ import { baileysManager } from '../../../services/baileys/manager' type PrivacySetting = 'lastSeen' | 'online' | 'profilePicture' | 'status' | 'groupsAdd' | 'readReceipts' export default defineEventHandler(async (event) => { const username = getHeader(event, 'x-authentik-username') if (!username) { throw createError({ statusCode: 401, message: 'Unauthorized' }) } const body = await readBody(event) const { instanceId, setting, value } = body as { instanceId: string; setting: PrivacySetting; value: string } if (!instanceId) { throw createError({ statusCode: 400, message: 'instanceId is required' }) } if (!setting) { throw createError({ statusCode: 400, message: 'setting is required' }) } if (!value) { throw createError({ statusCode: 400, message: 'value is required' }) } const validSettings: PrivacySetting[] = ['lastSeen', 'online', 'profilePicture', 'status', 'groupsAdd', 'readReceipts'] if (!validSettings.includes(setting)) { throw createError({ statusCode: 400, message: `Invalid setting. Must be one of: ${validSettings.join(', ')}` }) } const socket = baileysManager.getSocket(instanceId) if (!socket) { throw createError({ statusCode: 400, message: 'Instance not connected' }) } try { switch (setting) { case 'lastSeen': await socket.updateLastSeenPrivacy(value as any) break case 'online': await socket.updateOnlinePrivacy(value as any) break case 'profilePicture': await socket.updateProfilePicturePrivacy(value as any) break case 'status': await socket.updateStatusPrivacy(value as any) break case 'groupsAdd': await socket.updateGroupsAddPrivacy(value as any) break case 'readReceipts': await socket.updateReadReceiptsPrivacy(value as any) break } return { success: true, message: `Privacy setting "${setting}" updated to "${value}"` } } catch (error) { throw createError({ statusCode: 500, message: `Failed to update privacy setting: ${(error as Error).message}` }) } })