From 4089203fd65dcace25399404814b4aac7518733d Mon Sep 17 00:00:00 2001 From: NickWang Date: Mon, 15 May 2023 18:47:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20broadcast?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mixins/message-mixin.ts | 16 ++++++++++++++-- src/mods/types.ts | 4 ++++ src/schemas/message.ts | 13 +++++++++++++ src/schemas/mod.ts | 4 ++++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/mixins/message-mixin.ts b/src/mixins/message-mixin.ts index 6ffbafd0b..1ea086622 100644 --- a/src/mixins/message-mixin.ts +++ b/src/mixins/message-mixin.ts @@ -11,6 +11,8 @@ import type { ImageType, } from '../schemas/image.js' import type { + BroadcastStatus, + BroadcastTargetStatus, MessagePayload, MessagePayloadFilterFunction, MessageQueryFilter, @@ -77,6 +79,16 @@ const messageMixin = (bas abstract messageSendText (conversationId: string, text: string, mentionIdList?: string[]) : Promise abstract messageSendUrl (conversationId: string, urlLinkPayload: UrlLinkPayload) : Promise + abstract createMessageBroadcast(targets: string[], content: PostPayload): Promise + abstract getMessageBroadcastStatus(id: string): Promise<{ + status: BroadcastStatus, + detail: { + contactId?: string, + roomId?: string, + status: BroadcastTargetStatus, + }[] + }> + abstract messageRecall (messageId: string) : Promise /** @@ -144,7 +156,7 @@ const messageMixin = (bas messageList (): string[] { log.verbose('PuppetMessageMixin', 'messageList()') - return [...this.cache.message.keys()] + return [ ...this.cache.message.keys() ] } async messageSearch ( @@ -159,7 +171,7 @@ const messageMixin = (bas try { // make sure the room id has valid payload await this.messagePayload(query.id) - return [query.id] + return [ query.id ] } catch (e) { log.verbose('PuppetMessageMixin', 'messageSearch() payload not found for id "%s"', query.id) return [] diff --git a/src/mods/types.ts b/src/mods/types.ts index 89823aadf..2dbe622d7 100644 --- a/src/mods/types.ts +++ b/src/mods/types.ts @@ -9,6 +9,8 @@ import { FriendshipType, ImageType, MessageType, + BroadcastStatus, + BroadcastTargetStatus, PostType, TapType, sayableTypes, @@ -42,6 +44,8 @@ export { export { ScanStatus, + BroadcastStatus, + BroadcastTargetStatus, type FriendshipAddOptions, YOU, CHAT_EVENT_DICT, diff --git a/src/schemas/message.ts b/src/schemas/message.ts index 6492b44cc..5bafa98f7 100644 --- a/src/schemas/message.ts +++ b/src/schemas/message.ts @@ -164,3 +164,16 @@ export type MessagePayloadFilterFunction = (payload: MessagePayload) => boole /** @hidden */ export type MessagePayloadFilterFactory = (query: MessageQueryFilter) => MessagePayloadFilterFunction + +export enum BroadcastStatus { + Unknown = 0, + Sending = 1, + Sent = 2 +} + +export enum BroadcastTargetStatus { + Unsent = 0, + Sent = 1, + NotFriend = 2, + Occupied = 3, +} diff --git a/src/schemas/mod.ts b/src/schemas/mod.ts index 0e9150080..e75bd1bb3 100644 --- a/src/schemas/mod.ts +++ b/src/schemas/mod.ts @@ -27,6 +27,8 @@ import { type MessagePayloadTo, type MessageQueryFilter, MessageType, + BroadcastStatus, + BroadcastTargetStatus, } from './message.js' import { DirtyType } from './dirty.js' import { @@ -113,6 +115,8 @@ export { isPostPayloadClient, isPostPayloadServer, MessageType, + BroadcastStatus, + BroadcastTargetStatus, PaginationRequest, PaginationResponse, PostType,