চ্যাট
স্থানীয় চ্যাট বার্তা, চ্যানেল এবং পেয়ার করা peers পরিচালনা করুন। সমস্ত GraphQL অপারেশন POST /graphql-এ পাঠানো হয়।
টাইপ ডেফিনিশন
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!
}অপারেশন
chatItems
একটি কথোপকথনের সমস্ত বার্তা পান। id-এর আগে "channel:" বা "peer:" যোগ করুন।
query GetChatItems($id: String!) {
chatItems(id: $id) {
id fromId toId channelId
content createdAt updatedAt status statusData
}
}latestChatItems
প্রতিটি কথোপকথনের (চ্যানেল + peers) সর্বশেষ বার্তা পান। কথোপকথন তালিকা প্রিভিউ তৈরির জন্য উপযোগী।
query GetLatestChatItems {
latestChatItems {
id fromId toId channelId content createdAt updatedAt status
}
}chatChannels
ডিভাইসের মালিকানাধীন বা যুক্ত সমস্ত চ্যাট চ্যানেল তালিকাভুক্ত করুন।
query GetChatChannels {
chatChannels {
id name owner version status createdAt updatedAt
members { id status }
}
}peers
এই ডিভাইসের সাথে পেয়ার করা সমস্ত পরিচিত peers তালিকাভুক্ত করুন।
query GetPeers {
peers { id name ip status port deviceType createdAt updatedAt }
}deletePeer
এই ডিভাইস থেকে একটি peer রেকর্ড মুছুন। রিমোট পক্ষে আনপেয়ার করে না; পরিষ্কার দ্বিপাক্ষিক আনপেয়ারের জন্য unpairPeer ব্যবহার করুন।
mutation DeletePeer($id: ID!) {
deletePeer(id: $id)
}unpairPeer
একটি peer ডিভাইস আনপেয়ার করুন। এই ডিভাইসে পেয়ারিং স্টেট মুছে দেয় এবং অ্যাক্সেসযোগ্য হলে রিমোট peer-কে সিগন্যাল করে।
mutation UnpairPeer($id: ID!) {
unpairPeer(id: $id)
}appFiles
চ্যাটের মাধ্যমে শেয়ার করা ফাইলের পেজিনেটেড তালিকা।
query GetAppFiles($offset: Int!, $limit: Int!) {
appFiles(offset: $offset, limit: $limit) {
id size mimeType realPath fileName createdAt updatedAt
}
}appFileCount
চ্যাটের মাধ্যমে শেয়ার করা ফাইলের মোট সংখ্যা।
query GetAppFileCount {
appFileCount
}sendChatItem
একটি চ্যানেল বা peer-এ বার্তা পাঠান। toId ফরম্যাট: "channel:<id>" বা "peer:<id>"।
mutation SendChatItem($toId: String!, $content: String!) {
sendChatItem(toId: $toId, content: $content) {
id fromId toId channelId content createdAt updatedAt status
}
}deleteChatItem
ID দ্বারা একটি চ্যাট বার্তা মুছুন।
mutation DeleteChatItem($id: ID!) {
deleteChatItem(id: $id)
}deleteChatItems
একটি query-এর সাথে মিলে যাওয়া চ্যাট বার্তা বাল্ক-ডিলিট করুন (যেমন "id:msg_x,id:msg_y")।
mutation DeleteChatItems($query: String!) {
deleteChatItems(query: $query)
}retryChatItem
ব্যর্থ বার্তা আবার পাঠান।
mutation RetryChatItem($id: ID!) {
retryChatItem(id: $id) { id status }
}createChatChannel
এই ডিভাইসের মালিকানাধীন একটি নতুন এনক্রিপ্টেড চ্যানেল তৈরি করুন।
mutation CreateChatChannel($name: String!) {
createChatChannel(name: $name) {
id name owner version status createdAt
}
}updateChatChannel
একটি চ্যাট চ্যানেল পুনঃনামকরণ করুন।
mutation UpdateChatChannel($id: ID!, $name: String!) {
updateChatChannel(id: $id, name: $name) { id name version updatedAt }
}deleteChatChannel
একটি চ্যানেল এবং এর সমস্ত বার্তা মুছুন।
mutation DeleteChatChannel($id: ID!) {
deleteChatChannel(id: $id)
}leaveChatChannel
আপনার মালিকানাধীন নয় এমন একটি চ্যানেল ছেড়ে দিন।
mutation LeaveChatChannel($id: ID!) {
leaveChatChannel(id: $id)
}addChatChannelMember
আপনার মালিকানাধীন চ্যানেলে একটি peer-কে আমন্ত্রণ জানান।
mutation AddMember($id: ID!, $peerId: String!) {
addChatChannelMember(id: $id, peerId: $peerId) {
id members { id status }
}
}removeChatChannelMember
আপনার মালিকানাধীন চ্যানেল থেকে একজন সদস্য সরান।
mutation RemoveMember($id: ID!, $peerId: String!) {
removeChatChannelMember(id: $id, peerId: $peerId) {
id members { id status }
}
}acceptChatChannelInvite
আপনাকে আমন্ত্রণ জানানো চ্যানেলে যোগ দিতে আমন্ত্রণ গ্রহণ করুন।
mutation AcceptChatChannelInvite($id: ID!) {
acceptChatChannelInvite(id: $id)
}declineChatChannelInvite
অমীমাংসিত চ্যানেল আমন্ত্রণ প্রত্যাখ্যান করুন।
mutation DeclineChatChannelInvite($id: ID!) {
declineChatChannelInvite(id: $id)
}