blob: 0d8a4efc8afe7688d41c8372214643fd5696fa79 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
//
// StoredAccountData.swift
// MullvadVPN
//
// Created by Marco Nikic on 2023-07-31.
// Copyright © 2025 Mullvad VPN AB. All rights reserved.
//
import Foundation
public struct StoredAccountData: Codable, Equatable, Sendable {
/// Account identifier.
public var identifier: String
/// Account number.
public var number: String
/// Account expiry.
public var expiry: Date
/// Returns `true` if account has expired.
public var isExpired: Bool {
expiry <= Date()
}
public init(identifier: String, number: String, expiry: Date) {
self.identifier = identifier
self.number = number
self.expiry = expiry
}
}
extension StoredAccountData {
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.identifier = try container.decode(String.self, forKey: .identifier)
self.number = try container.decode(String.self, forKey: .number)
self.expiry = try container.decode(Date.self, forKey: .expiry)
}
}
|