index.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import { toast } from 'react-toastify';
  2. const axios = require('axios');
  3. axios.defaults.baseURL = 'http://localhost:3000/api';
  4. const error = (message:string) =>
  5. toast.error(`🔥 ${message}!`, {
  6. position: 'bottom-left',
  7. autoClose: 3000,
  8. hideProgressBar: false,
  9. closeOnClick: true,
  10. pauseOnHover: true,
  11. draggable: true,
  12. progress: undefined,
  13. });
  14. const success = (message:string) =>
  15. toast.success(`⚡ ${message}`, {
  16. position: 'bottom-left',
  17. autoClose: 3000,
  18. hideProgressBar: false,
  19. closeOnClick: true,
  20. pauseOnHover: true,
  21. draggable: true,
  22. progress: undefined,
  23. });
  24. const setToken = {
  25. set(token:string) {
  26. axios.defaults.headers.common.Authorization = `Bearer ${token}`;
  27. },
  28. unset() {
  29. axios.defaults.headers.common.Authorization = '';
  30. },
  31. };
  32. const authorizeUser = async (number:string,country:string):Promise<string | undefined> => {
  33. try {
  34. const { data : {data} } = await axios.post('/auth/register', { number,country });
  35. success(`check ${number}`);
  36. return data
  37. } catch (e) {
  38. error('BAD REQUEST');
  39. }
  40. };
  41. const loginUser = async <T>(number:string,code:string):Promise<T | undefined> => {
  42. try {
  43. const { data : {data} } = await axios.post('/auth/login', { number,code });
  44. success(`AUTHORIZED`);
  45. return data
  46. } catch (e) {
  47. error('UNAUTHORIZED');
  48. }
  49. };
  50. const updateCredentials = async <T>(name: string,lastName: string):Promise<T | undefined> => {
  51. try {
  52. const { data : {data} } = await axios.patch('/users/current', { name, lastName });
  53. success(`CREDENTIALS UPDATED`);
  54. return data
  55. } catch (e) {
  56. error('BAD REQUEST');
  57. }
  58. };
  59. const updateUserAvatar = async <T>(formData: object): Promise<T | undefined> => {
  60. try {
  61. const { data : {data} } = await axios.patch('/users/avatars', formData);
  62. success(`AVATAR UPDATED`);
  63. return data
  64. } catch (e) {
  65. error('BAD REQUEST');
  66. }
  67. };
  68. const currentUser = async <T>(): Promise<T | undefined> => {
  69. try {
  70. const { data : {data} } = await axios.get('/users/current');
  71. success(`LOGIN`);
  72. return data
  73. } catch (e) {
  74. error('BAD REQUEST');
  75. }
  76. };
  77. const addContact = async <T>(number:string): Promise<T | undefined> => {
  78. try {
  79. const { data : {data} } = await axios.post('/contacts', { number });
  80. success('CONTACT ADDED');
  81. return data
  82. } catch (e) {
  83. error('BAD REQUEST');
  84. }
  85. };
  86. const getContacts = async <T>(): Promise<T | undefined> => {
  87. try {
  88. const { data : {data} } = await axios.get('/contacts');
  89. success('CONTACTS LOADED');
  90. return data
  91. } catch (e) {
  92. error('BAD REQUEST');
  93. }
  94. };
  95. export {
  96. setToken,
  97. authorizeUser,
  98. loginUser,
  99. updateCredentials,
  100. updateUserAvatar,
  101. currentUser,
  102. addContact,
  103. getContacts
  104. };