68 lines
1.8 KiB
Swift
68 lines
1.8 KiB
Swift
//
|
|
// Copyright 2023 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import Foundation
|
|
public import LibSignalClient
|
|
|
|
public enum AuthedDevice {
|
|
case implicit
|
|
case explicit(Explicit)
|
|
|
|
public struct Explicit {
|
|
public let aci: Aci
|
|
public let phoneNumber: E164
|
|
public let pni: Pni
|
|
public let deviceId: DeviceId
|
|
public var isPrimaryDevice: Bool { deviceId == .primary }
|
|
public let authPassword: String
|
|
|
|
public init(aci: Aci, phoneNumber: E164, pni: Pni, deviceId: DeviceId, authPassword: String) {
|
|
self.aci = aci
|
|
self.phoneNumber = phoneNumber
|
|
self.pni = pni
|
|
self.deviceId = deviceId
|
|
self.authPassword = authPassword
|
|
}
|
|
|
|
public var localIdentifiers: LocalIdentifiers {
|
|
return LocalIdentifiers(aci: aci, pni: pni, e164: phoneNumber)
|
|
}
|
|
|
|
public var authedAccount: AuthedAccount.Explicit {
|
|
return .init(
|
|
aci: aci,
|
|
pni: pni,
|
|
e164: phoneNumber,
|
|
deviceId: deviceId,
|
|
authPassword: authPassword,
|
|
)
|
|
}
|
|
}
|
|
|
|
public func orIfImplicitUse(_ other: Self) -> Self {
|
|
switch self {
|
|
case .explicit:
|
|
return self
|
|
case .implicit:
|
|
return other
|
|
}
|
|
}
|
|
|
|
public var authedAccount: AuthedAccount {
|
|
switch self {
|
|
case .implicit:
|
|
return .implicit()
|
|
case .explicit(let explicit):
|
|
return .explicit(
|
|
aci: explicit.aci,
|
|
pni: explicit.pni,
|
|
e164: explicit.phoneNumber,
|
|
deviceId: explicit.deviceId,
|
|
authPassword: explicit.authPassword,
|
|
)
|
|
}
|
|
}
|
|
}
|