summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadSettings/StoredAccountData.swift
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)
    }
}