diff --git a/src/client.ts b/src/client.ts index 73232b7e7a..f56373f8c7 100644 --- a/src/client.ts +++ b/src/client.ts @@ -179,6 +179,8 @@ import { QuerySegmentTargetsFilter, SortParam, GetMessageOptions, + BlockUserAPIResponse, + GetBlockedUsersAPIResponse, QueryVotesFilters, VoteSort, CreatePollAPIResponse, @@ -201,6 +203,7 @@ import { QueryMessageHistorySort, QueryMessageHistoryOptions, QueryMessageHistoryResponse, + BlockUsersAPIResponse, } from './types'; import { InsightMetrics, postInsights } from './insights'; import { Thread } from './thread'; @@ -2188,7 +2191,24 @@ export class StreamChat(this.baseURL + '/users/block', { + blocked_user_id: blockedUserID, + ...(user_id ? { user_id } : {}), + }); + } + async getBlockedUsers(user_id?: string) { + return await this.get(this.baseURL + '/users/block', { + ...(user_id ? { user_id } : {}), + }); + } + async unBlockUser(blockedUserID: string, userID?: string) { + return await this.post(this.baseURL + '/users/unblock', { + blocked_user_id: blockedUserID, + ...(userID ? { user_id: userID } : {}), + }); + } /** muteUser - mutes a user * * @param {string} targetID diff --git a/src/types.ts b/src/types.ts index ea2c4aa2e0..35b20a889a 100644 --- a/src/types.ts +++ b/src/types.ts @@ -697,6 +697,29 @@ export type MuteUserResponse; }; +export type BlockUserResponse = APIResponse & { + blocked_by_user_id: string; + blocked_user_id: string; + created_at: string; +}; + +export type BlockUsersAPIResponse = APIResponse & { + blocked_user: BlockUserResponse[]; +}; + +export type GetBlockedUsersAPIResponse = APIResponse & { + blocks: BlockedUser[]; +}; +export type BlockedUser = APIResponse & { + blocked_user: UserResponse; + blocked_user_id: string; + + timestamp: string; + user: UserResponse; + + user_id: string; +}; + export type OwnUserBase = { channel_mutes: ChannelMute[]; devices: Device[]; @@ -2040,6 +2063,7 @@ export type ChannelConfigWithInfo< export type ChannelData< StreamChatGenerics extends ExtendableGenerics = DefaultGenerics > = StreamChatGenerics['channelType'] & { + blocked?: boolean; members?: string[]; name?: string; };