// // 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(bids: [String]) case Main case ChatRoom(id: String) case NONE } enum MenuName: String, Hashable { case Home = "홈" case Management = "학습 관리" case Chatting = "채팅" case Calendar = "일정" case Etc = "더보기" }