mirror of
https://github.com/confirmedcode/Lockdown-iOS.git
synced 2025-12-21 12:14:02 +01:00
41 lines
1.2 KiB
Swift
41 lines
1.2 KiB
Swift
//
|
|
// Keychainable.swift
|
|
// Lockdown
|
|
//
|
|
// Created by Aliaksandr Dvoineu on 4.05.23.
|
|
// Copyright © 2023 Confirmed Inc. All rights reserved.
|
|
//
|
|
|
|
import KeychainAccess
|
|
|
|
protocol Keychainable: AnyObject {
|
|
func saveKeychainBool(_ item: KeychainBoolItem, _ bool: Bool, keychain: Keychain)
|
|
func readKeychainBool(_ item: KeychainBoolItem, keychain: Keychain) -> Bool
|
|
}
|
|
|
|
extension Keychainable {
|
|
private static var defaultKeychain: Keychain { Keychain(service: LockdownStorageIdentifier.keychainId).synchronizable(true) }
|
|
|
|
func saveKeychainBool(_ item: KeychainBoolItem, _ bool: Bool, keychain: Keychain = Self.defaultKeychain) {
|
|
do {
|
|
try keychain.set(String(bool), key: item.rawValue)
|
|
} catch let error {
|
|
print(error)
|
|
}
|
|
}
|
|
|
|
func readKeychainBool(_ item: KeychainBoolItem, keychain: Keychain = Self.defaultKeychain) -> Bool {
|
|
do {
|
|
let value: String = try keychain.get(item.rawValue) ?? ""
|
|
return Bool(value) ?? false
|
|
} catch let error {
|
|
print(error)
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
|
|
enum KeychainBoolItem: String {
|
|
case hasSeenXmasLTO
|
|
}
|