//
//  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 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 creatorNoticeWrite(notice: String)
    
    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
}