//
//  SelectedAccountItem.swift
//  Mastodon
//
//  Created by sxiaojian on 2021/4/22.
//

import CoreData
import Foundation

enum SelectedAccountItem {
    case accountObjectID(accountObjectID: NSManagedObjectID)
    case placeHolder(uuid: UUID)
}

extension SelectedAccountItem: Equatable {
    static func == (lhs: SelectedAccountItem, rhs: SelectedAccountItem) -> Bool {
        switch (lhs, rhs) {
        case (.accountObjectID(let idLeft), .accountObjectID(let idRight)):
            return idLeft == idRight
        case (.placeHolder(let uuidLeft), .placeHolder(let uuidRight)):
            return uuidLeft == uuidRight
        default:
            return false
        }
    }
}

extension SelectedAccountItem: Hashable {
    func hash(into hasher: inout Hasher) {
        switch self {
        case .accountObjectID(let id):
            hasher.combine(id)
        case .placeHolder(let id):
            hasher.combine(id.uuidString)
        }
    }
}
