forked from AcaMate/AcaMate_iOS
59 lines
1.1 KiB
Swift
59 lines
1.1 KiB
Swift
//
|
|
// 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 = "더보기"
|
|
}
|