//
//  Navigation.swift
//  AcaMate
//
//  Created by Sean Kim on 12/13/24.
//

import Foundation



struct NaviState: Equatable {
    var act: NaviAction
    var path: PathName
    
    static func == (lhs: NaviState, rhs: NaviState) -> Bool {
        return lhs.act == rhs.act && lhs.path == rhs.path
    }
    
    mutating func set(act: NaviAction = .ADD, path: PathName = .NONE) {
        self.act = act
        self.path = path
    }
    
}

enum NaviAction: Hashable {
    /// 한 계층 추가
    case ADD
    /// 전체 삭제 후 추가
    case RESET
    /// 한 계층 빼기
    case POP
    /// 위치로 이동 (path == NONE인 경우 최상단)
    case MOVE
    /// 아무 동작 안함
    case NONE
    
    /// FIRST = 가장 메인, MOVE = 그곳으로
}

enum PathName: Hashable {
    case Intro
    case Login
    case Register(_ type: SNSLoginType, id: String)
    case SelectAcademy
    case Main
    case ChatRoom(id: String)
    case NONE
}

enum MenuName: String, Hashable {
    case Home = "홈"
    case Management = "학습 관리"
    case Chatting = "채팅"
    case Calendar = "일정"
    case Etc = "더보기"
}
