@microsoft/mgt-chat
Version:
Chat component for providing Teams conversations via a React component built using the ACS UI library
30 lines (25 loc) • 1.13 kB
text/typescript
import { IGraph } from '@microsoft/mgt-element';
import { Chat, ChatMessage } from '@microsoft/microsoft-graph-types';
export type MessageCollection = {
'@odata.nextLink': string;
nextLink: string;
value: ChatMessage[];
};
export const loadChat = async (graph: IGraph, chatId: string): Promise<Chat> =>
(await graph.api(`/chats/${chatId}?$expand=members`).get()) as Chat;
export const loadChatThread = async (
graph: IGraph,
chatId: string,
messageCount: number
): Promise<MessageCollection> => {
const response = (await graph.api(`/chats/${chatId}/messages`).top(messageCount).get()) as MessageCollection;
// split the nextLink on version to maintain a relative path
response.nextLink = response['@odata.nextLink']?.split(graph.version)[1];
return response;
};
export const loadMoreChatMessages = async (graph: IGraph, nextLink: string): Promise<MessageCollection> => {
const response = (await graph.api(nextLink).get()) as MessageCollection;
// split the nextLink on version to maintain a relative path
response.nextLink = response['@odata.nextLink']?.split(graph.version)[1];
return response;
};