Messenger/packages/core/src/api/users.ts
Заид Омар Медхат | Zaid Omar Medhat f653b083aa f
2026-07-13 12:32:00 +05:00

27 lines
1.1 KiB
TypeScript

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<PublicUser>(publicUserSchema);
const publicUserListV = compileValidator<PublicUser[]>(publicUserListSchema);
const userV = compileValidator<User>(userSchema);
export const searchUsers = async (
config: ApiClientConfig,
query: string,
): Promise<PublicUser[]> =>
parse(
publicUserListV,
await requestJson(config, 'GET', `/users/search?q=${encodeURIComponent(query)}`),
);
export const getUserByUsername = async (
config: ApiClientConfig,
username: string,
): Promise<PublicUser> =>
parse(publicUserV, await requestJson(config, 'GET', `/users/${encodeURIComponent(username)}`));
export const setAvatar = async (config: ApiClientConfig, body: SetAvatarBody): Promise<User> =>
parse(userV, await requestJson(config, 'POST', '/me/avatar', body));