Chat
Quản lý tin nhắn chat cục bộ, kênh và peers đã ghép nối. Tất cả thao tác GraphQL được gửi đến POST /graphql.
Định nghĩa kiểu
type ChatItem {
id: ID!
fromId: String! # "me" | peerId
toId: String! # peerId (direct) | "" (channel)
channelId: String! # "" for direct messages
content: String! # JSON-encoded message payload
createdAt: String! # ISO 8601
updatedAt: String!
status: String! # "sent" | "pending" | "failed"
statusData: String! # extra info on failure
}
type ChatChannel {
id: String!
name: String!
owner: String! # "me" | peerId
members: [ChatChannelMember!]!
version: Int!
status: String! # "active" | "left"
createdAt: String!
updatedAt: String!
}
type ChatChannelMember {
id: String!
status: String! # "active" | "pending"
}
type Peer {
id: String!
name: String!
ip: String!
status: String! # "online" | "offline"
port: Int!
deviceType: String! # "phone" | "tablet" | "pc"
createdAt: String!
updatedAt: String!
}
type AppFile {
id: ID!
size: Int! # bytes
mimeType: String!
realPath: String!
fileName: String!
createdAt: String!
updatedAt: String!
}Thao tác
chatItems
Lấy tất cả tin nhắn trong một cuộc trò chuyện. Thêm tiền tố "channel:" hoặc "peer:" vào id.
query GetChatItems($id: String!) {
chatItems(id: $id) {
id fromId toId channelId
content createdAt updatedAt status statusData
}
}latestChatItems
Lấy tin nhắn mới nhất từ mỗi cuộc trò chuyện (kênh + peers). Hữu ích cho việc xây dựng xem trước danh sách cuộc trò chuyện.
query GetLatestChatItems {
latestChatItems {
id fromId toId channelId content createdAt updatedAt status
}
}chatChannels
Liệt kê tất cả kênh chat do thiết bị sở hữu hoặc đã tham gia.
query GetChatChannels {
chatChannels {
id name owner version status createdAt updatedAt
members { id status }
}
}peers
Liệt kê tất cả peers đã biết đã ghép nối với thiết bị này.
query GetPeers {
peers { id name ip status port deviceType createdAt updatedAt }
}deletePeer
Xóa một bản ghi peer khỏi thiết bị này. Không hủy ghép nối ở phía từ xa; sử dụng unpairPeer để hủy ghép nối hai chiều sạch.
mutation DeletePeer($id: ID!) {
deletePeer(id: $id)
}unpairPeer
Hủy ghép nối một thiết bị peer. Xóa trạng thái ghép nối trên thiết bị này và báo hiệu peer từ xa khi có thể truy cập.
mutation UnpairPeer($id: ID!) {
unpairPeer(id: $id)
}appFiles
Danh sách phân trang các tệp được chia sẻ qua chat.
query GetAppFiles($offset: Int!, $limit: Int!) {
appFiles(offset: $offset, limit: $limit) {
id size mimeType realPath fileName createdAt updatedAt
}
}appFileCount
Tổng số tệp được chia sẻ qua chat.
query GetAppFileCount {
appFileCount
}sendChatItem
Gửi tin nhắn đến một kênh hoặc peer. Định dạng toId: "channel:<id>" hoặc "peer:<id>".
mutation SendChatItem($toId: String!, $content: String!) {
sendChatItem(toId: $toId, content: $content) {
id fromId toId channelId content createdAt updatedAt status
}
}deleteChatItem
Xóa tin nhắn chat theo ID.
mutation DeleteChatItem($id: ID!) {
deleteChatItem(id: $id)
}deleteChatItems
Xóa hàng loạt tin nhắn chat khớp với một query (ví dụ "id:msg_x,id:msg_y").
mutation DeleteChatItems($query: String!) {
deleteChatItems(query: $query)
}retryChatItem
Thử gửi lại tin nhắn đã thất bại.
mutation RetryChatItem($id: ID!) {
retryChatItem(id: $id) { id status }
}createChatChannel
Tạo một kênh mã hóa mới do thiết bị này sở hữu.
mutation CreateChatChannel($name: String!) {
createChatChannel(name: $name) {
id name owner version status createdAt
}
}updateChatChannel
Đổi tên kênh chat.
mutation UpdateChatChannel($id: ID!, $name: String!) {
updateChatChannel(id: $id, name: $name) { id name version updatedAt }
}deleteChatChannel
Xóa một kênh và tất cả tin nhắn của nó.
mutation DeleteChatChannel($id: ID!) {
deleteChatChannel(id: $id)
}leaveChatChannel
Rời khỏi một kênh bạn không sở hữu.
mutation LeaveChatChannel($id: ID!) {
leaveChatChannel(id: $id)
}addChatChannelMember
Mời một peer vào kênh bạn sở hữu.
mutation AddMember($id: ID!, $peerId: String!) {
addChatChannelMember(id: $id, peerId: $peerId) {
id members { id status }
}
}removeChatChannelMember
Xóa một thành viên khỏi kênh bạn sở hữu.
mutation RemoveMember($id: ID!, $peerId: String!) {
removeChatChannelMember(id: $id, peerId: $peerId) {
id members { id status }
}
}acceptChatChannelInvite
Chấp nhận lời mời tham gia kênh mà bạn được mời.
mutation AcceptChatChannelInvite($id: ID!) {
acceptChatChannelInvite(id: $id)
}declineChatChannelInvite
Từ chối lời mời kênh đang chờ.
mutation DeclineChatChannelInvite($id: ID!) {
declineChatChannelInvite(id: $id)
}