82 static UChatChannel* Create(UObject* Outer,
const TSharedRef<FChatApi>,
const TSharedRef<IChatSocket>);
91 void Delete(TFunction<
void()> Callback = {})
const;
99 void PartialUpdate(
const TSharedRef<FJsonObject>& Set = {},
const TArray<FString>& Unset = {}, TFunction<void()> Callback = {});
107 void Update(
const FAdditionalFields& Data,
const TOptional<FMessage>& Message = {}, TFunction<void()> Callback = {});
118 bool bHardDelete =
false,
119 const TOptional<FDateTime>& TruncatedAt = {},
120 const TOptional<FMessage>& Message = {},
121 bool bSkipPush =
false,
122 TFunction<void()> Callback = {});
135 const TArray<FUserSortOption>& Sort = {},
137 TFunction<void(
const TArray<FMember>&)> Callback = {});
145 void AddMembers(
const TArray<FString>& MemberIds,
const TOptional<FMessage>& Message = {}, TFunction<void()> Callback = {});
153 void RemoveMembers(
const TArray<FString>& MemberIds,
const TOptional<FMessage>& Message = {}, TFunction<void()> Callback = {});
161 void Hide(
bool bClearHistory =
false, TFunction<
void()> Callback = {})
const;
167 void Show(TFunction<
void()> Callback = {})
const;
173 void StopWatching(TFunction<
void()> Callback = {})
const;
176 UPROPERTY(BlueprintReadOnly, Category =
"Stream Chat|Channel")
180 UPROPERTY(BlueprintReadOnly, Category = "Stream Chat|Channel")
197 template <
class TEvent>
198 void SendEvent(
const TEvent&);
201 template <
class TEvent>
202 FDelegateHandle On(TEventDelegate<TEvent> Callback);
211 template <
class TEvent,
class UserClass>
212 typename TEnableIf<TIsDerivedFrom<UserClass, UObject>::IsDerived, FDelegateHandle>
::Type On(
214 TEventDelegateUObjectMethodPtr<TEvent, UserClass> Method);
224 template <
class TEvent,
class UserClass>
225 typename TEnableIf<!TIsDerivedFrom<UserClass, UObject>::IsDerived, FDelegateHandle>
::Type On(
227 TEventDelegateSpMethodPtr<TEvent, UserClass> Method);
236 template <
class TEvent,
typename FunctorType,
typename... VarTypes>
237 typename TEnableIf<TIsInvocable<FunctorType,
const TEvent&, VarTypes...>::Value, FDelegateHandle>
::Type On(FunctorType&& Functor, VarTypes... Vars);
245 template <
class TEvent>
246 bool Unsubscribe(FDelegateHandle)
const;
249#pragma endregion Event
251#pragma region Message
263 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Message", DisplayName =
"Send Message", meta = (Latent, WorldContext = WorldContextObject, LatentInfo = LatentInfo))
264 void SendMessageBP(
const FMessage& Message,
const UObject* WorldContextObject, FLatentActionInfo LatentInfo,
bool& bSuccess);
265 void SendMessage(
const FMessage& Message,
const TFunction<
void(
const bool& bSuccess)> = {});
279 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Attachment", DisplayName =
"Upload File", meta = (Latent, WorldContext = WorldContextObject, LatentInfo = LatentInfo))
281 const FString& FileName,
282 const TArray<uint8>& Content,
283 const UObject* WorldContextObject,
284 FLatentActionInfo LatentInfo,
286 void UploadFile(
const FString& FileName,
const TArray<uint8>& Content,
const TFunction<
void(
const FAttachment&)> Callback = {});
298 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Attachment", DisplayName =
"Upload Image", meta = (Latent, WorldContext = WorldContextObject, LatentInfo = LatentInfo))
300 const FString& FileName,
301 const TArray<uint8>& Content,
302 const UObject* WorldContextObject,
303 FLatentActionInfo LatentInfo,
305 void UploadImage(
const FString& FileName,
const TArray<uint8>& Content,
const TFunction<
void(
const FAttachment&)> Callback = {});
313 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Attachment", DisplayName =
"Delete Attachment", meta = (Latent, WorldContext = WorldContextObject, LatentInfo = LatentInfo))
314 void DeleteAttachmentBP(
const FAttachment& Attachment,
const UObject* WorldContextObject, FLatentActionInfo LatentInfo,
bool& bSuccess);
315 void DeleteAttachment(
const FAttachment& Attachment,
const TFunction<
void(
const bool& bSuccess)> Callback = {});
321 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Message", DisplayName =
"Get Message", meta = (Latent, WorldContext = WorldContextObject, LatentInfo = LatentInfo))
322 void GetMessageBP(
const FString& MessageId,
const UObject* WorldContextObject, FLatentActionInfo LatentInfo,
FMessage& OutMessage);
323 void GetMessage(
const FString& MessageId,
const TFunction<
void(
const FMessage&)> Callback = {});
330 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Message")
331 void UpdateMessage(const
FMessage& Message);
345 UFUNCTION(BlueprintCallable, Category = "Stream Chat|Channel|Message")
346 void ResendMessage(const
FMessage& Message);
356 UFUNCTION(BlueprintCallable, Category = "Stream Chat|Channel|Message")
357 void DeleteMessage(const
FMessage& Message);
367 void QueryAdditionalMessages(EPaginationDirection Direction = EPaginationDirection::Top, int32 Limit = 20, TFunction<
void()> Callback = {});
373 void MarkRead(
const TOptional<FMessage>& Message = {});
378 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Message", meta = (AutoCreateRefTerm = Message))
379 void MarkRead(
const FMessage& Message);
382 void MarkReadLocal();
395 const TOptional<FMessagePaginationOptions> MessagePagination = {},
396 const TOptional<FUserPaginationOptions> MemberPagination = {},
397 const TOptional<FUserPaginationOptions> WatcherPagination = {},
398 TFunction<void()> Callback = {});
412 const TOptional<FString>&
Query = {},
413 const TOptional<FFilter>& MessageFilter = {},
414 const TArray<FMessageSortOption>& Sort = {},
415 TOptional<uint32> MessageLimit = {},
416 TFunction<void(
const TArray<FMessage>&)> Callback = {})
const;
429 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel", meta = (Latent, WorldContext = WorldContextObject, LatentInfo = LatentInfo, AutoCreateRefTerm =
"Sort,MessageFilter"))
431 const FString&
Query,
435 const UObject* WorldContextObject,
436 FLatentActionInfo LatentInfo,
439 DECLARE_DYNAMIC_MULTICAST_DELEGATE(FMessagesUpdatedDelegate);
441 UPROPERTY(BlueprintAssignable, Category = "Stream Chat|Channel")
442 FMessagesUpdatedDelegate MessagesUpdated;
444 DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMessageDelegate, const
FMessage&, Messages);
446 UPROPERTY(BlueprintAssignable, Category = "Stream Chat|Channel")
447 FMessageDelegate MessageSent;
450 UPROPERTY(BlueprintAssignable, Category = "Stream Chat|Channel")
451 FMessageDelegate MessageReceived;
453 DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FUnreadChangedDelegate, int32, UnreadCount);
455 UPROPERTY(BlueprintAssignable, Category = "Stream Chat|Channel")
456 FUnreadChangedDelegate UnreadChanged;
460 void MarkRead(const TOptional<FString>& MessageId);
471 void UpdateUnread(const
FUserRef& User, int32 UnreadCount, const FDateTime& LastRead);
474#pragma endregion Message
496 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Thread", DisplayName =
"Send Reply", meta = (Latent, WorldContext = WorldContextObject, LatentInfo = LatentInfo))
500 bool bAlsoSendInChannel,
501 const UObject* WorldContextObject,
502 FLatentActionInfo LatentInfo,
507 bool bAlsoSendInChannel =
false,
508 const TFunction<
void(
const bool& bSuccess)> Callback = {});
520 void QueryReplies(
const FMessage& ParentMessage, int32 Limit = 20, TFunction<
void(
const TArray<FMessage>&)> Callback = {});
530 void QueryAdditionalReplies(
const FMessage& ParentMessage, int32 Limit = 20, TFunction<
void(
const TArray<FMessage>&)> Callback = {});
533 const FMessages& GetReplies(
const FMessage& ParentMessage)
const;
540 UFUNCTION(BlueprintPure, Category =
"Stream Chat|Channel|Thread", DisplayName =
"Get Replies")
543 DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FRepliesUpdatedDelegate, const FString&,
ParentMessageId);
546 UPROPERTY(BlueprintAssignable, Category = "Stream Chat|Channel|Thread")
547 FRepliesUpdatedDelegate RepliesUpdated;
553#pragma endregion Thread
555#pragma region Reaction
570 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Reaction")
571 FReaction SendReaction(const
FMessage& Message, const FName& ReactionType, int32 Score = 1,
bool bEnforceUnique = false);
580 void GetReactions(const
FMessage& Message, const
FPaginationOptions& Pagination = {}, TFunction<void(
const TArray<FReaction>&)> Callback = {});
588 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Reaction")
597#pragma endregion Reaction
609 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Typing", meta = (AdvancedDisplay =
ParentMessageId))
617 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Typing", meta = (AdvancedDisplay =
ParentMessageId))
620 DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FTypingIndicatorDelegate, ETypingIndicatorState, TypingState,
const FUserRef&, User);
622 UPROPERTY(BlueprintAssignable)
623 FTypingIndicatorDelegate OnTypingIndicator;
625 DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FThreadTypingIndicatorDelegate, ETypingIndicatorState, TypingState, const
FUserRef&, User, const FString&,
ParentMessageId);
628 UPROPERTY(BlueprintAssignable)
629 FThreadTypingIndicatorDelegate OnThreadTypingIndicator;
636 float TypingTimeout = 2.f;
637 TOptional<FDateTime> LastKeystrokeAt;
638 FTimerHandle TypingTimerHandle;
641#pragma endregion Typing
643#pragma region Moderation
658 UFUNCTION(BlueprintCallable, BlueprintPure =
false, Category =
"Stream Chat|Channel|Moderation", DisplayName =
"Ban Member")
659 void BanMemberBP(const
FUserRef& User, FTimespan Timeout, FString Reason,
bool bIpBan) const;
660 void BanMember(const
FUserRef& User, const TOptional<FTimespan>& Timeout = {},
const TOptional<FString>& Reason = {},
bool bIpBan =
false)
const;
666 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Moderation")
667 void UnbanMember(const
FUserRef& User) const;
676 UFUNCTION(BlueprintCallable, BlueprintPure = false, Category = "Stream Chat|Channel|Moderation", DisplayName = "Shadow Ban Member")
677 void ShadowBanMemberBP(const
FUserRef& User, FTimespan Timeout) const;
678 void ShadowBanMember(const
FUserRef& User, const TOptional<FTimespan>& Timeout = {})
const;
684 UFUNCTION(BlueprintCallable, BlueprintPure =
false, Category =
"Stream Chat|Channel|Moderation")
685 void ShadowUnbanMember(const
FUserRef& User) const;
691 UFUNCTION(BlueprintCallable, Category = "Stream Chat|Channel|Moderation", DisplayName = "Mute")
692 void MuteBP(FTimespan Timeout);
693 void Mute(const TOptional<FTimespan>& Timeout = {});
698 UFUNCTION(BlueprintCallable, Category =
"Stream Chat|Channel|Moderation")
704 UFUNCTION(BlueprintPure, Category = "Stream Chat|Channel|Moderation")
705 bool IsMuted() const;
710 UFUNCTION(BlueprintCallable, Category = "Stream Chat|Channel|Moderation")
711 void EnableSlowMode(FTimespan Cooldown);
716 UFUNCTION(BlueprintCallable, Category = "Stream Chat|Channel|Moderation")
717 void DisableSlowMode();
724#pragma endregion Moderation