SPB Git

spb/os-vault Public

Self-custody, multi-chain crypto wallet for macOS. One recovery phrase, six chain families, zero API keys — nothing leaves your Mac.

Swift 96% Shell 3.4% Makefile 0.6%
1.1 KB · 39 lines swift
Raw Blame History
1import Foundation23public enum VersionedMessage: Equatable {4    case legacy(Message)5    case v0(MessageV0)67    static func deserialize(data: Data) throws -> Self {8        guard !data.isEmpty else {9            throw VersionedMessageError.deserializationError("Data is empty")10        }11        let prefix: UInt8 = data.first!12        let maskedPrefix = prefix & Constants.versionPrefixMask1314        if maskedPrefix == prefix {15            return try .legacy(.from(data: data))16        } else {17            return try .v0(.deserialize(serializedMessage: data))18        }19    }2021    public var value: IMessage {22        switch self {23        case let .legacy(message): return message24        case let .v0(message): return message25        }26    }2728    public mutating func setRecentBlockHash(_ blockHash: BlockHash) {29        switch self {30        case var .legacy(message):31            message.recentBlockhash = blockHash32            self = .legacy(message)33        case var .v0(messageV0):34            messageV0.recentBlockhash = blockHash35            self = .v0(messageV0)36        }37    }38}39