From 77b887c8cbacf802f44d4dd5f1f2c9b6cc2d1176 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto Date: Mon, 28 Feb 2022 17:27:28 -0300 Subject: [PATCH 1/4] Chore: Migrate REST API - toggleArchiveRoom to Typescript --- app/definitions/rest/v1/channels.ts | 10 ++++++++++ app/definitions/rest/v1/groups.ts | 10 ++++++++++ app/lib/rocketchat/methods/roomTypeToApiType.ts | 17 ++++++++++++----- app/lib/rocketchat/services/restApi.ts | 11 ++++------- 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/app/definitions/rest/v1/channels.ts b/app/definitions/rest/v1/channels.ts index e507d970e2e..95ffb259c41 100644 --- a/app/definitions/rest/v1/channels.ts +++ b/app/definitions/rest/v1/channels.ts @@ -28,4 +28,14 @@ export type ChannelsEndpoints = { messages: IMessageFromServer[]; }; }; + 'channels.archive': { + POST: (params: { roomId: string }) => { + success: boolean; + }; + }; + 'channels.unarchive': { + POST: (params: { roomId: string }) => { + success: boolean; + }; + }; }; diff --git a/app/definitions/rest/v1/groups.ts b/app/definitions/rest/v1/groups.ts index 8518fcd0503..d86ffa2c5d6 100644 --- a/app/definitions/rest/v1/groups.ts +++ b/app/definitions/rest/v1/groups.ts @@ -22,4 +22,14 @@ export type GroupsEndpoints = { messages: IMessageFromServer[]; }; }; + 'groups.archive': { + POST: (params: { roomId: string }) => { + success: boolean; + }; + }; + 'groups.unarchive': { + POST: (params: { roomId: string }) => { + success: boolean; + }; + }; }; diff --git a/app/lib/rocketchat/methods/roomTypeToApiType.ts b/app/lib/rocketchat/methods/roomTypeToApiType.ts index b66b78d2ce2..155fd0d1191 100644 --- a/app/lib/rocketchat/methods/roomTypeToApiType.ts +++ b/app/lib/rocketchat/methods/roomTypeToApiType.ts @@ -4,17 +4,24 @@ enum ETypes { Groups = 'groups' } -export const types = { +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]; +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; -const roomTypeToApiType = (t: RoomTypes): ApiTypes => types[t]; +const roomTypeToApiType = (t: T): ApiTypes => types[t]; export default roomTypeToApiType; diff --git a/app/lib/rocketchat/services/restApi.ts b/app/lib/rocketchat/services/restApi.ts index b24129af5f2..c3496b003e6 100644 --- a/app/lib/rocketchat/services/restApi.ts +++ b/app/lib/rocketchat/services/restApi.ts @@ -575,17 +575,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 => From 2837933b2c05f213b7c99d79c37405d02fb24889 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto Date: Mon, 28 Feb 2022 17:48:37 -0300 Subject: [PATCH 2/4] minor tweak --- app/lib/rocketchat/methods/roomTypeToApiType.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/rocketchat/methods/roomTypeToApiType.ts b/app/lib/rocketchat/methods/roomTypeToApiType.ts index 155fd0d1191..aa0366fc741 100644 --- a/app/lib/rocketchat/methods/roomTypeToApiType.ts +++ b/app/lib/rocketchat/methods/roomTypeToApiType.ts @@ -22,6 +22,6 @@ type ApiTypes = T extends 'c' ? ETypes.Channels : never; -const roomTypeToApiType = (t: T): ApiTypes => types[t]; +const roomTypeToApiType = (t: T) => types[t]; export default roomTypeToApiType; From fdd6ee50554d56dd854b41916b37b5c3a9dfb76a Mon Sep 17 00:00:00 2001 From: Reinaldo Neto Date: Wed, 2 Mar 2022 15:29:10 -0300 Subject: [PATCH 3/4] removed success param --- app/definitions/rest/v1/channels.ts | 8 ++------ app/definitions/rest/v1/groups.ts | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/app/definitions/rest/v1/channels.ts b/app/definitions/rest/v1/channels.ts index 95ffb259c41..38c79ed5baa 100644 --- a/app/definitions/rest/v1/channels.ts +++ b/app/definitions/rest/v1/channels.ts @@ -29,13 +29,9 @@ export type ChannelsEndpoints = { }; }; 'channels.archive': { - POST: (params: { roomId: string }) => { - success: boolean; - }; + POST: (params: { roomId: string }) => void; }; 'channels.unarchive': { - POST: (params: { roomId: string }) => { - success: boolean; - }; + POST: (params: { roomId: string }) => void; }; }; diff --git a/app/definitions/rest/v1/groups.ts b/app/definitions/rest/v1/groups.ts index d86ffa2c5d6..0d000b8e619 100644 --- a/app/definitions/rest/v1/groups.ts +++ b/app/definitions/rest/v1/groups.ts @@ -23,13 +23,9 @@ export type GroupsEndpoints = { }; }; 'groups.archive': { - POST: (params: { roomId: string }) => { - success: boolean; - }; + POST: (params: { roomId: string }) => void; }; 'groups.unarchive': { - POST: (params: { roomId: string }) => { - success: boolean; - }; + POST: (params: { roomId: string }) => void; }; }; From 46f92111f5f2b19186d43f421596a57c82c96413 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto Date: Wed, 2 Mar 2022 15:31:08 -0300 Subject: [PATCH 4/4] minor tweak --- app/lib/rocketchat/methods/roomTypeToApiType.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/lib/rocketchat/methods/roomTypeToApiType.ts b/app/lib/rocketchat/methods/roomTypeToApiType.ts index aa0366fc741..4473c5d3846 100644 --- a/app/lib/rocketchat/methods/roomTypeToApiType.ts +++ b/app/lib/rocketchat/methods/roomTypeToApiType.ts @@ -4,14 +4,8 @@ enum ETypes { Groups = 'groups' } -export const types: { [K in RoomTypes]: ApiTypes } = { - c: ETypes.Channels, - d: ETypes.Im, - p: ETypes.Groups, - l: ETypes.Channels -}; - export type RoomTypes = 'c' | 'd' | 'p' | 'l'; + type ApiTypes = T extends 'c' ? ETypes.Channels : T extends 'd' @@ -22,6 +16,13 @@ type ApiTypes = T extends 'c' ? ETypes.Channels : never; +export const types: { [K in RoomTypes]: ApiTypes } = { + c: ETypes.Channels, + d: ETypes.Im, + p: ETypes.Groups, + l: ETypes.Channels +}; + const roomTypeToApiType = (t: T) => types[t]; export default roomTypeToApiType;