Stream Chat Unreal SDK
Loading...
Searching...
No Matches
PaginateScrollWidget.h
1// Copyright 2022 Stream.IO, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Components/ScrollBox.h"
6#include "CoreMinimal.h"
7#include "StreamWidget.h"
8
9#include "PaginateScrollWidget.generated.h"
10
14UCLASS()
15class STREAMCHATUI_API UPaginateScrollWidget : public UStreamWidget
16{
17 GENERATED_BODY()
18
19public:
21 UPROPERTY(EditAnywhere, Category = Pagination)
22 int32 Limit = 20;
23
24 DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FPaginatingMessagesDelegate, EPaginationDirection, Direction, EHttpRequestState, RequestState);
26 UPROPERTY(BlueprintAssignable)
27 FPaginatingMessagesDelegate OnPaginatingMessages;
28
29protected:
30 virtual void NativeConstruct() override;
31 virtual void NativeDestruct() override;
32
34 virtual void SetChildren(const TArray<UWidget*>&);
35
37 virtual void Paginate(EPaginationDirection Directions, TFunction<void()> Callback)
38 {
39 }
40
41 UPROPERTY(meta = (BindWidget))
42 UScrollBox* ScrollBox;
43
44 // If the scroll offset is below this value, then new messages will be fetched
45 UPROPERTY(EditDefaultsOnly, Category = Defaults)
46 float PaginateScrollThreshold = 100.f;
47
48 // The end of the scroll box which causes pagination to be triggered
49 UPROPERTY(EditDefaultsOnly, Category = Defaults)
50 EPaginationDirection PaginationDirection = EPaginationDirection::Bottom;
51
52private:
53 UFUNCTION()
54 void OnUserScroll(float CurrentOffset);
55 void SetPaginationRequestState(EHttpRequestState, EPaginationDirection);
56 EPaginationDirection GetDirections() const;
57
58 EPaginationDirection EndedPaginationDirections = EPaginationDirection::None;
59 EHttpRequestState PaginationRequestState = EHttpRequestState::Ended;
60};
@ None
Do nothing.