gh-XcodesOrg-XcodesApp/Xcodes/Frontend/Common/XcodesSheet.swift
2022-06-24 12:52:38 +09:00

39 lines
988 B
Swift

import Foundation
import AppleAPI
enum XcodesSheet: Identifiable {
case signIn
case twoFactor(SecondFactorData)
var id: Int { Kind(self).hashValue }
struct SecondFactorData {
let option: TwoFactorOption
let authOptions: AuthOptionsResponse
let sessionData: AppleSessionData
}
}
extension XcodesSheet {
private enum Kind: Hashable {
case signIn, twoFactor(TwoFactorOption)
enum TwoFactorOption {
case smsSent
case codeSent
case smsPendingChoice
}
init(_ sheet: XcodesSheet) {
switch sheet {
case .signIn: self = .signIn
case .twoFactor(let data):
switch data.option {
case .smsSent: self = .twoFactor(.smsSent)
case .smsPendingChoice: self = .twoFactor(.smsPendingChoice)
case .codeSent: self = .twoFactor(.codeSent)
}
}
}
}
}