Skip to content

Commit

Permalink
refactor: minor polishing
Browse files Browse the repository at this point in the history
  • Loading branch information
fabriziodemaria committed Jun 25, 2024
1 parent f013bfe commit cfef609
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 13 deletions.
34 changes: 23 additions & 11 deletions Sources/Confidence/Confidence.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,25 @@ import Combine
import os

public class Confidence: ConfidenceEventSender {
public let clientSecret: String
public var region: ConfidenceRegion
private let clientSecret: String
private var region: ConfidenceRegion
private let parent: ConfidenceContextProvider?
private let eventSenderEngine: EventSenderEngine
private let contextSubject = CurrentValueSubject<ConfidenceStruct, Never>([:])
private var removedContextKeys: Set<String> = Set()
private let confidenceQueue = DispatchQueue(label: "com.confidence.queue")
private let remoteFlagResolver: ConfidenceResolveClient
private let flagApplier: FlagApplier
private var cache = FlagResolution.EMPTY
private var storage: Storage
internal let contextReconciliatedChanges = PassthroughSubject<String, Never>()
private var cancellables = Set<AnyCancellable>()
private var currentFetchTask: Task<(), Never>?

// Internal for testing
internal let remoteFlagResolver: ConfidenceResolveClient
internal let contextReconciliatedChanges = PassthroughSubject<String, Never>()

public static let sdkId: String = "SDK_ID_SWIFT_CONFIDENCE"

required init(
clientSecret: String,
region: ConfidenceRegion,
Expand Down Expand Up @@ -240,6 +244,9 @@ public class Confidence: ConfidenceEventSender {
}
}

/**
Sets the initial Context.
*/
public func withContext(_ context: ConfidenceStruct) -> Self {
return Self.init(
clientSecret: clientSecret,
Expand All @@ -255,15 +262,20 @@ public class Confidence: ConfidenceEventSender {

extension Confidence {
public class Builder {
let clientSecret: String
// Must be configured or configured automatically
internal let clientSecret: String
internal let eventStorage: EventStorage
internal let visitorId = VisitorUtil().getId()

// Can be configured
internal var region: ConfidenceRegion = .global
internal var metadata: ConfidenceMetadata?
internal var initialContext: ConfidenceStruct = [:]

// Injectable for testing
internal var flagApplier: FlagApplier?
internal var storage: Storage?
internal let eventStorage: EventStorage
internal var flagResolver: ConfidenceResolveClient?
var region: ConfidenceRegion = .global

var visitorId = VisitorUtil().getId()
var initialContext: ConfidenceStruct = [:]

/**
Initializes the builder with the given credentails.
Expand Down Expand Up @@ -312,7 +324,7 @@ extension Confidence {
credentials: ConfidenceClientCredentials.clientSecret(secret: clientSecret),
region: region)
let metadata = ConfidenceMetadata(
name: "SDK_ID_SWIFT_CONFIDENCE",
name: sdkId,
version: "0.2.2") // x-release-please-version
let uploader = RemoteConfidenceClient(
options: options,
Expand Down
5 changes: 3 additions & 2 deletions Sources/ConfidenceProvider/ConfidenceFeatureProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,16 @@ struct Metadata: ProviderMetadata {

/// The implementation of the Confidence Feature Provider. This implementation allows to pre-cache evaluations.
public class ConfidenceFeatureProvider: FeatureProvider {
public static let providerId: String = "SDK_ID_SWIFT_PROVIDER"
public var metadata: ProviderMetadata
public var hooks: [any Hook] = []
private let lock = UnfairLock()
private let initializationStrategy: InitializationStrategy
private let eventHandler = EventHandler(ProviderEvent.notReady)
private let confidence: Confidence
private let confidenceFeatureProviderQueue = DispatchQueue(label: "com.provider.queue")
private var cancellables = Set<AnyCancellable>()
private var currentResolveTask: Task<Void, Never>?
private let confidenceFeatureProviderQueue = DispatchQueue(label: "com.provider.queue")

/**
Initialize the Provider via a `Confidence` object.
Expand All @@ -34,7 +35,7 @@ public class ConfidenceFeatureProvider: FeatureProvider {
session: URLSession?
) {
let metadata = ConfidenceMetadata(
name: "SDK_ID_SWIFT_PROVIDER",
name: ConfidenceFeatureProvider.providerId,
version: "0.2.2") // x-release-please-version
self.metadata = Metadata(name: metadata.name)
self.initializationStrategy = initializationStrategy
Expand Down

0 comments on commit cfef609

Please sign in to comment.