diff --git a/app/definitions/rest/v1/channels.ts b/app/definitions/rest/v1/channels.ts index 640ade48668..6692f0a9ce8 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 8868ac7de81..966a6759ae8 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 b66b78d2ce2..4473c5d3846 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 552f99b32c5..6eab89db044 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 =>