diff --git a/src/app/services/channel.ts b/src/app/services/channel.ts index 4fb688e9..8e0bf8dc 100644 --- a/src/app/services/channel.ts +++ b/src/app/services/channel.ts @@ -11,6 +11,7 @@ import { onMessageSendStarted } from "./handlers"; import handleChatMessage from "../../common/hook/useStreaming/chat.handler"; import { Channel, CreateChannelDTO } from "../../types/channel"; import { RootState } from "../store"; +import { ContentTypeKey } from "../../types/message"; export const channelApi = createApi({ reducerPath: "channelApi", baseQuery, @@ -118,8 +119,18 @@ export const channelApi = createApi({ } } }), - sendChannelMsg: builder.mutation({ - query: ({ id, content, type = "text", properties = "" }) => ({ + sendChannelMsg: builder.mutation< + number, + { + id: number; + content: string | object; + type: ContentTypeKey; + properties?: object; + from_uid: number; + ignoreLocal: boolean; + } + >({ + query: ({ id, content, type = "text", properties = {} }) => ({ headers: { "content-type": ContentTypes[type], "X-Properties": properties diff --git a/src/app/services/handlers.ts b/src/app/services/handlers.ts index 0cf71a53..794cdb66 100644 --- a/src/app/services/handlers.ts +++ b/src/app/services/handlers.ts @@ -4,6 +4,7 @@ import { ContentTypes } from "../config"; import { addChannelMsg, removeChannelMsg } from "../slices/message.channel"; import { addUserMsg, removeUserMsg } from "../slices/message.user"; import { addMessage, removeMessage } from "../slices/message"; +// import { ContentType } from "../../types/message"; export const onMessageSendStarted = async ( { diff --git a/src/types/channel.ts b/src/types/channel.ts index 39923992..f455bda4 100644 --- a/src/types/channel.ts +++ b/src/types/channel.ts @@ -1,3 +1,4 @@ +//call `group` in backend import { ContentType } from "./message"; export interface ChannelMember {} diff --git a/src/types/message.ts b/src/types/message.ts index c03fe4fc..e82592f4 100644 --- a/src/types/message.ts +++ b/src/types/message.ts @@ -1 +1,2 @@ export type ContentType = "text/plain" | "text/markdown" | "vocechat/file" | "vocechat/archive"; +export type ContentTypeKey = "text" | "markdown" | "file" | "archive"; diff --git a/src/types/resource.ts b/src/types/resource.ts new file mode 100644 index 00000000..90778e73 --- /dev/null +++ b/src/types/resource.ts @@ -0,0 +1,30 @@ +export interface ArchiveUser { + name: string; + avatar?: number; +} +export interface ArchiveMessage { + from_user: number; + created_at: number; + mid: number; + source: { uid: number } | { gid: number }; + properties?: object; + content_type: string; + content?: string; + file_id?: number; + thumbnail_id?: number; +} +export interface Archive { + users: ArchiveUser[]; + messages: ArchiveMessage[]; + num_attachments: number; +} +// 上传文件API响应 +export interface UploadResponse { + path: string; + size: number; + hash: string; + image_properties?: { + width: number; + height: number; + }; +} diff --git a/src/types/server.ts b/src/types/server.ts index d21e33b2..96554d4d 100644 --- a/src/types/server.ts +++ b/src/types/server.ts @@ -1,3 +1,4 @@ +// call `organization` in backend import { User } from "./auth"; export interface Server {