mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.0 KiB
Swift
112 lines
3.0 KiB
Swift
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import Foundation
|
|
import GRDB
|
|
import SessionUtilitiesKit
|
|
|
|
public extension Database {
|
|
func setAndUpdateConfig(
|
|
_ key: Setting.BoolKey,
|
|
to newValue: Bool,
|
|
using dependencies: Dependencies
|
|
) throws {
|
|
try updateConfigIfNeeded(
|
|
self,
|
|
key: key.rawValue,
|
|
updatedSetting: self.setting(key: key, to: newValue),
|
|
using: dependencies
|
|
)
|
|
}
|
|
|
|
func setAndUpdateConfig(
|
|
_ key: Setting.DoubleKey,
|
|
to newValue: Double?,
|
|
using dependencies: Dependencies
|
|
) throws {
|
|
try updateConfigIfNeeded(
|
|
self,
|
|
key: key.rawValue,
|
|
updatedSetting: self.setting(key: key, to: newValue),
|
|
using: dependencies
|
|
)
|
|
}
|
|
|
|
func setAndUpdateConfig(
|
|
_ key: Setting.IntKey,
|
|
to newValue: Int?,
|
|
using dependencies: Dependencies
|
|
) throws {
|
|
try updateConfigIfNeeded(
|
|
self,
|
|
key: key.rawValue,
|
|
updatedSetting: self.setting(key: key, to: newValue),
|
|
using: dependencies
|
|
)
|
|
}
|
|
|
|
func setAndUpdateConfig(
|
|
_ key: Setting.StringKey,
|
|
to newValue: String?,
|
|
using dependencies: Dependencies
|
|
) throws {
|
|
try updateConfigIfNeeded(
|
|
self,
|
|
key: key.rawValue,
|
|
updatedSetting: self.setting(key: key, to: newValue),
|
|
using: dependencies
|
|
)
|
|
}
|
|
|
|
func setAndUpdateConfig<T: EnumIntSetting>(
|
|
_ key: Setting.EnumKey,
|
|
to newValue: T?,
|
|
using dependencies: Dependencies
|
|
) throws {
|
|
try updateConfigIfNeeded(
|
|
self,
|
|
key: key.rawValue,
|
|
updatedSetting: self.setting(key: key, to: newValue),
|
|
using: dependencies
|
|
)
|
|
}
|
|
|
|
func setAndUpdateConfig<T: EnumStringSetting>(
|
|
_ key: Setting.EnumKey,
|
|
to newValue: T?,
|
|
using dependencies: Dependencies
|
|
) throws {
|
|
try updateConfigIfNeeded(
|
|
self,
|
|
key: key.rawValue,
|
|
updatedSetting: self.setting(key: key, to: newValue),
|
|
using: dependencies
|
|
)
|
|
}
|
|
|
|
/// Value will be stored as a timestamp in seconds since 1970
|
|
func setAndUpdateConfig(
|
|
_ key: Setting.DateKey,
|
|
to newValue: Date?,
|
|
using dependencies: Dependencies
|
|
) throws {
|
|
try updateConfigIfNeeded(
|
|
self,
|
|
key: key.rawValue,
|
|
updatedSetting: self.setting(key: key, to: newValue),
|
|
using: dependencies
|
|
)
|
|
}
|
|
|
|
private func updateConfigIfNeeded(
|
|
_ db: Database,
|
|
key: String,
|
|
updatedSetting: Setting?,
|
|
using dependencies: Dependencies
|
|
) throws {
|
|
// Before we do anything custom make sure the setting should trigger a change
|
|
guard LibSession.syncedSettings.contains(key) else { return }
|
|
|
|
try LibSession.updatingSetting(db, updatedSetting, using: dependencies)
|
|
}
|
|
}
|