Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

chatHooks.ts 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. import {
  2. IConversation,
  3. IDialog,
  4. IStats,
  5. IToken,
  6. } from '@/interfaces/database/chat';
  7. import { useCallback } from 'react';
  8. import { useDispatch, useSelector } from 'umi';
  9. export const useFetchDialogList = () => {
  10. const dispatch = useDispatch();
  11. const fetchDialogList = useCallback(() => {
  12. return dispatch<any>({ type: 'chatModel/listDialog' });
  13. }, [dispatch]);
  14. return fetchDialogList;
  15. };
  16. export const useSelectDialogList = () => {
  17. const dialogList: IDialog[] = useSelector(
  18. (state: any) => state.chatModel.dialogList,
  19. );
  20. return dialogList;
  21. };
  22. export const useFetchConversationList = () => {
  23. const dispatch = useDispatch();
  24. const fetchConversationList = useCallback(
  25. async (dialogId: string) => {
  26. if (dialogId) {
  27. dispatch({
  28. type: 'chatModel/listConversation',
  29. payload: { dialog_id: dialogId },
  30. });
  31. }
  32. },
  33. [dispatch],
  34. );
  35. return fetchConversationList;
  36. };
  37. export const useSelectConversationList = () => {
  38. const conversationList: IConversation[] = useSelector(
  39. (state: any) => state.chatModel.conversationList,
  40. );
  41. return conversationList;
  42. };
  43. export const useFetchConversation = () => {
  44. const dispatch = useDispatch();
  45. const fetchConversation = useCallback(
  46. (conversationId: string, needToBeSaved = true) => {
  47. return dispatch<any>({
  48. type: 'chatModel/getConversation',
  49. payload: {
  50. needToBeSaved,
  51. conversation_id: conversationId,
  52. },
  53. });
  54. },
  55. [dispatch],
  56. );
  57. return fetchConversation;
  58. };
  59. export const useFetchDialog = () => {
  60. const dispatch = useDispatch();
  61. const fetchDialog = useCallback(
  62. (dialogId: string, needToBeSaved = true) => {
  63. if (dialogId) {
  64. return dispatch<any>({
  65. type: 'chatModel/getDialog',
  66. payload: { dialog_id: dialogId, needToBeSaved },
  67. });
  68. }
  69. },
  70. [dispatch],
  71. );
  72. return fetchDialog;
  73. };
  74. export const useRemoveDialog = () => {
  75. const dispatch = useDispatch();
  76. const removeDocument = useCallback(
  77. (dialogIds: Array<string>) => {
  78. return dispatch({
  79. type: 'chatModel/removeDialog',
  80. payload: {
  81. dialog_ids: dialogIds,
  82. },
  83. });
  84. },
  85. [dispatch],
  86. );
  87. return removeDocument;
  88. };
  89. export const useUpdateConversation = () => {
  90. const dispatch = useDispatch();
  91. const updateConversation = useCallback(
  92. (payload: any) => {
  93. return dispatch<any>({
  94. type: 'chatModel/setConversation',
  95. payload,
  96. });
  97. },
  98. [dispatch],
  99. );
  100. return updateConversation;
  101. };
  102. export const useSetDialog = () => {
  103. const dispatch = useDispatch();
  104. const setDialog = useCallback(
  105. (payload: IDialog) => {
  106. return dispatch<any>({ type: 'chatModel/setDialog', payload });
  107. },
  108. [dispatch],
  109. );
  110. return setDialog;
  111. };
  112. export const useRemoveConversation = () => {
  113. const dispatch = useDispatch();
  114. const removeConversation = useCallback(
  115. (conversationIds: Array<string>, dialogId: string) => {
  116. return dispatch<any>({
  117. type: 'chatModel/removeConversation',
  118. payload: {
  119. dialog_id: dialogId,
  120. conversation_ids: conversationIds,
  121. },
  122. });
  123. },
  124. [dispatch],
  125. );
  126. return removeConversation;
  127. };
  128. export const useCompleteConversation = () => {
  129. const dispatch = useDispatch();
  130. const completeConversation = useCallback(
  131. (payload: any) => {
  132. return dispatch<any>({
  133. type: 'chatModel/completeConversation',
  134. payload,
  135. });
  136. },
  137. [dispatch],
  138. );
  139. return completeConversation;
  140. };
  141. // #region API provided for external calls
  142. export const useCreateToken = (dialogId: string) => {
  143. const dispatch = useDispatch();
  144. const createToken = useCallback(() => {
  145. return dispatch<any>({
  146. type: 'chatModel/createToken',
  147. payload: { dialogId },
  148. });
  149. }, [dispatch, dialogId]);
  150. return createToken;
  151. };
  152. export const useListToken = () => {
  153. const dispatch = useDispatch();
  154. const listToken = useCallback(
  155. (dialogId: string) => {
  156. return dispatch<any>({
  157. type: 'chatModel/listToken',
  158. payload: { dialogId },
  159. });
  160. },
  161. [dispatch],
  162. );
  163. return listToken;
  164. };
  165. export const useSelectTokenList = () => {
  166. const tokenList: IToken[] = useSelector(
  167. (state: any) => state.chatModel.tokenList,
  168. );
  169. return tokenList;
  170. };
  171. export const useRemoveToken = () => {
  172. const dispatch = useDispatch();
  173. const removeToken = useCallback(
  174. (payload: { tenantId: string; dialogId: string; tokens: string[] }) => {
  175. return dispatch<any>({
  176. type: 'chatModel/removeToken',
  177. payload: payload,
  178. });
  179. },
  180. [dispatch],
  181. );
  182. return removeToken;
  183. };
  184. export const useFetchStats = () => {
  185. const dispatch = useDispatch();
  186. const fetchStats = useCallback(
  187. (payload: any) => {
  188. return dispatch<any>({
  189. type: 'chatModel/getStats',
  190. payload,
  191. });
  192. },
  193. [dispatch],
  194. );
  195. return fetchStats;
  196. };
  197. export const useSelectStats = () => {
  198. const stats: IStats = useSelector((state: any) => state.chatModel.stats);
  199. return stats;
  200. };
  201. //#endregion