StikDebug/StikJIT/Utilities/TabConfiguration.swift
2025-12-14 11:43:11 -05:00

51 lines
1.6 KiB
Swift

import Foundation
enum TabConfiguration {
static let storageKey = "enabledTabIdentifiers"
static let maxSelectableTabs = 4
private static let coreIDs: [String] = ["home", "console", "scripts", "profiles", "deviceinfo"]
static var allowedIDs: [String] {
var ids = coreIDs
if FeatureFlags.isMiniToolsEnabled {
ids.append("tools")
}
if FeatureFlags.showBetaTabs {
ids.append("processes")
ids.append("devicelibrary")
if FeatureFlags.isLocationSpoofingEnabled {
ids.append("location")
}
}
return ids
}
static let defaultIDs: [String] = ["home", "console", "scripts", "profiles"]
static let defaultRawValue = serialize(defaultIDs)
static func sanitize(raw: String) -> [String] {
let ids = raw
.split(separator: ",")
.map { String($0).trimmingCharacters(in: .whitespacesAndNewlines) }
return sanitize(ids: ids)
}
static func sanitize(ids: [String]) -> [String] {
var result: [String] = []
for id in ids {
guard allowedIDs.contains(id) else { continue }
if !result.contains(id) {
result.append(id)
}
if result.count == maxSelectableTabs {
break
}
}
if result.isEmpty {
result = defaultIDs
}
return result
}
static func serialize(_ ids: [String]) -> String {
sanitize(ids: ids).joined(separator: ",")
}
}