Path: blob/main/SignalServiceKit/Network/API/Requests/AuthedDevice.swift
1 views
//
// 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,
)
}
}
}