From 6a148b9e5f1dbf83968798d68d252147a91a20b0 Mon Sep 17 00:00:00 2001 From: Alex Junior Date: Thu, 10 Mar 2022 12:00:50 -0300 Subject: [PATCH] Chore: Migrate REST API - getMessages to Typescript (#3875) --- app/definitions/IMessage.ts | 17 ++++++++++++++++- app/definitions/rest/v1/channels.ts | 10 ++++++++++ app/definitions/rest/v1/groups.ts | 10 ++++++++++ app/definitions/rest/v1/im.ts | 10 ++++++++++ app/lib/rocketchat/services/restApi.ts | 13 +++++++++---- app/views/MessagesView/index.tsx | 3 --- 6 files changed, 55 insertions(+), 8 deletions(-) diff --git a/app/definitions/IMessage.ts b/app/definitions/IMessage.ts index d836400f7..538d4d258 100644 --- a/app/definitions/IMessage.ts +++ b/app/definitions/IMessage.ts @@ -87,6 +87,17 @@ export interface IMessageFromServer { drid?: string; dcount?: number; dml: string | Date; + starred?: + | { + _id: string; + } + | boolean; + pinned?: boolean; + pinnedAt?: string | Date; + pinnedBy?: { + _id: string; + username: string; + }; } export interface ILoadMoreMessage { @@ -106,7 +117,11 @@ export interface IMessage extends IMessageFromServer { emoji?: string; status?: number; pinned?: boolean; - starred?: boolean; + starred?: + | { + _id: string; + } + | boolean; editedBy?: IEditedBy; reactions?: IReaction[]; role?: string; diff --git a/app/definitions/rest/v1/channels.ts b/app/definitions/rest/v1/channels.ts index 7eb2bdb0d..6e2462a2c 100644 --- a/app/definitions/rest/v1/channels.ts +++ b/app/definitions/rest/v1/channels.ts @@ -96,4 +96,14 @@ export type ChannelsEndpoints = { 'channels.removeLeader': { POST: (params: { roomId: string; userId: string }) => {}; }; + 'channels.messages': { + GET: (params: { + roomId: IServerRoom['_id']; + query: { 'mentions._id': { $in: string[] } } | { 'starred._id': { $in: string[] } } | { pinned: boolean }; + offset: number; + sort: { ts: number }; + }) => { + messages: IMessageFromServer[]; + }; + }; }; diff --git a/app/definitions/rest/v1/groups.ts b/app/definitions/rest/v1/groups.ts index 2768b7070..dd032e455 100644 --- a/app/definitions/rest/v1/groups.ts +++ b/app/definitions/rest/v1/groups.ts @@ -72,4 +72,14 @@ export type GroupsEndpoints = { 'groups.leave': { POST: (params: { roomId: string }) => {}; }; + 'groups.messages': { + GET: (params: { + roomId: IServerRoom['_id']; + query: { 'mentions._id': { $in: string[] } } | { 'starred._id': { $in: string[] } } | { pinned: boolean }; + offset: number; + sort: { ts: number }; + }) => { + messages: IMessageFromServer[]; + }; + }; }; diff --git a/app/definitions/rest/v1/im.ts b/app/definitions/rest/v1/im.ts index c320cef30..2383fe503 100644 --- a/app/definitions/rest/v1/im.ts +++ b/app/definitions/rest/v1/im.ts @@ -58,4 +58,14 @@ export type ImEndpoints = { 'im.leave': { POST: (params: { roomId: string }) => {}; }; + 'im.messages': { + GET: (params: { + roomId: IServerRoom['_id']; + query: { 'mentions._id': { $in: string[] } } | { 'starred._id': { $in: string[] } } | { pinned: boolean }; + offset: number; + sort: { ts: number }; + }) => { + messages: IMessageFromServer[]; + }; + }; }; diff --git a/app/lib/rocketchat/services/restApi.ts b/app/lib/rocketchat/services/restApi.ts index a36e82738..cb15da3f1 100644 --- a/app/lib/rocketchat/services/restApi.ts +++ b/app/lib/rocketchat/services/restApi.ts @@ -602,16 +602,21 @@ export const getFiles = (roomId: string, type: SubscriptionType, offset: number) }); }; -export const getMessages = (roomId: string, type: RoomTypes, query: any, offset: number): any => +export const getMessages = ( + roomId: string, + type: SubscriptionType, + query: { 'mentions._id': { $in: string[] } } | { 'starred._id': { $in: string[] } } | { pinned: boolean }, + offset: number +) => { + const t = type as SubscriptionType.DIRECT | SubscriptionType.CHANNEL | SubscriptionType.GROUP; // RC 0.59.0 - // TODO: missing definitions from server - // @ts-ignore - sdk.get(`${roomTypeToApiType(type)}.messages`, { + return sdk.get(`${roomTypeToApiType(t)}.messages`, { roomId, query, offset, sort: { ts: -1 } }); +}; export const getReadReceipts = (messageId: string): any => // RC 0.63.0 diff --git a/app/views/MessagesView/index.tsx b/app/views/MessagesView/index.tsx index d8b2d82df..66070d1f7 100644 --- a/app/views/MessagesView/index.tsx +++ b/app/views/MessagesView/index.tsx @@ -227,7 +227,6 @@ class MessagesView extends React.Component { name: I18n.t('Mentions'), fetchFunc: () => { const { messages } = this.state; - // @ts-ignore return RocketChat.getMessages(this.rid, this.t, { 'mentions._id': { $in: [user.id] } }, messages.length); }, noDataMsg: I18n.t('No_mentioned_messages'), @@ -240,7 +239,6 @@ class MessagesView extends React.Component { name: I18n.t('Starred'), fetchFunc: () => { const { messages } = this.state; - // @ts-ignore return RocketChat.getMessages(this.rid, this.t, { 'starred._id': { $in: [user.id] } }, messages.length); }, noDataMsg: I18n.t('No_starred_messages'), @@ -261,7 +259,6 @@ class MessagesView extends React.Component { name: I18n.t('Pinned'), fetchFunc: () => { const { messages } = this.state; - // @ts-ignore return RocketChat.getMessages(this.rid, this.t, { pinned: true }, messages.length); }, noDataMsg: I18n.t('No_pinned_messages'),