#pragma once

#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "TabWidgetData.h"
#include "EInboxTab.h"
#include "InboxViewInterface.generated.h"

class UInboxItemViewData;

UINTERFACE(Blueprintable)
class DBDUIVIEWINTERFACES_API UInboxViewInterface : public UInterface
{
	GENERATED_BODY()
};

class DBDUIVIEWINTERFACES_API IInboxViewInterface : public IInterface
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetTabsData(const TArray<FTabWidgetData>& tabsData, const EInboxTab selectedTab);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetTabNotificationIcon(const EInboxTab tab, const bool showNotificationIcon);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetSupportMessageText(const FText& supportMessage);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetSelectedItem(const UInboxItemViewData* viewData, const EInboxTab tab);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetLoading(const EInboxTab tab);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetError(const EInboxTab tab);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetEmpty(const EInboxTab tab);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetData(const EInboxTab tab, const TArray<UInboxItemViewData*>& data);

};
