sodalive-ios/SodaLive/Sources/Extensions/UserDefaultsExtension.swift

81 lines
2.2 KiB
Swift

//
// UserDefaultsExtension.swift
// SodaLive
//
// Created by klaus on 2022/05/20.
//
import Foundation
enum UserDefaultsKey: String, CaseIterable {
case auth
case role
case can
case token
case email
case userId
case nickname
case pushToken
case profileImage
case noChatRoomList
case devicePushToken
case isContentPlayLoop
case isFollowedChannel
case isViewedOnboardingView
case notShowingEventPopupId
case isAdultContentVisible
case contentPreference
case isAuditionNotification
}
extension UserDefaults {
static func set(_ value: Bool, forKey key: UserDefaultsKey) {
let key = key.rawValue
UserDefaults.standard.set(value, forKey: key)
}
static func bool(forKey key: UserDefaultsKey) -> Bool {
let key = key.rawValue
return UserDefaults.standard.bool(forKey: key)
}
static func set(_ value: String, forKey key: UserDefaultsKey) {
let key = key.rawValue
UserDefaults.standard.set(value, forKey: key)
}
static func string(forKey key: UserDefaultsKey) -> String {
let key = key.rawValue
return UserDefaults.standard.string(forKey: key) ?? ""
}
static func set(_ value: Int, forKey key: UserDefaultsKey) {
let key = key.rawValue
UserDefaults.standard.set(value, forKey: key)
}
static func int(forKey key: UserDefaultsKey) -> Int {
let key = key.rawValue
return UserDefaults.standard.integer(forKey: key)
}
static func set(_ value: Data, forKey key: UserDefaultsKey) {
let key = key.rawValue
UserDefaults.standard.set(value, forKey: key)
}
static func data(forKey key: UserDefaultsKey) -> Data? {
let key = key.rawValue
return UserDefaults.standard.data(forKey: key)
}
static func isAdultContentVisible() -> Bool {
let key = UserDefaultsKey.isAdultContentVisible.rawValue
return UserDefaults.standard.object(forKey: key) != nil ? bool(forKey: .isAdultContentVisible) : true
}
static func reset() {
UserDefaultsKey.allCases.forEach { UserDefaults.standard.removeObject(forKey: $0.rawValue) }
}
}