index.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  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. const startChat = async <T>(id:string): Promise<T | undefined> => {
  96. try {
  97. const { data : {data} } = await axios.post('/chats',{id});
  98. success('CHAT OPENED');
  99. return data
  100. } catch (e) {
  101. error('BAD REQUEST');
  102. }
  103. };
  104. const getChats = async <T>(): Promise<T | undefined> => {
  105. try {
  106. const { data : {data} } = await axios.get('/chats');
  107. success('CHATS LOADED');
  108. return data
  109. } catch (e) {
  110. error('BAD REQUEST');
  111. }
  112. };
  113. const sentMessageById = async <T>(id:string,message:any): Promise<T | undefined> => {
  114. try {
  115. const { data: { data } } = await axios.post('/messages', { id, message });
  116. success('MESSAGE SENDED');
  117. return data
  118. } catch (e) {
  119. error('BAD REQUEST');
  120. }
  121. };
  122. const getMessagesById = async <T>(id:string): Promise<T | undefined> => {
  123. try {
  124. const { data : {data} } = await axios.get(`/messages/${id}`);
  125. return data
  126. } catch (e) {
  127. return undefined
  128. }
  129. };
  130. export {
  131. setToken,
  132. authorizeUser,
  133. loginUser,
  134. updateCredentials,
  135. updateUserAvatar,
  136. currentUser,
  137. addContact,
  138. getContacts,
  139. startChat,
  140. getChats,
  141. sentMessageById,
  142. getMessagesById
  143. };