Skip to content
This repository was archived by the owner on Jun 23, 2025. It is now read-only.

Commit a1515bc

Browse files
authored
Merge pull request #79 from superwall/develop
2.0.13
2 parents 573c44d + da0b91c commit a1515bc

11 files changed

Lines changed: 90 additions & 32 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
The changelog for `Superwall`. Also see the [releases](https://github.com/superwall/react-native-superwall/releases) on GitHub.
44

5+
## 2.0.13
6+
7+
### Enhancements
8+
9+
- Adds `getAssignments`.
10+
- Upgrades iOS SDK to 4.3.0 [View iOS SDK release notes](https://github.com/superwall/Superwall-iOS/releases/tag/4.3.0).
11+
512
## 2.0.12
613

714
### Enhancements

android/src/main/java/com/superwallreactnative/SuperwallReactNativeModule.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,23 @@ class SuperwallReactNativeModule(private val reactContext: ReactApplicationConte
332332
}
333333
}
334334

335+
@ReactMethod
336+
fun getAssignments(promise: Promise) {
337+
CoroutineScope(Dispatchers.IO).launch {
338+
Superwall.instance.getAssignments().fold({
339+
launch(Dispatchers.Main) {
340+
val array = Arguments.createArray()
341+
it.forEach { assignment ->
342+
array.pushMap(assignment.toJson())
343+
}
344+
promise.resolve(array)
345+
}
346+
},{
347+
promise.reject("Error", it.message)
348+
})
349+
}
350+
}
351+
335352
@ReactMethod
336353
fun getPresentationResult(
337354
event: String,

example/ios/Podfile.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1827,7 +1827,7 @@ PODS:
18271827
- Yoga
18281828
- SocketRocket (0.7.1)
18291829
- Superscript (0.2.4)
1830-
- superwall-react-native (2.0.12):
1830+
- superwall-react-native (2.0.13):
18311831
- DoubleConversion
18321832
- glog
18331833
- hermes-engine
@@ -1847,9 +1847,9 @@ PODS:
18471847
- ReactCodegen
18481848
- ReactCommon/turbomodule/bridging
18491849
- ReactCommon/turbomodule/core
1850-
- SuperwallKit (= 4.2.0)
1850+
- SuperwallKit (= 4.3.0)
18511851
- Yoga
1852-
- SuperwallKit (4.2.0):
1852+
- SuperwallKit (4.3.0):
18531853
- Superscript (= 0.2.4)
18541854
- Yoga (0.0.0)
18551855

@@ -2159,8 +2159,8 @@ SPEC CHECKSUMS:
21592159
RNVectorIcons: 3bf5f38dcb1aaf587c4101e9f3fcad5c8f5a88b2
21602160
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
21612161
Superscript: ede1cf73124c02ba1e120fbe5e15d3c4b12020a0
2162-
superwall-react-native: fbda6b4e60a83daa599879ca17caaca0ab9064f0
2163-
SuperwallKit: 251deebb67abfea37c21f8439571658ae63cf3e4
2162+
superwall-react-native: 4c92dbc94012b68fecf5cdf07eb558b421299c67
2163+
SuperwallKit: 953b1a572c6fec762727d610926c9b518e553176
21642164
Yoga: feb4910aba9742cfedc059e2b2902e22ffe9954a
21652165

21662166
PODFILE CHECKSUM: 4ef42ec436400fc9633ae647093f4155e97ca356
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import Foundation
22
import SuperwallKit
33

4-
extension ConfirmedAssignment {
4+
extension Assignment {
55
func toJson() -> [String: Any] {
66
return [
77
"experimentId": experimentId,
88
"variant": variant.toJson(),
9+
"isSentToServer": isSentToServer,
910
]
1011
}
1112
}

ios/SuperwallReactNative.mm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ @interface RCT_EXTERN_MODULE (SuperwallReactNative, NSObject)
5050
RCT_EXTERN_METHOD(dismiss : (RCTPromiseResolveBlock)
5151
resolve withRejecter : (RCTPromiseRejectBlock)reject)
5252

53+
RCT_EXTERN_METHOD(getAssignments : (RCTPromiseResolveBlock)
54+
resolve withRejecter : (RCTPromiseRejectBlock)reject)
55+
5356
RCT_EXTERN_METHOD(confirmAllAssignments : (RCTPromiseResolveBlock)
5457
resolve withRejecter : (RCTPromiseRejectBlock)reject)
5558

ios/SuperwallReactNative.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,15 @@ class SuperwallReactNative: RCTEventEmitter {
148148
resolve(configurationStatus)
149149
}
150150

151+
@objc(getAssignments:withRejecter:)
152+
func getAssignments(
153+
resolve: @escaping RCTPromiseResolveBlock,
154+
reject: @escaping RCTPromiseRejectBlock
155+
) {
156+
let assignments = Superwall.shared.getAssignments()
157+
resolve(assignments.map { $0.toJson() })
158+
}
159+
151160
@objc(getEntitlements:withRejecter:)
152161
func getEntitlements(
153162
resolve: @escaping RCTPromiseResolveBlock,

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@superwall/react-native-superwall",
3-
"version": "2.0.12",
3+
"version": "2.0.13",
44
"description": "The React Native package for Superwall",
55
"main": "lib/commonjs/index",
66
"module": "lib/module/index",

src/index.tsx

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { NativeEventEmitter } from 'react-native';
1212
import { IdentityOptions } from './public/IdentityOptions';
1313
import { EventEmitter } from 'events';
1414
import { ConfigurationStatus } from './public/ConfigurationStatus';
15-
import { ConfirmedAssignment } from './public/ConfirmedAssigments';
15+
import { Assignment } from './public/Assigments';
1616
import type { PresentationResult } from './public/PresentationResult';
1717
import { fromJson as paywallResultFromJson } from './public/PaywallResult';
1818
import { EntitlementsInfo } from './public/EntitlementsInfo';
@@ -465,18 +465,34 @@ export default class Superwall {
465465
/**
466466
* Confirms all experiment assignments and returns them in an array.
467467
*
468-
* This method tracks the {@link SuperwallEvent.confirmAllAssignments} event in the delegate.
469-
*
470468
* Note that the assignments may differ when a placement is registered due to changes
471469
* in user, placement, or device parameters used in audience filters.
472470
*
473-
* @returns {Promise<ConfirmedAssignment[]>} A promise that resolves to an array of {@link ConfirmedAssignment} objects.
471+
* @returns {Promise<Assignment[]>} A promise that resolves to an array of {@link Assignment} objects.
474472
*/
475-
async confirmAllAssignments(): Promise<ConfirmedAssignment[]> {
473+
async confirmAllAssignments(): Promise<Assignment[]> {
476474
await this.awaitConfig();
477475
const assignments = await SuperwallReactNative.confirmAllAssignments();
478476
return assignments.map((assignment: any) =>
479-
ConfirmedAssignment.fromJson(assignment)
477+
Assignment.fromJson(assignment)
478+
);
479+
}
480+
481+
/**
482+
* Gets all the experiment assignments and returns them in an array.
483+
*
484+
* This method tracks the {@link SuperwallEvent.getAssignments} event in the delegate.
485+
*
486+
* Note that the assignments may differ when a placement is registered due to changes
487+
* in user, placement, or device parameters used in audience filters.
488+
*
489+
* @returns {Promise<Assignment[]>} A promise that resolves to an array of {@link Assignment} objects.
490+
*/
491+
async getAssignments(): Promise<Assignment[]> {
492+
await this.awaitConfig();
493+
const assignments = await SuperwallReactNative.getAssignments();
494+
return assignments.map((assignment: any) =>
495+
Assignment.fromJson(assignment)
480496
);
481497
}
482498

src/public/Assigments.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { Variant } from './Experiment';
2+
3+
export class Assignment {
4+
experimentId: String;
5+
variant: Variant;
6+
isSentToServer: Boolean;
7+
8+
constructor(experimentId: String, variant: Variant, isSentToServer: Boolean) {
9+
this.experimentId = experimentId;
10+
this.variant = variant;
11+
this.isSentToServer = isSentToServer;
12+
}
13+
14+
static fromJson(json: any): Assignment {
15+
return new Assignment(
16+
json.experimentId,
17+
Variant.fromJson(json.variant),
18+
json.isSentToServer ?? false
19+
);
20+
}
21+
}
22+
23+
export type ConfirmedAssignment = Assignment;

src/public/ConfirmedAssigments.ts

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)