import { publicUserSchema, publicUserListSchema, userSchema } from '../schemas/index'; import type { SetAvatarBody } from '../schemas/index'; import type { PublicUser, User } from '../types/index'; import { compileValidator, parse, requestJson } from './http'; import type { ApiClientConfig } from './http'; const publicUserV = compileValidator(publicUserSchema); const publicUserListV = compileValidator(publicUserListSchema); const userV = compileValidator(userSchema); export const searchUsers = async ( config: ApiClientConfig, query: string, ): Promise => parse( publicUserListV, await requestJson(config, 'GET', `/users/search?q=${encodeURIComponent(query)}`), ); export const getUserByUsername = async ( config: ApiClientConfig, username: string, ): Promise => parse(publicUserV, await requestJson(config, 'GET', `/users/${encodeURIComponent(username)}`)); export const setAvatar = async (config: ApiClientConfig, body: SetAvatarBody): Promise => parse(userV, await requestJson(config, 'POST', '/me/avatar', body));