#
ChannelServiceThe ChannelService
provides data and interaction for the channel list and message list.
#
Type parametersName | Type |
---|---|
T | extends DefaultStreamChatGenerics = DefaultStreamChatGenerics |
#
Properties#
activeChannel$• activeChannel$: Observable
<undefined
| Channel
<T
>>
Emits the currently active channel.
important
If you want to subscribe to channel events, you need to manually reenter Angular's change detection zone, our Change detection guide explains this in detail.
The active channel will always be marked as read when a new message is received
#
Defined in#
activeChannelMessages$• activeChannelMessages$: Observable
<StreamMessage
<T
>[]>
Emits the list of currently loaded messages of the active channel.
#
Defined in#
activeChannelPinnedMessages$• activeChannelPinnedMessages$: Observable
<StreamMessage
<T
>[]>
Emits the list of pinned messages of the active channel.
#
Defined in#
activeParentMessage$• activeParentMessage$: Observable
<undefined
| StreamMessage
<T
>>
Emits the currently selected parent message. If no message is selected, it emits undefined.
#
Defined in#
activeParentMessageId$• activeParentMessageId$: Observable
<undefined
| string
>
Emits the id of the currently selected parent message. If no message is selected, it emits undefined.
#
Defined in#
activeThreadMessages$• activeThreadMessages$: Observable
<StreamMessage
<T
>[]>
Emits the list of currently loaded thread replies belonging to the selected parent message. If there is no currently active thread it emits an empty array.
#
Defined in#
channels$• channels$: Observable
<undefined
| Channel
<T
>[]>
Emits the currently loaded and watched channel list.
important
If you want to subscribe to channel events, you need to manually reenter Angular's change detection zone, our Change detection guide explains this in detail.
Apart from pagination, the channel list is also updated on the following events:
Event type | Default behavior | Custom handler to override |
---|---|---|
channel.deleted | Remove channel from the list | customChannelDeletedHandler |
channel.hidden | Remove channel from the list | customChannelHiddenHandler |
channel.truncated | Updates the channel | customChannelTruncatedHandler |
channel.updated | Updates the channel | customChannelUpdatedHandler |
channel.visible | Adds the channel to the list | customChannelVisibleHandler |
message.new | Moves the channel to top of the list | customNewMessageHandler |
notification.added_to_channel | Adds the new channel to the top of the list and starts watching it | customAddedToChannelNotificationHandler |
notification.message_new | Adds the new channel to the top of the list and starts watching it | customNewMessageNotificationHandler |
notification.removed_from_channel | Removes the channel from the list | customRemovedFromChannelNotificationHandler |
It's important to note that filters don't apply to updates to the list from events.
Our platform documentation covers the topic of channel events in depth.
#
Defined in#
customAddedToChannelNotificationHandler• Optional
customAddedToChannelNotificationHandler: (clientEvent
: ClientEvent
<DefaultStreamChatGenerics
>, channelListSetter
: (channels
: (Channel
<T
> | ChannelResponse
<T
>)[]) => void
) => void
#
Type declaration▸ (clientEvent
, channelListSetter
): void
Custom event handler to call when the user is added to a channel, provide an event handler if you want to override the default channel list ordering
#
ParametersName | Type |
---|---|
clientEvent | ClientEvent <DefaultStreamChatGenerics > |
channelListSetter | (channels : (Channel <T > | ChannelResponse <T >)[]) => void |
#
Returnsvoid
#
Defined in#
customChannelDeletedHandler• Optional
customChannelDeletedHandler: (event
: Event
<DefaultGenerics
>, channel
: Channel
<T
>, channelListSetter
: (channels
: (Channel
<T
> | ChannelResponse
<T
>)[]) => void
, messageListSetter
: (messages
: StreamMessage
<T
>[]) => void
, threadListSetter
: (messages
: StreamMessage
<T
>[]) => void
, parentMessageSetter
: (message
: undefined
| StreamMessage
<T
>) => void
) => void
#
Type declaration▸ (event
, channel
, channelListSetter
, messageListSetter
, threadListSetter
, parentMessageSetter
): void
Custom event handler to call when a channel is deleted, provide an event handler if you want to override the default channel list ordering
#
ParametersName | Type |
---|---|
event | Event <DefaultGenerics > |
channel | Channel <T > |
channelListSetter | (channels : (Channel <T > | ChannelResponse <T >)[]) => void |
messageListSetter | (messages : StreamMessage <T >[]) => void |
threadListSetter | (messages : StreamMessage <T >[]) => void |
parentMessageSetter | (message : undefined | StreamMessage <T >) => void |
#
Returnsvoid
#
Defined in#
customChannelHiddenHandler• Optional
customChannelHiddenHandler: (event
: Event
<DefaultGenerics
>, channel
: Channel
<T
>, channelListSetter
: (channels
: (Channel
<T
> | ChannelResponse
<T
>)[]) => void
, messageListSetter
: (messages
: StreamMessage
<T
>[]) => void
, threadListSetter
: (messages
: StreamMessage
<T
>[]) => void
, parentMessageSetter
: (message
: undefined
| StreamMessage
<T
>) => void
) => void
#
Type declaration▸ (event
, channel
, channelListSetter
, messageListSetter
, threadListSetter
, parentMessageSetter
): void
Custom event handler to call when a channel becomes hidden, provide an event handler if you want to override the default channel list ordering
#
ParametersName | Type |
---|---|
event | Event <DefaultGenerics > |
channel | Channel <T > |
channelListSetter | (channels : (Channel <T > | ChannelResponse <T >)[]) => void |
messageListSetter | (messages : StreamMessage <T >[]) => void |
threadListSetter | (messages : StreamMessage <T >[]) => void |
parentMessageSetter | (message : undefined | StreamMessage <T >) => void |
#
Returnsvoid
#
Defined in#
customChannelTruncatedHandler• Optional
customChannelTruncatedHandler: (event
: Event
<DefaultGenerics
>, channel
: Channel
<T
>, channelListSetter
: (channels
: (Channel
<T
> | ChannelResponse
<T
>)[]) => void
, messageListSetter
: (messages
: StreamMessage
<T
>[]) => void
, threadListSetter
: (messages
: StreamMessage
<T
>[]) => void
, parentMessageSetter
: (message
: undefined
| StreamMessage
<T
>) => void
) => void
#
Type declaration▸ (event
, channel
, channelListSetter
, messageListSetter
, threadListSetter
, parentMessageSetter
): void
Custom event handler to call when a channel is truncated, provide an event handler if you want to override the default channel list ordering
#
ParametersName | Type |
---|---|
event | Event <DefaultGenerics > |
channel | Channel <T > |
channelListSetter | (channels : (Channel <T > | ChannelResponse <T >)[]) => void |
messageListSetter | (messages : StreamMessage <T >[]) => void |
threadListSetter | (messages : StreamMessage <T >[]) => void |
parentMessageSetter | (message : undefined | StreamMessage <T >) => void |
#
Returnsvoid
#
Defined in#
customChannelUpdatedHandler• Optional
customChannelUpdatedHandler: (event
: Event
<DefaultGenerics
>, channel
: Channel
<T
>, channelListSetter
: (channels
: (Channel
<T
> | ChannelResponse
<T
>)[]) => void
, messageListSetter
: (messages
: StreamMessage
<DefaultStreamChatGenerics
>[]) => void
, threadListSetter
: (messages
: StreamMessage
<DefaultStreamChatGenerics
>[]) => void
, parentMessageSetter
: (message
: undefined
| StreamMessage
<DefaultStreamChatGenerics
>) => void
) => void
#
Type declaration▸ (event
, channel
, channelListSetter
, messageListSetter
, threadListSetter
, parentMessageSetter
): void
Custom event handler to call when a channel is updated, provide an event handler if you want to override the default channel list ordering
#
ParametersName | Type |
---|---|
event | Event <DefaultGenerics > |
channel | Channel <T > |
channelListSetter | (channels : (Channel <T > | ChannelResponse <T >)[]) => void |
messageListSetter | (messages : StreamMessage <DefaultStreamChatGenerics >[]) => void |
threadListSetter | (messages : StreamMessage <DefaultStreamChatGenerics >[]) => void |
parentMessageSetter | (message : undefined | StreamMessage <DefaultStreamChatGenerics >) => void |
#
Returnsvoid
#
Defined in#
customChannelVisibleHandler• Optional
customChannelVisibleHandler: (event
: Event
<DefaultGenerics
>, channel
: Channel
<T
>, channelListSetter
: (channels
: (Channel
<T
> | ChannelResponse
<T
>)[]) => void
, messageListSetter
: (messages
: StreamMessage
<T
>[]) => void
, threadListSetter
: (messages
: StreamMessage
<T
>[]) => void
, parentMessageSetter
: (message
: undefined
| StreamMessage
<T
>) => void
) => void
#
Type declaration▸ (event
, channel
, channelListSetter
, messageListSetter
, threadListSetter
, parentMessageSetter
): void
Custom event handler to call when a channel becomes visible, provide an event handler if you want to override the default channel list ordering
#
ParametersName | Type |
---|---|
event | Event <DefaultGenerics > |
channel | Channel <T > |
channelListSetter | (channels : (Channel <T > | ChannelResponse <T >)[]) => void |
messageListSetter | (messages : StreamMessage <T >[]) => void |
threadListSetter | (messages : StreamMessage <T >[]) => void |
parentMessageSetter | (message : undefined | StreamMessage <T >) => void |
#
Returnsvoid
#
Defined in#
customFileDeleteRequest• Optional
customFileDeleteRequest: (url
: string
, channel
: Channel
<T
>) => Promise
<void
>
#
Type declaration▸ (url
, channel
): Promise
<void
>
You can override the default file delete request - override this if you use your own CDN
#
ParametersName | Type |
---|---|
url | string |
channel | Channel <T > |
#
ReturnsPromise
<void
>
#
Defined in#
customFileUploadRequest• Optional
customFileUploadRequest: (file
: File
, channel
: Channel
<T
>) => Promise
<{}>
#
Type declaration▸ (file
, channel
): Promise
<{}>
You can override the default file upload request - you can use this to upload files to your own CDN
#
ParametersName | Type |
---|---|
file | File |
channel | Channel <T > |
#
ReturnsPromise
<{}>
#
Defined in#
customImageDeleteRequest• Optional
customImageDeleteRequest: (url
: string
, channel
: Channel
<T
>) => Promise
<void
>
#
Type declaration▸ (url
, channel
): Promise
<void
>
You can override the default image delete request - override this if you use your own CDN
#
ParametersName | Type |
---|---|
url | string |
channel | Channel <T > |
#
ReturnsPromise
<void
>
#
Defined in#
customImageUploadRequest• Optional
customImageUploadRequest: (file
: File
, channel
: Channel
<T
>) => Promise
<{}>
#
Type declaration▸ (file
, channel
): Promise
<{}>
You can override the default image upload request - you can use this to upload images to your own CDN
#
ParametersName | Type |
---|---|
file | File |
channel | Channel <T > |
#
ReturnsPromise
<{}>
#
Defined in#
customNewMessageHandler• Optional
customNewMessageHandler: (event
: Event
<DefaultGenerics
>, channel
: Channel
<T
>, channelListSetter
: (channels
: (Channel
<T
> | ChannelResponse
<T
>)[]) => void
, messageListSetter
: (messages
: StreamMessage
<T
>[]) => void
, threadListSetter
: (messages
: StreamMessage
<T
>[]) => void
, parentMessageSetter
: (message
: undefined
| StreamMessage
<T
>) => void
) => void
#
Type declaration▸ (event
, channel
, channelListSetter
, messageListSetter
, threadListSetter
, parentMessageSetter
): void
Custom event handler to call if a new message received from a channel that is being watched, provide an event handler if you want to override the default channel list ordering
#
ParametersName | Type |
---|---|
event | Event <DefaultGenerics > |
channel | Channel <T > |
channelListSetter | (channels : (Channel <T > | ChannelResponse <T >)[]) => void |
messageListSetter | (messages : StreamMessage <T >[]) => void |
threadListSetter | (messages : StreamMessage <T >[]) => void |
parentMessageSetter | (message : undefined | StreamMessage <T >) => void |
#
Returnsvoid
#
Defined in#
customNewMessageNotificationHandler• Optional
customNewMessageNotificationHandler: (clientEvent
: ClientEvent
<DefaultStreamChatGenerics
>, channelListSetter
: (channels
: (Channel
<T
> | ChannelResponse
<T
>)[]) => void
) => void
#
Type declaration▸ (clientEvent
, channelListSetter
): void
Custom event handler to call if a new message received from a channel that is not being watched, provide an event handler if you want to override the default channel list ordering
#
ParametersName | Type |
---|---|
clientEvent | ClientEvent <DefaultStreamChatGenerics > |
channelListSetter | (channels : (Channel <T > | ChannelResponse <T >)[]) => void |
#
Returnsvoid
#
Defined in#
customRemovedFromChannelNotificationHandler• Optional
customRemovedFromChannelNotificationHandler: (clientEvent
: ClientEvent
<DefaultStreamChatGenerics
>, channelListSetter
: (channels
: (Channel
<T
> | ChannelResponse
<T
>)[]) => void
) => void
#
Type declaration▸ (clientEvent
, channelListSetter
): void
Custom event handler to call when the user is removed from a channel, provide an event handler if you want to override the default channel list ordering
#
ParametersName | Type |
---|---|
clientEvent | ClientEvent <DefaultStreamChatGenerics > |
channelListSetter | (channels : (Channel <T > | ChannelResponse <T >)[]) => void |
#
Returnsvoid
#
Defined in#
hasMoreChannels$• hasMoreChannels$: Observable
<boolean
>
Emits false
if there are no more pages of channels that can be loaded.
#
Defined in#
jumpToMessage$• jumpToMessage$: Observable
<{}>
Emits the ID of the message the message list should jump to (can be a channel message or thread message)
#
Defined in#
latestMessageDateByUserByChannels$• latestMessageDateByUserByChannels$: Observable
<{ [key: string]: Date
; }>
Emits a map that contains the date of the latest message sent by the current user by channels (this is used to detect if slow mode countdown should be started)
#
Defined in#
messageToQuote$• messageToQuote$: Observable
<undefined
| StreamMessage
<T
>>
Emits the currently selected message to quote
#
Defined in#
usersTypingInChannel$• usersTypingInChannel$: Observable
<UserResponse
<T
>[]>
Emits the list of users that are currently typing in the channel (current user is not included)
#
Defined in#
usersTypingInThread$• usersTypingInThread$: Observable
<UserResponse
<T
>[]>
Emits the list of users that are currently typing in the active thread (current user is not included)
#
Defined in#
Accessors#
shouldMarkActiveChannelAsRead• get
shouldMarkActiveChannelAsRead(): boolean
If set to false, read events won't be sent as new messages are received. If set to true active channel (if any) will immediately be marked as read.
#
Returnsboolean
#
Defined in• set
shouldMarkActiveChannelAsRead(shouldMarkActiveChannelAsRead
): void
If set to false, read events won't be sent as new messages are received. If set to true active channel (if any) will immediately be marked as read.
#
ParametersName | Type |
---|---|
shouldMarkActiveChannelAsRead | boolean |
#
Returnsvoid
#
Defined in#
Methods#
addReaction▸ addReaction(messageId
, reactionType
, customData?
): Promise
<void
>
Adds a reaction to a message.
#
ParametersName | Type | Description |
---|---|---|
messageId | string | The id of the message to add the reaction to |
reactionType | string | The type of the reaction |
customData? | T ["reactionType" ] |
#
ReturnsPromise
<void
>
#
Defined in#
autocompleteMembers▸ autocompleteMembers(searchTerm
): Promise
<ChannelMemberResponse
<T
>[]>
Returns the autocomplete options for current channel members. If the channel has less than 100 members, it returns the channel members, otherwise sends a search request with the given search term.
#
ParametersName | Type | Description |
---|---|---|
searchTerm | string | Text to search for in the names of members |
#
ReturnsPromise
<ChannelMemberResponse
<T
>[]>
The list of members matching the search filter
#
Defined in#
deleteAttachment▸ deleteAttachment(attachmentUpload
): Promise
<void
>
Deletes an uploaded file by URL. If you want to know more about file uploads check out the platform documentation
#
ParametersName | Type | Description |
---|---|---|
attachmentUpload | AttachmentUpload <DefaultStreamChatGenerics > | Attachment to be deleted (output of the AttachmentService ) |
#
ReturnsPromise
<void
>
#
Defined in#
deleteMessage▸ deleteMessage(message
): Promise
<void
>
Deletes the message from the active channel
#
ParametersName | Type | Description |
---|---|---|
message | StreamMessage <DefaultStreamChatGenerics > | Message to be deleted |
#
ReturnsPromise
<void
>
#
Defined in#
deselectActiveChannel▸ deselectActiveChannel(): void
Deselects the currently active (if any) channel
#
Returnsvoid
#
Defined in#
init▸ init(filters
, sort?
, options?
, shouldSetActiveChannel?
): Promise
<Channel
<T
>[]>
Queries the channels with the given filters, sorts and options. More info about channel querying can be found in the platform documentation. By default the first channel in the list will be set as active channel and will be marked as read.
#
ParametersName | Type | Default value | Description |
---|---|---|---|
filters | ChannelFilters <T > | undefined | |
sort? | ChannelSort <T > | undefined | |
options? | ChannelOptions | undefined | |
shouldSetActiveChannel | boolean | true | Decides if the first channel in the result should be made as an active channel, or no channel should be marked as active |
#
ReturnsPromise
<Channel
<T
>[]>
the list of channels found by the query
#
Defined in#
jumpToMessage▸ jumpToMessage(messageId
, parentMessageId?
): Promise
<void
>
Jumps to the selected message inside the message list, if the message is not yet loaded, it'll load the message (and it's surroundings) from the API.
#
ParametersName | Type | Description |
---|---|---|
messageId | string | The ID of the message to be loaded, 'latest' means jump to the latest messages |
parentMessageId? | string | The ID of the parent message if we want to load a thread message |
#
ReturnsPromise
<void
>
#
Defined in#
loadMoreChannels▸ loadMoreChannels(): Promise
<void
>
Loads the next page of channels. The page size can be set in the query option object.
#
ReturnsPromise
<void
>
#
Defined in#
loadMoreMessages▸ loadMoreMessages(direction?
): Promise
<void
>
Loads the next page of messages of the active channel. The page size can be set in the query option object.
#
ParametersName | Type | Default value |
---|---|---|
direction | "older" | "newer" | 'older' |
#
ReturnsPromise
<void
>
#
Defined in#
loadMoreThreadReplies▸ loadMoreThreadReplies(direction?
): Promise
<void
>
Loads the next page of messages of the active thread. The page size can be set in the query option object.
#
ParametersName | Type | Default value |
---|---|---|
direction | "older" | "newer" | 'older' |
#
ReturnsPromise
<void
>
#
Defined in#
pinMessage▸ pinMessage(message
): Promise
<void
>
Pins the given message in the channel
#
ParametersName | Type |
---|---|
message | StreamMessage <DefaultStreamChatGenerics > |
#
ReturnsPromise
<void
>
#
Defined in#
removeReaction▸ removeReaction(messageId
, reactionType
): Promise
<void
>
Removes a reaction from a message.
#
ParametersName | Type | Description |
---|---|---|
messageId | string | The id of the message to remove the reaction from |
reactionType | string | Thr type of reaction to remove |
#
ReturnsPromise
<void
>
#
Defined in#
resendMessage▸ resendMessage(message
): Promise
<void
>
Resends the given message to the active channel
#
ParametersName | Type | Description |
---|---|---|
message | StreamMessage <DefaultStreamChatGenerics > | The message to resend |
#
ReturnsPromise
<void
>
#
Defined in#
reset▸ reset(): void
Resets the activeChannel$
, channels$
and activeChannelMessages$
Observables. Useful when disconnecting a chat user, use in combination with disconnectUser
.
#
Returnsvoid
#
Defined in#
selectMessageToQuote▸ selectMessageToQuote(message
): void
Selects or deselects the current message to quote reply to
#
ParametersName | Type | Description |
---|---|---|
message | undefined | StreamMessage <DefaultStreamChatGenerics > | The message to select, if called with undefined , it deselects the message |
#
Returnsvoid
#
Defined in#
sendAction▸ sendAction(messageId
, formData
, parentMessageId?
): Promise
<void
>
Runs a message action in the current channel. Updates the message list based on the action result (if no message is returned, the message will be removed from the message list).
#
ParametersName | Type |
---|---|
messageId | string |
formData | Record <string , string > |
parentMessageId? | string |
#
ReturnsPromise
<void
>
#
Defined in#
sendMessage▸ sendMessage(text
, attachments?
, mentionedUsers?
, parentId?
, quotedMessageId?
, customData?
): Promise
<void
>
Sends a message to the active channel. The message is immediately added to the message list, if an error occurs and the message can't be sent, the error is indicated in state
of the message.
#
ParametersName | Type | Default value | Description |
---|---|---|---|
text | string | undefined | The text of the message |
attachments | Attachment <T >[] | [] | The attachments |
mentionedUsers | UserResponse <T >[] | [] | Mentioned users |
parentId | undefined | string | undefined | Id of the parent message (if sending a thread reply) |
quotedMessageId | undefined | string | undefined | Id of the message to quote (if sending a quote reply) |
customData | undefined | Partial <T ["messageType" ]> | undefined |
#
ReturnsPromise
<void
>
#
Defined in#
setAsActiveChannel▸ setAsActiveChannel(channel
): void
Sets the given channel
as active and marks it as read.
#
ParametersName | Type |
---|---|
channel | Channel <T > |
#
Returnsvoid
#
Defined in#
setAsActiveParentMessage▸ setAsActiveParentMessage(message
, loadMessagesForm?
): Promise
<void
>
Sets the given message
as an active parent message. If undefined
is provided, it will deleselect the current parent message.
#
ParametersName | Type | Default value |
---|---|---|
message | undefined | StreamMessage <T > | undefined |
loadMessagesForm | "request" | "state" | 'request' |
#
ReturnsPromise
<void
>
#
Defined in#
typingStarted▸ typingStarted(parentId?
): Promise
<void
>
Call this method if user started typing in the active channel
#
ParametersName | Type | Description |
---|---|---|
parentId? | string | The id of the parent message, if user is typing in a thread |
#
ReturnsPromise
<void
>
#
Defined in#
typingStopped▸ typingStopped(parentId?
): Promise
<void
>
Call this method if user stopped typing in the active channel
#
ParametersName | Type | Description |
---|---|---|
parentId? | string | The id of the parent message, if user were typing in a thread |
#
ReturnsPromise
<void
>
#
Defined in#
unpinMessage▸ unpinMessage(message
): Promise
<void
>
Removes the given message from pinned messages
#
ParametersName | Type |
---|---|
message | StreamMessage <DefaultStreamChatGenerics > |
#
ReturnsPromise
<void
>
#
Defined in#
updateMessage▸ updateMessage(message
): Promise
<void
>
Updates the message in the active channel
#
ParametersName | Type | Description |
---|---|---|
message | StreamMessage <T > | Mesage to be updated |
#
ReturnsPromise
<void
>
#
Defined in#
uploadAttachments▸ uploadAttachments(uploads
): Promise
<AttachmentUpload
<DefaultStreamChatGenerics
>[]>
Uploads files to the channel. If you want to know more about file uploads check out the platform documentation.
#
ParametersName | Type | Description |
---|---|---|
uploads | AttachmentUpload <DefaultStreamChatGenerics >[] | the attachments to upload (output of the AttachmentService ) |
#
ReturnsPromise
<AttachmentUpload
<DefaultStreamChatGenerics
>[]>
the result of file upload requests