From 6cf618b15355fdf7ae0768b70bd4b1e15a352995 Mon Sep 17 00:00:00 2001 From: Marcus Pasell <3690498+rickyrombo@users.noreply.github.com> Date: Mon, 3 Apr 2023 18:34:17 -0700 Subject: [PATCH] SDK: Add getBlockers(), getBlockees(), unfurl(), and update getPermissions() --- libs/src/sdk/api/chats/ChatsApi.ts | 74 ++++++++++++++++++++++++++- libs/src/sdk/api/chats/clientTypes.ts | 24 +++++++++ 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/libs/src/sdk/api/chats/ChatsApi.ts b/libs/src/sdk/api/chats/ChatsApi.ts index 5f7d32f9a41..3e5a3e29a9c 100644 --- a/libs/src/sdk/api/chats/ChatsApi.ts +++ b/libs/src/sdk/api/chats/ChatsApi.ts @@ -24,13 +24,16 @@ import type { ChatEvents, ChatGetAllRequest, ChatGetMessagesRequest, + ChatGetPermissionRequest, ChatGetRequest, ChatInviteRequest, ChatMessageRequest, + ChatPermissionResponse, ChatPermitRequest, ChatReactRequest, ChatReadRequest, - TypedCommsResponse + TypedCommsResponse, + UnfurlResponse } from './clientTypes' import WebSocket from 'isomorphic-ws' import EventEmitter from 'events' @@ -191,6 +194,75 @@ export class ChatsApi } } + public async getPermissions(requestParameters?: ChatGetPermissionRequest) { + const query: HTTPQuery = { + timestamp: new Date().getTime() + } + + if (requestParameters?.userIds) { + query['id'] = requestParameters.userIds + } + + const res = await this.signAndSendRequest({ + method: 'GET', + path: '/comms/chats/permissions', + headers: {}, + query + }) + return (await res.json()) as TypedCommsResponse< + Record + > + } + + public async getBlockers() { + const query: HTTPQuery = { + timestamp: new Date().getTime() + } + const response = await this.signAndSendRequest({ + method: 'GET', + path: `/comms/chats/blockers`, + headers: {}, + query + }) + return (await response.json()) as TypedCommsResponse + } + + public async getBlockees() { + const query: HTTPQuery = { + timestamp: new Date().getTime() + } + const response = await this.signAndSendRequest({ + method: 'GET', + path: `/comms/chats/blockees`, + headers: {}, + query + }) + return (await response.json()) as TypedCommsResponse + } + + public async unfurl(requestParameters: { urls: string[] }) { + this.assertNotNullOrUndefined( + requestParameters.urls, + 'requestParameters.urls', + 'unfurl' + ) + this.assertMinLength( + requestParameters.urls, + 'requestParameters.urls', + 'unfurl' + ) + const query: HTTPQuery = { + content: requestParameters.urls + } + const res = await this.request({ + method: 'GET', + path: '/comms/unfurl', + query, + headers: {} + }) + return (await res.json()) as UnfurlResponse[] + } + // #endregion // #region MUTATE diff --git a/libs/src/sdk/api/chats/clientTypes.ts b/libs/src/sdk/api/chats/clientTypes.ts index 50ccfd545f6..4fa4fefc93a 100644 --- a/libs/src/sdk/api/chats/clientTypes.ts +++ b/libs/src/sdk/api/chats/clientTypes.ts @@ -63,6 +63,14 @@ export type ChatPermitRequest = { permit: ChatPermission } +export type ChatValidateCanCreateRequest = { + userIds: string[] +} + +export type ChatGetPermissionRequest = { + userIds?: string[] +} + export type TypedCommsResponse = Omit & { data: T } @@ -78,3 +86,19 @@ export type ChatEvents = { reaction: ChatMessageNullableReaction }) => void } + +export type UnfurlResponse = { + url: string + url_type?: string + site_name?: string + title?: string + description?: string + image?: string + html?: string + favicon?: string +} + +export type ChatPermissionResponse = { + permission: ChatPermission + current_user_has_permission: boolean +}