refactor: load more in msg feed

This commit is contained in:
Tristan Yang
2023-03-09 11:32:44 +08:00
parent 384de7c8df
commit 3af4cab880
8 changed files with 171 additions and 181 deletions
+1 -18
View File
@@ -8,10 +8,9 @@ import { removeMessage } from "../slices/message";
import { removeChannelSession } from "../slices/message.channel";
import { removeReactionMessage } from "../slices/message.reaction";
import { onMessageSendStarted } from "./handlers";
import handleChatMessage from "../../common/hook/useStreaming/chat.handler";
import { Channel, ChannelDTO, CreateChannelDTO } from "../../types/channel";
import { RootState } from "../store";
import { ContentTypeKey, ChatMessage } from "../../types/message";
import { ContentTypeKey } from "../../types/message";
export const channelApi = createApi({
reducerPath: "channelApi",
@@ -76,21 +75,6 @@ export const channelApi = createApi({
}
}
}),
getHistoryMessages: builder.query<ChatMessage[], { id: number; mid?: number; limit?: number }>({
query: ({ id, mid = null, limit = 100 }) => ({
url: mid
? `/group/${id}/history?before=${mid}&limit=${limit}`
: `/group/${id}/history?limit=${limit}`
}),
async onQueryStarted(params, { dispatch, getState, queryFulfilled }) {
const { data: messages } = await queryFulfilled;
if (messages?.length) {
messages.forEach((msg) => {
handleChatMessage(msg, dispatch, getState() as RootState);
});
}
}
}),
createInviteLink: builder.query<string, number | void>({
query: (gid) => ({
headers: {
@@ -211,7 +195,6 @@ export const {
useLazyLeaveChannelQuery,
useLazyCreateInviteLinkQuery,
useCreateInviteLinkQuery,
useLazyGetHistoryMessagesQuery,
useGetChannelQuery,
useUpdateChannelMutation,
useLazyRemoveChannelQuery,
+23 -3
View File
@@ -6,7 +6,8 @@ import { onMessageSendStarted } from "./handlers";
import { normalizeArchiveData } from "../../common/utils";
import baseQuery from "./base.query";
import { Archive, FavoriteArchive, OG } from "../../types/resource";
import { ContentTypeKey, UploadFileResponse } from "../../types/message";
import { ChatMessage, ContentTypeKey, UploadFileResponse } from "../../types/message";
import handleChatMessage from "../../common/hook/useStreaming/chat.handler";
import { RootState } from "../store";
export const messageApi = createApi({
@@ -147,7 +148,25 @@ export const messageApi = createApi({
}
}
}),
loadMoreMessages: builder.query<ChatMessage[], { context?: "channel" | "user", id: number; mid?: number; limit?: number }>({
query: ({ context = "channel", id, mid = "", limit = 100 }) => {
const url = context == "channel" ?
`/group/${id}/history?limit=${limit}${mid ? `&before=${mid}` : ""}`
:
`/user/${id}/history?limit=${limit}${mid ? `&before=${mid}` : ""}`;
return {
url
};
},
async onQueryStarted(params, { dispatch, getState, queryFulfilled }) {
const { data: messages } = await queryFulfilled;
if (messages?.length) {
messages.forEach((msg) => {
handleChatMessage(msg, dispatch, getState() as RootState);
});
}
}
}),
replyWithChatGPT: builder.mutation<{ message: string, prompt: string }, string>({
query: (prompt) => ({
url: `https://official.voce.chat/chatgpt/complete`,
@@ -218,5 +237,6 @@ export const {
useLazyDeleteMessageQuery,
useReadMessageMutation,
useCreateArchiveMutation,
useReplyWithChatGPTMutation
useReplyWithChatGPTMutation,
useLazyLoadMoreMessagesQuery
} = messageApi;
+1 -19
View File
@@ -5,10 +5,8 @@ import { updateAutoDeleteSetting, updateMute } from "../slices/footprint";
import { fillUsers } from "../slices/users";
import BASE_URL, { ContentTypes } from "../config";
import { onMessageSendStarted } from "./handlers";
import handleChatMessage from "../../common/hook/useStreaming/chat.handler";
import { AutoDeleteMsgDTO, BotAPIKey, User, UserCreateDTO, UserDTO, UserForAdmin, UserForAdminDTO } from "../../types/user";
import { ChatMessage, ContentTypeKey, MuteDTO } from "../../types/message";
import { RootState } from "../store";
import { ContentTypeKey, MuteDTO } from "../../types/message";
export const userApi = createApi({
reducerPath: "userApi",
@@ -157,21 +155,6 @@ export const userApi = createApi({
await onMessageSendStarted.call(this, param1, param2, "user");
}
}),
getHistoryMessages: builder.query<ChatMessage[], { id: number; mid?: number; limit?: number }>({
query: ({ id, mid = null, limit = 100 }) => ({
url: mid
? `/user/${id}/history?before=${mid}&limit=${limit}`
: `/user/${id}/history?limit=${limit}`
}),
async onQueryStarted(params, { dispatch, getState, queryFulfilled }) {
const { data: messages } = await queryFulfilled;
if (messages?.length) {
messages.forEach((msg) => {
handleChatMessage(msg, dispatch, getState() as RootState);
});
}
}
}),
})
});
@@ -181,7 +164,6 @@ export const {
useUpdateAvatarByAdminMutation,
useUpdateAutoDeleteMsgMutation,
useCreateUserMutation,
useLazyGetHistoryMessagesQuery,
useUpdateUserMutation,
useUpdateMuteSettingMutation,
useLazyDeleteUserQuery,