import { User } from "@/components/Attendees/PeopleSearch"; import { api } from "@/utils/apiUtils"; export async function getOpenPaasUser() { const user = await api.get(`api/user`); return user.json(); } export async function searchUsers( query: string, objectTypes: string[] = ["user", "contact"] ): Promise { const response: any[] = await api .post(`api/people/search`, { body: JSON.stringify({ limit: 10, objectTypes, q: query, }), }) .json(); return response.map((user) => ({ email: user.emailAddresses?.[0]?.value || "", displayName: user.names?.[0]?.displayName || user.emailAddresses?.[0]?.value, avatarUrl: user.photos?.[0]?.url || "", openpaasId: user.id || "", })); } export async function getUserDetails(id: string) { const user = await api.get(`api/users/${id}`).json(); return user; } export interface UserConfigurationUpdates { language?: string; notifications?: Record; timezone?: string | null; displayWeekNumbers?: boolean; previousConfig?: Record; alarmEmails?: boolean; hideDeclinedEvents?: boolean; } export async function updateUserConfigurations( updates: UserConfigurationUpdates ): Promise { const coreConfigs: Array<{ name: string; value: any }> = []; const calendarConfigs: Array<{ name: string; value: any }> = []; const esnCalendarConfigs: Array<{ name: string; value: any }> = []; if (updates.language !== undefined) { coreConfigs.push({ name: "language", value: updates.language }); } if (updates.notifications !== undefined) { coreConfigs.push({ name: "notifications", value: updates.notifications }); } if (updates.timezone !== undefined) { coreConfigs.push({ name: "datetime", value: { ...updates.previousConfig?.datetime, timeZone: updates.timezone, }, }); } if (updates.alarmEmails !== undefined) { calendarConfigs.push({ name: "alarmEmails", value: updates.alarmEmails, }); } if (updates.hideDeclinedEvents !== undefined) { esnCalendarConfigs.push({ name: "hideDeclinedEvents", value: updates.hideDeclinedEvents, }); } if (updates.displayWeekNumbers !== undefined) { calendarConfigs.push({ name: "displayWeekNumbers", value: updates.displayWeekNumbers, }); } const modules: Array<{ name: string; configurations: Array<{ name: string; value: any }>; }> = []; if (coreConfigs.length > 0) { modules.push({ name: "core", configurations: coreConfigs, }); } if (calendarConfigs.length > 0) { modules.push({ name: "calendar", configurations: calendarConfigs, }); } if (esnCalendarConfigs.length > 0) { modules.push({ name: "linagora.esn.calendar", configurations: esnCalendarConfigs, }); } if (modules.length === 0) { return Promise.resolve({ status: 204 }); } return await api.patch(`api/configurations?scope=user`, { json: modules, }); }