2023-02-24 08:33:46 -08:00
|
|
|
//
|
|
|
|
// WalletConfig.swift
|
|
|
|
// secant
|
|
|
|
//
|
|
|
|
// Created by Michal Fousek on 23.02.2023.
|
|
|
|
//
|
|
|
|
|
|
|
|
enum FeatureFlag: String, CaseIterable, Codable {
|
|
|
|
// These two flags should stay here because those are used in tests. It's not super nice but there is probably no other way.
|
|
|
|
case testFlag1
|
|
|
|
case testFlag2
|
2023-02-27 04:55:47 -08:00
|
|
|
case onboardingFlow
|
2023-03-01 10:33:58 -08:00
|
|
|
case testBackupPhraseFlow
|
2023-02-24 08:33:46 -08:00
|
|
|
|
|
|
|
var enabledByDefault: Bool {
|
|
|
|
switch self {
|
2023-02-27 04:55:47 -08:00
|
|
|
case .testFlag1, .testFlag2: return false
|
|
|
|
case .onboardingFlow: return false
|
2023-03-01 10:33:58 -08:00
|
|
|
case .testBackupPhraseFlow: return false
|
2023-02-24 08:33:46 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
struct WalletConfig: Equatable {
|
|
|
|
typealias RawFlags = [FeatureFlag: Bool]
|
|
|
|
|
|
|
|
let flags: RawFlags
|
|
|
|
|
|
|
|
func isEnabled(_ featureFlag: FeatureFlag) -> Bool {
|
|
|
|
return flags[featureFlag, default: false]
|
|
|
|
}
|
|
|
|
|
|
|
|
static var `default`: WalletConfig = {
|
2023-02-27 08:26:24 -08:00
|
|
|
let defaultSettings = FeatureFlag.allCases
|
|
|
|
.filter { $0 != .testFlag1 && $0 != .testFlag2 }
|
|
|
|
.map { ($0, $0.enabledByDefault) }
|
|
|
|
|
2023-02-24 08:33:46 -08:00
|
|
|
return WalletConfig(flags: Dictionary(uniqueKeysWithValues: defaultSettings))
|
|
|
|
}()
|
|
|
|
}
|