Stream Chat Unreal SDK
Loading...
Searching...
No Matches
MessageListWidget.h
1// Copyright 2022 Stream.IO, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Channel/Message.h"
6#include "Common/SPaginateListWidget.h"
7#include "Components/NativeWidgetHost.h"
8#include "CoreMinimal.h"
9#include "MessagePosition.h"
10#include "MessageSide.h"
11#include "MessageWidget.h"
12#include "StreamWidget.h"
13
14#include "MessageListWidget.generated.h"
15
17
21UCLASS()
22class STREAMCHATUI_API UMessageListWidget final : public UStreamWidget
23{
24 GENERATED_BODY()
25
26public:
27 UMessageListWidget();
28
29 DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FPaginatingMessagesDelegate, EPaginationDirection, Direction, EHttpRequestState, RequestState);
31 UPROPERTY(BlueprintAssignable)
32 FPaginatingMessagesDelegate OnPaginatingMessages;
33
34protected:
35 UPROPERTY(meta = (BindWidget))
36 UNativeWidgetHost* ListView;
37
39 UPROPERTY(EditAnywhere, Category = Pagination)
40 int32 Limit = 20;
41
42 UPROPERTY(EditDefaultsOnly, Category = Defaults)
43 TSubclassOf<UMessageWidget> MessageWidgetClass;
44
45 DECLARE_DYNAMIC_DELEGATE_RetVal_ThreeParams(UMessageWidget*, FGetMessageWidget, const FMessage&, Message, EMessageSide, Side, EMessagePosition, Position);
46 UPROPERTY(EditAnywhere, Category = Events)
47 FGetMessageWidget OnGetMessageWidgetEvent;
48
49private:
50 virtual void NativePreConstruct() override;
51 virtual void NativeConstruct() override;
52 virtual void NativeDestruct() override;
53 virtual void ReleaseSlateResources(bool bReleaseChildren) override;
54
55 UWidget* CreateMessageWidget(const FMessageRef&);
56 void Paginate(const EPaginationDirection PaginationDirection, const TFunction<void()> Callback);
57
58 UFUNCTION()
59 void OnMessagesUpdated();
60 UFUNCTION()
61 void ScrollToBottom(const FMessage& Message);
62
63 EMessagePosition GetPosition(const FMessage& Message) const;
64
65 TSharedPtr<SPaginateListWidget<FMessageRef>> PaginateListWidget;
66};
Provide a reference to a UChatChannel to child widgets.
Definition: ChannelContextWidget.h:21
Encapsulates a text bubble, reactions and the mouse hover menu for a message.
Definition: MessageWidget.h:21
Represents a Stream Chat message.
Definition: Message.h:66