auth-api.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { request } from '../../../utils';
  2. import { API } from '../../../types';
  3. import { ResponseType } from '../response-type';
  4. import { UserRegistrationData, UserResetPasswordData, JoinTestTypes } from './queries';
  5. export interface PostLoginUserReturn extends ResponseType {
  6. token: string;
  7. uid: string;
  8. }
  9. export interface PostRegisterUserReturn extends ResponseType {
  10. token: string; // TODO: optional
  11. uid: string;
  12. mail: 1 | 0;
  13. }
  14. export interface UserResetPasswordReturn extends ResponseType {}
  15. export interface UserJoinTestReturn extends ResponseType {
  16. field: 'USERNAME USED' | 'EMAIL USED';
  17. }
  18. export const authApi = {
  19. loginUser: (data: { login: string; pass: string }) =>
  20. request.postForm<PostLoginUserReturn>(API.LOGIN, data),
  21. registerUser: (data: UserRegistrationData) => {
  22. const formData = new FormData();
  23. formData.append('user', JSON.stringify(data.user));
  24. formData.append('photo', {
  25. type: data.photo.type,
  26. uri: data.photo.uri,
  27. name: data.photo.name
  28. } as unknown as Blob);
  29. return request.postForm<PostRegisterUserReturn>(API.REGISTER, formData);
  30. },
  31. resetPassword: (data: UserResetPasswordData) =>
  32. request.postForm<UserResetPasswordReturn>(API.RESET_PASSWORD, data),
  33. joinTest: (data: JoinTestTypes) => request.postForm<UserJoinTestReturn>(API.JOIN_TEST, data)
  34. };