chat-api.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. import { request } from '../../../utils';
  2. import { API } from '../../../types';
  3. import { ResponseType } from '../response-type';
  4. export interface PostSearchUsersReturn extends ResponseType {
  5. data: {
  6. user_id: number;
  7. first_name: string;
  8. last_name: string;
  9. avatar: string | null;
  10. }[];
  11. }
  12. // status: 1 -sent; 2 -received; 3 -read; 4 - deleted
  13. export interface PostGetChatsListReturn extends ResponseType {
  14. conversations: {
  15. uid: number;
  16. name: string;
  17. avatar: string | null;
  18. short: string;
  19. sent_by: number;
  20. updated: Date;
  21. status: 1 | 2 | 3 | 4;
  22. unread_count: number;
  23. last_message_id: number;
  24. pin: 0 | 1;
  25. pin_order: number;
  26. archive: 0 | 1;
  27. archive_order: number;
  28. attachement_name: string;
  29. encrypted: 0 | 1;
  30. muted: 0 | 1;
  31. }[];
  32. }
  33. interface Message {
  34. id: number;
  35. sender: number;
  36. recipient: number;
  37. text: string;
  38. status: 1 | 2 | 3 | 4;
  39. sent_datetime: Date;
  40. received_datetime: Date | null;
  41. read_datetime: Date | null;
  42. reply_to_id: number;
  43. reactions: string;
  44. edits: string;
  45. attachement: any;
  46. encrypted: 0 | 1;
  47. }
  48. export interface PostGetChatWithReturn extends ResponseType {
  49. messages: (Message & {
  50. reply_to: Message;
  51. })[];
  52. }
  53. export interface PostSendMessage {
  54. token: string;
  55. to_uid: number;
  56. text: string;
  57. reply_to_id?: number;
  58. }
  59. export interface PostMessagesReceivedOrRead {
  60. token: string;
  61. from_user: number;
  62. messages_id: number[];
  63. }
  64. export interface PostReactToMessage {
  65. token: string;
  66. message_id: number;
  67. reaction: string;
  68. conversation_with_user: number;
  69. }
  70. export interface PostUnreactToMessage {
  71. token: string;
  72. message_id: number;
  73. conversation_with_user: number;
  74. }
  75. export interface PostDeleteMessage {
  76. token: string;
  77. message_id: number;
  78. conversation_with_user: number;
  79. }
  80. export interface PostDeleteChat {
  81. token: string;
  82. conversation_with_user: number;
  83. }
  84. export interface PostSetSettings {
  85. token: string;
  86. value: 0 | 1;
  87. conversation_with_user: number;
  88. }
  89. export interface PostGetBlockedReturn extends ResponseType {
  90. blocked: {
  91. id: number;
  92. first_name: string;
  93. last_name: string;
  94. avatar: string | null;
  95. }[];
  96. }
  97. export interface PostGetUnreadCountReturn extends ResponseType {
  98. unread_conversations: number;
  99. }
  100. export const chatApi = {
  101. searchUsers: (token: string, search: string) =>
  102. request.postForm<PostSearchUsersReturn>(API.SEARCH_USERS, { token, search }),
  103. getChatsList: (token: string, archive: 0 | 1) =>
  104. request.postForm<PostGetChatsListReturn>(API.GET_CHATS_LIST, { token, archive }),
  105. getChatWith: (
  106. token: string,
  107. uid: number,
  108. no_of_messages: number,
  109. previous_than_message_id: number
  110. ) =>
  111. request.postForm<PostGetChatWithReturn>(API.GET_CHAT_WITH, {
  112. token,
  113. uid,
  114. no_of_messages,
  115. previous_than_message_id
  116. }),
  117. sendMessage: (data: PostSendMessage) => request.postForm<ResponseType>(API.SEND_MESSAGE, data),
  118. messagesReceived: (data: PostMessagesReceivedOrRead) =>
  119. request.postForm<ResponseType>(API.MESSAGES_RECEIVED, data),
  120. messagesRead: (data: PostMessagesReceivedOrRead) =>
  121. request.postForm<ResponseType>(API.MESSAGES_READ, data),
  122. reactToMessage: (data: PostReactToMessage) =>
  123. request.postForm<ResponseType>(API.REACT_TO_MESSAGE, data),
  124. deleteMessage: (data: PostDeleteMessage) =>
  125. request.postForm<ResponseType>(API.DELETE_MESSAGE, data),
  126. setPin: (data: PostSetSettings) => request.postForm<ResponseType>(API.SET_PIN, data),
  127. setArchive: (data: PostSetSettings) => request.postForm<ResponseType>(API.SET_ARCHIVE, data),
  128. setBlock: (data: PostSetSettings) => request.postForm<ResponseType>(API.SET_BLOCK, data),
  129. setMute: (data: PostSetSettings) => request.postForm<ResponseType>(API.SET_MUTE, data),
  130. deleteChat: (data: PostDeleteChat) => request.postForm<ResponseType>(API.DELETE_CHAT, data),
  131. unreactToMessage: (data: PostUnreactToMessage) =>
  132. request.postForm<ResponseType>(API.UNREACT_TO_MESSAGE, data),
  133. getBlocked: (token: string) => request.postForm<PostGetBlockedReturn>(API.GET_BLOCKED, { token }),
  134. getUnreadMessagesCount: (token: string) =>
  135. request.postForm<PostGetUnreadCountReturn>(API.GET_UNREAD_MESSAGES_PRESENT, {
  136. token
  137. })
  138. };