mirror of
https://github.com/RevenueCat/purchases-ios
synced 2026-11-11 22:55:55 +05:45
Alpha of the Customer Center. In this branch, it's been disabled behind a compilation flag. --------- Co-authored-by: Will Taylor <wtaylor151@gmail.com> Co-authored-by: James Borthwick <109382862+jamesrb1@users.noreply.github.com> Co-authored-by: RevenueCat Git Bot <72824662+RCGitBot@users.noreply.github.com> Co-authored-by: JayShortway <29483617+JayShortway@users.noreply.github.com> Co-authored-by: Toni Rico <toni.rico.diez@revenuecat.com> Co-authored-by: Toni Rico <antonio.rico.diez@revenuecat.com> Co-authored-by: Cody Kerns <44073103+codykerns@users.noreply.github.com> Co-authored-by: Andy Boedo <andresboedo@gmail.com>
88 lines
2.8 KiB
Swift
88 lines
2.8 KiB
Swift
//
|
|
// Copyright RevenueCat Inc. All Rights Reserved.
|
|
//
|
|
// Licensed under the MIT License (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// https://opensource.org/licenses/MIT
|
|
//
|
|
// GetCustomerCenterConfigOperation.swift
|
|
//
|
|
//
|
|
// Created by Cesar de la Vega on 31/5/24.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
final class GetCustomerCenterConfigOperation: CacheableNetworkOperation {
|
|
|
|
private let customerCenterConfigCallbackCache: CallbackCache<CustomerCenterConfigCallback>
|
|
private let configuration: AppUserConfiguration
|
|
|
|
static func createFactory(
|
|
configuration: UserSpecificConfiguration,
|
|
callbackCache: CallbackCache<CustomerCenterConfigCallback>
|
|
) -> CacheableNetworkOperationFactory<GetCustomerCenterConfigOperation> {
|
|
return .init({ cacheKey in
|
|
.init(
|
|
configuration: configuration,
|
|
customerCenterConfigCallbackCache: callbackCache,
|
|
cacheKey: cacheKey
|
|
)
|
|
},
|
|
individualizedCacheKeyPart: configuration.appUserID)
|
|
}
|
|
|
|
private init(configuration: UserSpecificConfiguration,
|
|
customerCenterConfigCallbackCache: CallbackCache<CustomerCenterConfigCallback>,
|
|
cacheKey: String) {
|
|
self.configuration = configuration
|
|
self.customerCenterConfigCallbackCache = customerCenterConfigCallbackCache
|
|
|
|
super.init(configuration: configuration, cacheKey: cacheKey)
|
|
}
|
|
|
|
override func begin(completion: @escaping () -> Void) {
|
|
self.getCustomerCenterConfig(completion: completion)
|
|
}
|
|
|
|
}
|
|
|
|
private extension GetCustomerCenterConfigOperation {
|
|
|
|
func getCustomerCenterConfig(completion: @escaping () -> Void) {
|
|
let appUserID = self.configuration.appUserID
|
|
|
|
guard appUserID.isNotEmpty else {
|
|
self.customerCenterConfigCallbackCache.performOnAllItemsAndRemoveFromCache(
|
|
withCacheable: self
|
|
) { callback in
|
|
callback.completion(.failure(.missingAppUserID()))
|
|
}
|
|
completion()
|
|
|
|
return
|
|
}
|
|
|
|
let request = HTTPRequest(method: .get, path: .getCustomerCenterConfig(appUserID: appUserID))
|
|
|
|
httpClient.perform(request) { (response: VerifiedHTTPResponse<CustomerCenterConfigResponse>.Result) in
|
|
defer {
|
|
completion()
|
|
}
|
|
|
|
self.customerCenterConfigCallbackCache.performOnAllItemsAndRemoveFromCache(
|
|
withCacheable: self
|
|
) { callback in
|
|
callback.completion(
|
|
response
|
|
.map { $0.body }
|
|
.mapError(BackendError.networkError)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|