Skip to content

Commit 7c92166

Browse files
authored
2.0.4-RC1 (#23)
1 parent 6023ffa commit 7c92166

File tree

9 files changed

+115
-136
lines changed

9 files changed

+115
-136
lines changed

example/ios/Podfile.lock

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,6 @@ PODS:
210210
- React-Core
211211
- react-native-usercentrics (2.0.3):
212212
- React
213-
- RxSwift (= 6.2.0)
214213
- UsercentricsUI (= 2.0.3)
215214
- React-perflogger (0.65.1)
216215
- React-RCTActionSheet (0.65.1):
@@ -279,7 +278,6 @@ PODS:
279278
- RNScreens (3.9.0):
280279
- React-Core
281280
- React-RCTImage
282-
- RxSwift (6.2.0)
283281
- Usercentrics (2.0.3)
284282
- UsercentricsUI (2.0.3):
285283
- Usercentrics (= 2.0.3)
@@ -324,7 +322,6 @@ SPEC REPOS:
324322
trunk:
325323
- boost-for-react-native
326324
- fmt
327-
- RxSwift
328325
- Usercentrics
329326
- UsercentricsUI
330327

@@ -411,7 +408,7 @@ SPEC CHECKSUMS:
411408
React-jsiexecutor: 43f2542aed3c26e42175b339f8d37fe3dd683765
412409
React-jsinspector: 41e58e5b8e3e0bf061fdf725b03f2144014a8fb0
413410
react-native-safe-area-context: 584dc04881deb49474363f3be89e4ca0e854c057
414-
react-native-usercentrics: 6b0f8015c3f4d9080606d298e1a9019d481634c3
411+
react-native-usercentrics: 6387a643160ca10a563e7cfa4908ec2b60af34c3
415412
React-perflogger: fd28ee1f2b5b150b00043f0301d96bd417fdc339
416413
React-RCTActionSheet: 7f3fa0855c346aa5d7c60f9ced16e067db6d29fa
417414
React-RCTAnimation: 2119a18ee26159004b001bc56404ca5dbaae6077
@@ -425,7 +422,6 @@ SPEC CHECKSUMS:
425422
React-runtimeexecutor: 85187f19dd9c47a7c102f9994f9d14e4dc2110de
426423
ReactCommon: eafed38eec7b591c31751bfa7494801618460459
427424
RNScreens: 4d79118be80f79fa1f4aa131909a1d6e86280af3
428-
RxSwift: d356ab7bee873611322f134c5f9ef379fa183d8f
429425
Usercentrics: 81317f8dd028f1d6220df01940e61f56444983ea
430426
UsercentricsUI: c4d4fb48888daf1b4862f7d4b716eefb51dc7886
431427
Yoga: aa0cb45287ebe1004c02a13f279c55a95f1572f4

example/ios/example.xcodeproj/project.pbxproj

Lines changed: 62 additions & 62 deletions
Large diffs are not rendered by default.

example/src/screens/Home.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ export const HomeScreen = ({ navigation }: { navigation: any }) => {
4040

4141
<View style={styles.container}>
4242
<Button onPress={async () => {
43-
await Usercentrics.status();
4443
showCMP(true);
4544
}} title="Show PredefinedUI" />
4645

ios/Manager/UsercentricsManager.swift

Lines changed: 10 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import Foundation
22
import Usercentrics
33
import UsercentricsUI
4-
import RxSwift
54

65
public protocol UsercentricsManager {
7-
var alreadyConfigured: Bool { get }
86
func configure(options: UsercentricsOptions)
97

108
func isReady(onSuccess: @escaping ((UsercentricsReadyStatus) -> Void), onFailure: @escaping ((Error) -> Void))
@@ -40,52 +38,25 @@ public protocol UsercentricsManager {
4038

4139
final class UsercentricsManagerImplementation: UsercentricsManager {
4240

43-
private let isConfiguredBeforeKey: String = "usercentrics.isConfiguredBefore"
44-
45-
var isConfigured: Bool = false
46-
private var bag: DisposeBag = DisposeBag()
47-
48-
private let isConfiguredObservable: BehaviorSubject<Bool>
49-
var alreadyConfigured: Bool {
50-
try! isConfiguredObservable.value()
51-
}
52-
53-
init() {
54-
let isConfiguredBefore = UserDefaults.standard.bool(forKey: self.isConfiguredBeforeKey)
55-
isConfiguredObservable = .init(value: isConfiguredBefore)
56-
57-
setupActions()
58-
}
59-
60-
private func setupActions() {
61-
isConfiguredObservable
62-
.subscribe(onNext: { [weak self] in
63-
guard let self = self else { return }
64-
UserDefaults.standard.set($0, forKey: self.isConfiguredBeforeKey)
65-
}).disposed(by: bag)
66-
}
67-
6841
func isReady(onSuccess: @escaping ((UsercentricsReadyStatus) -> Void), onFailure: @escaping ((Error) -> Void)) {
69-
var subscription: Disposable?
70-
71-
subscription = isConfiguredObservable
72-
.subscribe(onNext: { isConfigured in
73-
guard isConfigured else { return }
74-
UsercentricsCore.isReady(onSuccess: onSuccess, onFailure: onFailure)
75-
subscription?.dispose()
76-
})
77-
78-
subscription?.disposed(by: bag)
42+
UsercentricsCore.isReady(onSuccess: onSuccess, onFailure: onFailure)
7943
}
8044

8145
func configure(options: UsercentricsOptions) {
46+
var isConfigured: Bool = false
47+
isReady { _ in
48+
isConfigured = true
49+
} onFailure: { _ in
50+
isConfigured = true
51+
}
52+
53+
guard !isConfigured else { return }
54+
8255
UsercentricsCore.configure(options: options)
83-
isConfiguredObservable.onNext(true)
8456
}
8557

8658
func reset() {
8759
UsercentricsCore.reset()
88-
isConfiguredObservable.onNext(false)
8960
}
9061

9162
func getPredefinedUI(settings: UsercentricsUISettings?, dismissViewHandler: @escaping (UsercentricsConsentUserResponse) -> Void) -> UIViewController {

ios/RNUsercentricsModule.swift

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,13 @@ class RNUsercentricsModule: NSObject, RCTBridgeModule {
1919
}
2020

2121
@objc func configure(_ dict: NSDictionary) -> Void {
22-
if !usercentricsManager.alreadyConfigured {
23-
queue.async { [weak self] in
24-
guard
25-
let self = self,
26-
let userOptions = UsercentricsOptions(from: dict)
27-
else { return }
28-
29-
self.usercentricsManager.configure(options: userOptions)
30-
}
22+
queue.async { [weak self] in
23+
guard
24+
let self = self,
25+
let userOptions = UsercentricsOptions(from: dict)
26+
else { return }
27+
28+
self.usercentricsManager.configure(options: userOptions)
3129
}
3230
}
3331

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@usercentrics/react-native-sdk",
3-
"version": "2.0.3",
3+
"version": "2.0.4-rc1",
44
"description": "Usercentrics SDK",
55
"homepage": "https://usercentrics.com",
66
"main": "lib/index.js",

react-native-usercentrics.podspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,5 @@ Pod::Spec.new do |s|
1717

1818
s.dependency 'React'
1919
s.dependency 'UsercentricsUI', "#{package['iosPackageVersion']}"
20-
s.dependency 'RxSwift', "6.2.0"
2120

2221
end

src/Usercentrics.tsx

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,71 +25,87 @@ export const Usercentrics = {
2525
return RNUsercentricsModule.isReady();
2626
},
2727

28-
showCMP: (options: UsercentricsUIOptions): Promise<UsercentricsConsentUserResponse> => {
28+
showCMP: async (options: UsercentricsUIOptions): Promise<UsercentricsConsentUserResponse> => {
29+
await RNUsercentricsModule.isReady();
2930
return RNUsercentricsModule.showCMP(options);
3031
},
3132

32-
restoreUserSession: (controllerId: string): Promise<UsercentricsReadyStatus> => {
33+
restoreUserSession: async (controllerId: string): Promise<UsercentricsReadyStatus> => {
34+
await RNUsercentricsModule.isReady();
3335
return RNUsercentricsModule.restoreUserSession(controllerId);
3436
},
3537

36-
getControllerId: (): Promise<string> => {
38+
getControllerId: async (): Promise<string> => {
39+
await RNUsercentricsModule.isReady();
3740
return RNUsercentricsModule.getControllerId();
3841
},
3942

40-
getTCFString: (): Promise<string> => {
43+
getTCFString: async (): Promise<string> => {
44+
await RNUsercentricsModule.isReady();
4145
return RNUsercentricsModule.getTCFString();
4246
},
4347

44-
getConsents: (): Promise<[UsercentricsServiceConsent]> => {
48+
getConsents: async (): Promise<[UsercentricsServiceConsent]> => {
49+
await RNUsercentricsModule.isReady();
4550
return RNUsercentricsModule.getConsents();
4651
},
4752

48-
getCMPData: (): Promise<UsercentricsCMPData> => {
53+
getCMPData: async (): Promise<UsercentricsCMPData> => {
54+
await RNUsercentricsModule.isReady();
4955
return RNUsercentricsModule.getCMPData();
5056
},
5157

5258
getUserSessionData: (): Promise<string> => {
5359
return RNUsercentricsModule.getUserSessionData();
5460
},
5561

56-
getCCPAData: (): Promise<CCPAData> => {
62+
getCCPAData: async (): Promise<CCPAData> => {
63+
await RNUsercentricsModule.isReady();
5764
return RNUsercentricsModule.getUSPData();
5865
},
5966

60-
getTCFData: (): Promise<TCFData> => {
67+
getTCFData: async (): Promise<TCFData> => {
68+
await RNUsercentricsModule.isReady();
6169
return RNUsercentricsModule.getTCFData();
6270
},
6371

64-
changeLanguage: (language: string): Promise<void> => {
72+
changeLanguage: async (language: string): Promise<void> => {
73+
await RNUsercentricsModule.isReady();
6574
return RNUsercentricsModule.changeLanguage(language);
6675
},
6776

68-
acceptAll: (consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
77+
acceptAll: async (consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
78+
await RNUsercentricsModule.isReady();
6979
return RNUsercentricsModule.acceptAll(consentType);
7080
},
7181

72-
acceptAllForTCF: (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
82+
acceptAllForTCF: async (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
83+
await RNUsercentricsModule.isReady();
7384
return RNUsercentricsModule.acceptAllForTCF(fromLayer, consentType);
7485
},
7586

76-
denyAll: (consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
87+
denyAll: async (consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
88+
await RNUsercentricsModule.isReady();
7789
return RNUsercentricsModule.denyAll(consentType);
7890
},
7991

80-
denyAllForTCF: (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
92+
denyAllForTCF: async (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
93+
await RNUsercentricsModule.isReady();
8194
return RNUsercentricsModule.denyAllForTCF(fromLayer, consentType);
8295
},
8396

84-
saveDecisions: (decisions: [UserDecision], consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
97+
saveDecisions: async (decisions: [UserDecision], consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
98+
await RNUsercentricsModule.isReady();
8599
return RNUsercentricsModule.saveDecisions(decisions, consentType);
86100
},
87101

88-
saveDecisionsForTCF: (tcfDecisions: TCFUserDecisions, fromLayer: TCFDecisionUILayer, decisions: [UserDecision], consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
102+
saveDecisionsForTCF: async (tcfDecisions: TCFUserDecisions, fromLayer: TCFDecisionUILayer, decisions: [UserDecision], consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
103+
await RNUsercentricsModule.isReady();
89104
return RNUsercentricsModule.saveDecisionsForTCF(tcfDecisions, fromLayer, decisions, consentType);
90105
},
91106

92-
saveOptOutForCCPA: (isOptedOut: boolean, consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
107+
saveOptOutForCCPA: async (isOptedOut: boolean, consentType: UsercentricsConsentType): Promise<[UsercentricsServiceConsent]> => {
108+
await RNUsercentricsModule.isReady();
93109
return RNUsercentricsModule.saveOptOutForCCPA(isOptedOut, consentType);
94110
},
95111

0 commit comments

Comments
 (0)