//
//  AppStep.swift
//  SodaLive
//
//  Created by klaus on 2023/08/09.
//

import StoreKit

enum AppStep {
    case splash
    
    case main
    
    case signUp
    
    case findPassword
    
    case textMessageDetail(messageItem: TextMessageItem, messageBox: MessageFilterTab, refresh: () -> Void)
    
    case writeTextMessage(userId: Int?, nickname: String?)
    
    case writeVoiceMessage(userId: Int?, nickname: String?, onRefresh: () -> Void)
    
    case settings
    
    case notices
    
    case noticeDetail(notice: NoticeItem)
    
    case events
    
    case eventDetail(event: EventItem)
    
    case terms
    
    case privacy
    
    case notificationSettings
    
    case contentViewSettings
    
    case signOut
    
    case canStatus(refresh: () -> Void)
    
    case canCharge(refresh: () -> Void, afterCompletionToGoBack: Bool = false)
    
    case canPayment(canProduct: SKProduct, refresh: () -> Void, afterCompletionToGoBack: Bool = false)
    
    case canPgPayment(canResponse: GetCanResponse, refresh: () -> Void, afterCompletionToGoBack: Bool = false)
    
    case liveReservation
    
    case liveReservationCancel(reservationId: Int)
    
    case serviceCenter
    
    case createContent
    
    case modifyContent(contentId: Int)
    
    case contentListAll(userId: Int)
    
    case contentDetail(contentId: Int)
    
    case liveReservationComplete(response: MakeLiveReservationResponse)
    
    case creatorDetail(userId: Int)
    
    case followerList(userId: Int)
    
    case userProfileDonationAll(userId: Int)
    
    case userProfileFanTalkAll(userId: Int)
    
    case createLive(
        timeSettingMode: LiveRoomCreateViewModel.TimeSettingMode,
        onSuccess: (CreateLiveRoomResponse) -> Void
    )
    
    case liveNowAll(onClickParticipant: (Int) -> Void)
    
    case liveReservationAll(
        onClickReservation: (Int) -> Void,
        onClickStart: (Int) -> Void,
        onClickCancel: () -> Void,
        onTapCreateLive: () -> Void
    )
    
    case modifyLive(room: GetRoomDetailResponse)
    
    case liveDetail(
        roomId: Int,
        onClickParticipant: () -> Void,
        onClickReservation: () -> Void,
        onClickStart: () -> Void,
        onClickCancel: () -> Void
    )
    
    case modifyPassword
    
    case changeNickname
    
    case profileUpdate(refresh: () -> Void)
    
    case followingList
    
    case orderListAll
    
    case newContentAll
    
    case curationAll(title: String, curationId: Int)
    
    case contentRankingAll
    
    case creatorCommunityAll(creatorId: Int)
    
    case creatorCommunityWrite(onSuccess: () -> Void)
    
    case creatorCommunityModify(postId: Int, onSuccess: () -> Void)
    
    case canCoupon
    
    case contentAllByTheme(themeId: Int)
    
    case seriesDetail(seriesId: Int)
    
    case seriesAll(creatorId: Int)
    
    case seriesContentAll(seriesId: Int, seriesTitle: String)
        
    case tempCanPayment(orderType: OrderType, contentId: Int, title: String, can: Int)
    
    case blockList
}
