31 lines
667 B
Swift
31 lines
667 B
Swift
//
|
|
// PreferenceKey.swift
|
|
// TuskerPreferences
|
|
//
|
|
// Created by Shadowfacts on 4/12/24.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public protocol PreferenceKey {
|
|
associatedtype Value: Codable
|
|
|
|
static var defaultValue: Value { get }
|
|
|
|
static func didSet(in store: PreferenceStore, newValue: Value)
|
|
}
|
|
|
|
extension PreferenceKey {
|
|
static func didSet(in store: PreferenceStore, newValue: Value) {}
|
|
}
|
|
|
|
protocol MigratablePreferenceKey: PreferenceKey where Value: Equatable {
|
|
static func shouldMigrate(oldValue: Value) -> Bool
|
|
}
|
|
|
|
extension MigratablePreferenceKey {
|
|
static func shouldMigrate(oldValue: Value) -> Bool {
|
|
oldValue != defaultValue
|
|
}
|
|
}
|