Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
3.7 kB · 113 lines
Swift
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114import Tagged
/// Provider-issued notification destinations for one application installation.public enum Push { public enum ApplicationIDTag {}
/// Identifies the application whose provider credentials can deliver to the destination. public typealias ApplicationID = Tagged<ApplicationIDTag, String>
public struct APNS: Equatable, Hashable, Sendable { public enum Environment: String, CaseIterable, Codable, Equatable, Hashable, Sendable { case development case production }
public struct DeviceToken: Equatable, Hashable, RawRepresentable, Sendable { public let rawValue: String
public init(rawValue: String) { self.rawValue = rawValue } }
public var applicationID: ApplicationID public var environment: Environment public var deviceToken: DeviceToken
public init( applicationID: ApplicationID, environment: Environment, deviceToken: DeviceToken ) { self.applicationID = applicationID self.environment = environment self.deviceToken = deviceToken } }
public struct FCM: Equatable, Hashable, Sendable { public struct InstallationID: Equatable, Hashable, RawRepresentable, Sendable { public let rawValue: String
public init(rawValue: String) { self.rawValue = rawValue } }
/// Compatibility name for callers created before FCM moved direct sends to Firebase /// Installation IDs. public typealias RegistrationToken = InstallationID
public var applicationID: ApplicationID public var installationID: InstallationID
public init(applicationID: ApplicationID, installationID: InstallationID) { self.applicationID = applicationID self.installationID = installationID }
/// Compatibility initializer for persisted destinations and downstream clients using the /// former registration-token terminology. public init(applicationID: ApplicationID, registrationToken: RegistrationToken) { self.init(applicationID: applicationID, installationID: registrationToken) }
public var registrationToken: RegistrationToken { get { installationID } set { installationID = newValue } } }
public enum Destination: Equatable, Hashable, Sendable { case apns(APNS) case fcm(FCM)
public var applicationID: ApplicationID { switch self { case .apns(let registration): registration.applicationID case .fcm(let registration): registration.applicationID } } }}
extension Push.APNS.DeviceToken: CustomDebugStringConvertible { public var debugDescription: String { "<redacted>" }}
extension Push.APNS.DeviceToken: CustomReflectable { public var customMirror: Mirror { Mirror(self, children: ["rawValue": "<redacted>"], displayStyle: .struct) }}
extension Push.APNS.DeviceToken: CustomStringConvertible { public var description: String { "<redacted>" }}
extension Push.FCM.InstallationID: CustomDebugStringConvertible { public var debugDescription: String { "<redacted>" }}
extension Push.FCM.InstallationID: CustomReflectable { public var customMirror: Mirror { Mirror(self, children: ["rawValue": "<redacted>"], displayStyle: .struct) }}
extension Push.FCM.InstallationID: CustomStringConvertible { public var description: String { "<redacted>" }}