init()

in ConfidenceDemoApp/ConfidenceDemoApp/ConfidenceDemoApp.swift [15:45]


    init() {
        @AppStorage("appVersion") var appVersion = 0
        @AppStorage("loggedUser") var loggedUser: String?
        appVersion += 1 // Simulate update of the app on every new run
        var context = ["app_version": ConfidenceValue.init(integer: appVersion)]
        if let user = loggedUser {
            context["user_id"] = ConfidenceValue.init(string: user)
        }

        confidence = Confidence
            .Builder(clientSecret: secret, loggerLevel: .TRACE)
            .withContext(initialContext: context)
            .build()
        do {
            // NOTE: here we are activating all the flag values from storage, regardless of how `context` looks now
            try confidence.activate()
        } catch {
            flaggingState.state = .error(ExperimentationFlags.CustomError(message: error.localizedDescription))
        }
        // flaggingState.color is set here at startup and remains immutable until a user logs out
        let eval = confidence.getEvaluation(
            key: "swift-demoapp.color",
            defaultValue: "Gray")
        flaggingState.color = ContentView.getColor(
            color: eval.value)
        flaggingState.reason = eval.reason

        self.appVersion = appVersion
        self.loggedUser = loggedUser
        updateConfidence()
    }