Skip to content

Commit c3c030c

Browse files
feat: [PBE-1666] add query message histories (#1298)
Co-authored-by: Lennart <[email protected]>
1 parent 5dfade6 commit c3c030c

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

src/client.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,10 @@ import {
197197
ReactionSort,
198198
QueryReactionsAPIResponse,
199199
QueryReactionsOptions,
200+
QueryMessageHistoryFilters,
201+
QueryMessageHistorySort,
202+
QueryMessageHistoryOptions,
203+
QueryMessageHistoryResponse,
200204
} from './types';
201205
import { InsightMetrics, postInsights } from './insights';
202206
import { Thread } from './thread';
@@ -3647,4 +3651,23 @@ export class StreamChat<StreamChatGenerics extends ExtendableGenerics = DefaultG
36473651
...options,
36483652
});
36493653
}
3654+
3655+
/**
3656+
* Queries message histories
3657+
* @param filter
3658+
* @param sort
3659+
* @param options Option object, {limit: 10}
3660+
* @returns {APIResponse & QueryMessageHistoryResponse} The message histories
3661+
*/
3662+
async queryMessageHistory(
3663+
filter: QueryMessageHistoryFilters = {},
3664+
sort: QueryMessageHistorySort = [],
3665+
options: QueryMessageHistoryOptions = {},
3666+
): Promise<APIResponse & QueryMessageHistoryResponse> {
3667+
return await this.post<APIResponse & QueryMessageHistoryResponse>(this.baseURL + '/messages/history', {
3668+
filter,
3669+
sort: normalizeQuerySort(sort),
3670+
...options,
3671+
});
3672+
}
36503673
}

src/types.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3089,3 +3089,44 @@ export type PollVotesAPIResponse<StreamChatGenerics extends ExtendableGenerics =
30893089
export type CastVoteAPIResponse<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = {
30903090
vote: PollVote<StreamChatGenerics>;
30913091
};
3092+
3093+
export type QueryMessageHistoryFilters = QueryFilters<
3094+
{
3095+
message_id?:
3096+
| RequireOnlyOne<Pick<QueryFilter<MessageHistoryEntry['message_id']>, '$eq' | '$in'>>
3097+
| PrimitiveFilter<MessageHistoryEntry['message_id']>;
3098+
} & {
3099+
user_id?:
3100+
| RequireOnlyOne<Pick<QueryFilter<MessageHistoryEntry['message_updated_by_id']>, '$eq' | '$in'>>
3101+
| PrimitiveFilter<MessageHistoryEntry['message_updated_by_id']>;
3102+
} & {
3103+
created_at?:
3104+
| RequireOnlyOne<
3105+
Pick<QueryFilter<MessageHistoryEntry['message_updated_at']>, '$eq' | '$gt' | '$lt' | '$gte' | '$lte'>
3106+
>
3107+
| PrimitiveFilter<MessageHistoryEntry['message_updated_at']>;
3108+
}
3109+
>;
3110+
3111+
export type QueryMessageHistorySort = QueryMessageHistorySortBase | Array<QueryMessageHistorySortBase>;
3112+
3113+
export type QueryMessageHistorySortBase = {
3114+
created_at?: AscDesc;
3115+
user_id?: AscDesc;
3116+
};
3117+
3118+
export type QueryMessageHistoryOptions = Pager;
3119+
3120+
export type MessageHistoryEntry<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = {
3121+
message_id: string;
3122+
message_updated_at: string;
3123+
attachments?: Attachment<StreamChatGenerics>[];
3124+
message_updated_by_id?: string;
3125+
text?: string;
3126+
};
3127+
3128+
export type QueryMessageHistoryResponse<StreamChatGenerics extends ExtendableGenerics = DefaultGenerics> = {
3129+
message_history: MessageHistoryEntry<StreamChatGenerics>[];
3130+
next?: string;
3131+
prev?: string;
3132+
};

0 commit comments

Comments
 (0)