48 lines
864 B
Swift
48 lines
864 B
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 Main
|
|
|
|
case NONE
|
|
}
|