42 lines
1.2 KiB
Swift
42 lines
1.2 KiB
Swift
//
|
|
// SearchHistoryItem.swift
|
|
// Mastodon
|
|
//
|
|
// Created by MainasuK Cirno on 2021-7-15.
|
|
//
|
|
|
|
import Foundation
|
|
import CoreData
|
|
|
|
enum SearchHistoryItem {
|
|
case account(objectID: NSManagedObjectID)
|
|
case hashtag(objectID: NSManagedObjectID)
|
|
case status(objectID: NSManagedObjectID, attribute: Item.StatusAttribute)
|
|
}
|
|
|
|
extension SearchHistoryItem: Hashable {
|
|
static func == (lhs: SearchHistoryItem, rhs: SearchHistoryItem) -> Bool {
|
|
switch (lhs, rhs) {
|
|
case (.account(let objectIDLeft), account(let objectIDRight)):
|
|
return objectIDLeft == objectIDRight
|
|
case (.hashtag(let objectIDLeft), hashtag(let objectIDRight)):
|
|
return objectIDLeft == objectIDRight
|
|
case (.status(let objectIDLeft, _), status(let objectIDRight, _)):
|
|
return objectIDLeft == objectIDRight
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
func hash(into hasher: inout Hasher) {
|
|
switch self {
|
|
case .account(let objectID):
|
|
hasher.combine(objectID)
|
|
case .hashtag(let objectID):
|
|
hasher.combine(objectID)
|
|
case .status(let objectID, _):
|
|
hasher.combine(objectID)
|
|
}
|
|
}
|
|
}
|