//
//  KGSNSShare.h
//  KakaoGame
//
//  Created by eric.jung on 23/01/2019.
//
#import <KakaoGame/KGObject.h>
#import "KGJoinerCount.h"

/**
 * @brief SNSShare 이벤트 값 Enum.
 */
typedef NS_ENUM(NSInteger, KGSNSShareEvent)
{
	KGSNSShareEventScreenShot,							/**< 스크린샷 이벤트. */
};

/**
 * @brief KGSNSShare클래스는 SNS를 통한 초대 공유 기능을 제공한다.
 */
@interface KGSNSShare : NSObject

/**
 * @brief 스크린샷을 찍어 페이스북에 공유하는 뷰를 띄운다.(SNS자랑 - 이미지형)
 *
 * @param completionHandler 완료 핸들러. 뷰가 닫힐때 호출된다. [error:뷰 오픈 결과].
 */
+ (void)shareScreenShotWithCompletionHandler:(void(^)(NSError *error))completionHandler;

/**
 @brief SNS공유 관련 이벤트 리스너를 등록한다.<br>
 *
 * @param listener 등록할 리스너 [eventDic:SNSShare 공유 관련 이벤트].
 */
+ (void)registerEventListener:(void(^)(NSInteger eventId))listener;

/**
* @brief 특정 에피소드 코드에 대한 링크를 페이스북에 공유하는 뷰를 띄운다.(SNS자랑 - 링크형)
*
* @param code 에피소드 코드
* @param completionHandler 완료 핸들러. 뷰가 닫힐때 호출된다. [error:뷰 오픈 결과].
*/
+ (void)shareContentsLinkWithCode:(NSString *)code completionHandler:(void(^)(NSError *error))completionHandler;

/**
 * @brief 특정 에피소드 코드에 대한 보상지급 여부를 가져온다.
 *
 * @param code 에피소드 코드
 * @param completionHandler 완료 핸들러. 뷰가 닫힐때 호출된다. [error:뷰 오픈 결과].
 */
+ (void)loadShareRewardInfoWithCode:(NSString *)code completionHandler:(void(^)(NSError *error, BOOL isReward))completionHandler;

/**
 * @brief SNS 초대장 웹뷰를 노출한다.(SNS초대 - 링크형)
 *
 * @param completionHandler 완료 핸들러. 뷰가 닫힐때 호출된다. [error:뷰 오픈 결과].
 */
+ (void)showInvitationViewWithCompletionHandler:(void(^)(NSError *error))completionHandler;

/**
 * @brief 추천코드 입력창을 띄운다.
 *
 * @param completionHandler 완료 핸들러. 뷰가 닫힐때 호출된다. [error:뷰 오픈 결과].
 */
+ (void)showInvitationRewardViewWithCompletionHandler:(void(^)(NSError *error))completionHandler;

/**
 * @brief 추천코드 입력창을 띄운다.
 *
 * @param completionHandler 완료 핸들러. 뷰가 닫힐때 호출된다. [error:뷰 오픈 결과].
 */
+ (void)showNewInvitationRewardViewWithCompletionHandler:(void(^)(NSError *error))completionHandler;

/**
 * @brief SNS공유 버튼에 New 뱃지 노출 여부를 가져온다.
 *
 * @param completionHandler 완료 핸들러. 뷰가 닫힐때 호출된다. [error:뷰 오픈 결과].
 */
+ (void)loadBagdeInfoWithCompletionHandler:(void(^)(NSError *error, BOOL hasNewBadge))completionHandler;

/**
 * @brief SNS공유 초대를 통해 가입한 초대자의 정보를 가져온다.
 *
 * @param completionHandler 완료 핸들러. 뷰가 닫힐때 호출된다. [error:뷰 오픈 결과].
 */
+ (void)loadJoinerCountWithCompletionHandler:(void(^)(NSError *error, KGJoinerCount *joinerCount))completionHandler;

@end
