From af3a6c5da1bc96d5f5b6ef11cfe2e2dabbb422c6 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Wed, 2 Mar 2022 18:19:07 -0300 Subject: [PATCH] Chore: Migrate REST API - toggleArchiveRoom to Typescript (#3791) * Chore: Migrate REST API - toggleArchiveRoom to Typescript * minor tweak * removed success param * minor tweak --- app/definitions/rest/v1/channels.ts | 6 ++++++ app/definitions/rest/v1/groups.ts | 6 ++++++ .../rocketchat/methods/roomTypeToApiType.ts | 20 +++++++++++++------ app/lib/rocketchat/services/restApi.ts | 11 ++++------ 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/app/definitions/rest/v1/channels.ts b/app/definitions/rest/v1/channels.ts index 640ade486..6692f0a9c 100644 --- a/app/definitions/rest/v1/channels.ts +++ b/app/definitions/rest/v1/channels.ts @@ -29,6 +29,12 @@ export type ChannelsEndpoints = { messages: IMessageFromServer[]; }; }; + 'channels.archive': { + POST: (params: { roomId: string }) => void; + }; + 'channels.unarchive': { + POST: (params: { roomId: string }) => void; + }; 'channels.create': { POST: (params: { name: string; diff --git a/app/definitions/rest/v1/groups.ts b/app/definitions/rest/v1/groups.ts index 8868ac7de..966a6759a 100644 --- a/app/definitions/rest/v1/groups.ts +++ b/app/definitions/rest/v1/groups.ts @@ -23,6 +23,12 @@ export type GroupsEndpoints = { messages: IMessageFromServer[]; }; }; + 'groups.archive': { + POST: (params: { roomId: string }) => void; + }; + 'groups.unarchive': { + POST: (params: { roomId: string }) => void; + }; 'groups.create': { POST: (params: { name: string; diff --git a/app/lib/rocketchat/methods/roomTypeToApiType.ts b/app/lib/rocketchat/methods/roomTypeToApiType.ts index b66b78d2c..4473c5d38 100644 --- a/app/lib/rocketchat/methods/roomTypeToApiType.ts +++ b/app/lib/rocketchat/methods/roomTypeToApiType.ts @@ -4,17 +4,25 @@ enum ETypes { Groups = 'groups' } -export const types = { +export type RoomTypes = 'c' | 'd' | 'p' | 'l'; + +type ApiTypes = T extends 'c' + ? ETypes.Channels + : T extends 'd' + ? ETypes.Im + : T extends 'p' + ? ETypes.Groups + : T extends 'l' + ? ETypes.Channels + : never; + +export const types: { [K in RoomTypes]: ApiTypes } = { c: ETypes.Channels, d: ETypes.Im, p: ETypes.Groups, l: ETypes.Channels }; -// TODO: refactor this -export type RoomTypes = keyof typeof types; -type ApiTypes = typeof types[RoomTypes]; - -const roomTypeToApiType = (t: RoomTypes): ApiTypes => types[t]; +const roomTypeToApiType = (t: T) => types[t]; export default roomTypeToApiType; diff --git a/app/lib/rocketchat/services/restApi.ts b/app/lib/rocketchat/services/restApi.ts index 552f99b32..6eab89db0 100644 --- a/app/lib/rocketchat/services/restApi.ts +++ b/app/lib/rocketchat/services/restApi.ts @@ -568,17 +568,14 @@ export const ignoreUser = ({ rid, userId, ignore }: { rid: string; userId: strin // @ts-ignore sdk.get('chat.ignoreUser', { rid, userId, ignore }); -export const toggleArchiveRoom = (roomId: string, t: SubscriptionType, archive: boolean): any => { +export const toggleArchiveRoom = (roomId: string, t: SubscriptionType, archive: boolean) => { + const type = t as SubscriptionType.CHANNEL | SubscriptionType.GROUP; if (archive) { // RC 0.48.0 - // TODO: missing definitions from server - // @ts-ignore - return sdk.post(`${roomTypeToApiType(t)}.archive`, { roomId }); + return sdk.post(`${roomTypeToApiType(type)}.archive`, { roomId }); } // RC 0.48.0 - // TODO: missing definitions from server - // @ts-ignore - return sdk.post(`${roomTypeToApiType(t)}.unarchive`, { roomId }); + return sdk.post(`${roomTypeToApiType(type)}.unarchive`, { roomId }); }; export const hideRoom = (roomId: string, t: RoomTypes): any =>