From f6b96848fdcf8652b1de5b95a21096d5fae25f37 Mon Sep 17 00:00:00 2001 From: rhunk <101876869+rhunk@users.noreply.github.com> Date: Wed, 27 Dec 2023 23:21:44 +0100 Subject: [PATCH] feat: messaging module --- index.d.ts | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/index.d.ts b/index.d.ts index 918d9c4..b63e460 100644 --- a/index.d.ts +++ b/index.d.ts @@ -6,6 +6,16 @@ interface JavaType { newInstance(...args: any[]): any; } +interface SEWrapper { + instanceNonNull(): any; + isPresent(): boolean; + toString(): string; + + getEnumValue(fieldName: string, defaultValue: any): any; + setEnumValue(fieldName: string, value: any /* java.lang.Enum */): void; +} + + declare function logInfo(message: any); declare function logError(message: any, throwable?: any); @@ -170,6 +180,76 @@ declare module "java-interfaces" { function newProxy(javaClass: Class, callback: ((proxy: any, method: any, args: any[]) => any)): any; } +declare module "messaging" { + interface SnapUUID extends SEWrapper { + toBytes(): any; // byte[] + toUUID(): any; // java.util.UUID + } + + interface MessageContent extends SEWrapper { + content: any; // byte[] + contentType: any; + } + + interface UserIdToReaction { + userId: SnapUUID; + reactionId: number; + } + + interface MessageMetadata extends SEWrapper { + createdAt: number, + readAt: number, + playableSnapState: any; + savedBy: SnapUUID[]; + openedBy: SnapUUID[]; + seenBy: SnapUUID[]; + reactions: UserIdToReaction[]; + isSaveable: boolean; + } + + interface MessageDescriptor extends SEWrapper { + messageId: number; + conversationId: SnapUUID; + } + + interface Message extends SEWrapper { + orderKey: number; + senderId: SnapUUID; + messageContent: MessageContent; + messageMetadata: MessageMetadata; + messageDescriptor: MessageDescriptor; + messageState: any + + serialize(): string?; + } + + type ResultCallback = (error?: any) => void; + type MessageResultCallback = (error?: any, message?: Message) => void; + type MessageListResultCallback = (error?: any, messages: Message[]) => void; + + interface ConversationUserIdPair { + readonly conversationId: string; + readonly userId: string; + } + + type MessageUpdate = "read" | "release" | "save" | "unsave" | "erase" | "screenshot" | "screen_record" | "replay" | "reaction" | "remove_reaction" | "revoke_transcription" | "allow_transcription" | "erase_saved_story_media"; + + + function isPresent(): boolean; + function newSnapUUID(uuid: string): SnapUUID; + + function updateMessage(conversationId: string, messageId: number, action: MessageUpdate, callback: ResultCallback): void; + function fetchConversationWithMessagesPaginated(conversationId: string, lastMessageId: number, amount: number, callback: MessageListResultCallback): void; + function fetchConversationWithMessages(conversationId: string, callback: MessageListResultCallback): void; + function fetchMessageByServerId(conversationId: string, serverId: number, callback: MessageResultCallback): void; + function fetchMessagesByServerIds(conversationId: string, serverIds: number[], callback: MessageListResultCallback): void; + function displayedMessages(conversationId: string, lastMessageId: number, callback: ResultCallback): void; + function fetchMessage(conversationId: string, messageId: number, callback: MessageResultCallback): void; + function clearConversation(conversationId: string, callback: ResultCallback): void; + function getOneOnOneConversationIds(userIds: string[], callback: (error?: any, result?: ConversationUserIdPair[]) => void): void; + function sendChatMessage(conversationId: string, message: string, callback: ResultCallback): void; +} + declare const currentSide: "core" | "manager"; declare namespace module {