react-native-repro 3.24.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/React-Repro.podspec +2 -2
- package/android/build.gradle +28 -1
- package/android/src/main/java/io/repro/android/reactbridge/{ReproReactBridgeModule.java → ReproReactBridgeModuleImpl.java} +262 -70
- package/android/src/main/java/io/repro/android/reactbridge/{ReproRemoteConfigBridge.java → ReproRemoteConfigBridgeModuleImpl.java} +19 -34
- package/android/src/newarch/java/io/repro/android/reactbridge/ReproEventEmitterOpenUrlModule.java +54 -0
- package/android/src/newarch/java/io/repro/android/reactbridge/ReproReactBridgeModule.java +367 -0
- package/android/src/newarch/java/io/repro/android/reactbridge/ReproReactBridgePackage.java +78 -0
- package/android/src/newarch/java/io/repro/android/reactbridge/ReproRemoteConfigBridgeModule.java +79 -0
- package/android/src/{main/java/io/repro/android/reactbridge/ReproEventEmitterOpenUrl.java → oldarch/java/io/repro/android/reactbridge/ReproEventEmitterOpenUrlModule.java} +4 -4
- package/android/src/oldarch/java/io/repro/android/reactbridge/ReproReactBridgeModule.java +365 -0
- package/android/src/oldarch/java/io/repro/android/reactbridge/ReproReactBridgePackage.java +29 -0
- package/android/src/oldarch/java/io/repro/android/reactbridge/ReproRemoteConfigBridgeModule.java +77 -0
- package/index.js +44 -232
- package/ios/RPRReproReactBridge.h +19 -4
- package/ios/{RPRReproReactBridge.m → RPRReproReactBridge.mm} +660 -193
- package/ios/RPRReproReactBridgeImpl.h +111 -0
- package/ios/RPRReproReactBridgeImpl.m +713 -0
- package/package.json +22 -1
- package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.aar +0 -0
- package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.aar.md5 +1 -0
- package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.aar.sha1 +1 -0
- package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.pom +24 -0
- package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.pom.md5 +1 -0
- package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.pom.sha1 +1 -0
- package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml +3 -3
- package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml.md5 +1 -1
- package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml.sha1 +1 -1
- package/sdk-ios/Repro.xcframework/_CodeSignature/CodeDirectory +0 -0
- package/sdk-ios/Repro.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
- package/sdk-ios/Repro.xcframework/_CodeSignature/CodeResources +18 -18
- package/sdk-ios/Repro.xcframework/_CodeSignature/CodeSignature +0 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework/Headers/Repro.h +63 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework/Info.plist +0 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework/Repro +0 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/Repro.h +63 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Info.plist +0 -0
- package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Repro +0 -0
- package/src/EventEmitterOpenUrl.js +24 -0
- package/src/NativeReproEventEmitterOpenUrl.ts +9 -0
- package/src/NativeReproReactBridge.ts +134 -0
- package/src/NativeReproRemoteConfigBridge.ts +26 -0
- package/src/NewsFeedManager.js +149 -0
- package/android/src/main/java/io/repro/android/reactbridge/ReproReactBridgePackage.java +0 -36
- package/repro-version.json +0 -5
- package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.aar +0 -0
- package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.aar.md5 +0 -1
- package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.aar.sha1 +0 -1
- package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.pom +0 -9
- package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.pom.md5 +0 -1
- package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.pom.sha1 +0 -1
package/index.js
CHANGED
|
@@ -2,249 +2,61 @@
|
|
|
2
2
|
//
|
|
3
3
|
// import Repro from 'react-native-repro';
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
6
|
+
|
|
7
|
+
import { newsFeedManager } from './src/NewsFeedManager.js';
|
|
8
|
+
import { eventManager } from './src/EventEmitterOpenUrl.js';
|
|
9
|
+
const isNewArchitecture = global.nativeFabricUIManager != null;
|
|
10
|
+
|
|
11
|
+
const NativeReproReact = TurboModuleRegistry.get('ReproReactBridgeModule');
|
|
12
|
+
const NativeReproRemoteConfig = TurboModuleRegistry.get("ReproRemoteConfigBridge");
|
|
13
|
+
|
|
14
|
+
let reproConstants = {};
|
|
15
|
+
let remoteConfigConstants = {};
|
|
16
|
+
if (isNewArchitecture) {
|
|
17
|
+
reproConstants = NativeReproReact.getConstants();
|
|
18
|
+
remoteConfigConstants = NativeReproRemoteConfig.getConstants();
|
|
19
|
+
} else {
|
|
20
|
+
reproConstants = NativeReproReact;
|
|
21
|
+
remoteConfigConstants = NativeReproRemoteConfig;
|
|
10
22
|
}
|
|
11
|
-
class NewsFeedEntry {
|
|
12
|
-
constructor(value) {
|
|
13
|
-
this.id = value["newsfeed_id"];
|
|
14
|
-
this.deviceID = value["device_id"];
|
|
15
|
-
this.title = value["title"];
|
|
16
|
-
this.summary = value["summary"];
|
|
17
|
-
this.body = safeString(value["body"]);
|
|
18
|
-
this.campaignType = value["campaign_type"];
|
|
19
|
-
this.shown = value["shown"];
|
|
20
|
-
this.read = value["read"];
|
|
21
|
-
|
|
22
|
-
this.deliveredAt = value["delivered_at"];
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
const mergedRemoteConfig = new Proxy(NativeReproRemoteConfig || {}, {
|
|
25
|
+
get: function(target, prop) {
|
|
26
|
+
if (remoteConfigConstants && remoteConfigConstants.hasOwnProperty(prop)) {
|
|
27
|
+
return remoteConfigConstants[prop];
|
|
28
28
|
}
|
|
29
|
+
return target[prop];
|
|
30
|
+
}
|
|
31
|
+
});
|
|
29
32
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"title": this.title,
|
|
35
|
-
"summary": this.summary,
|
|
36
|
-
"body": this.body,
|
|
37
|
-
"campaign_type": this.campaignType,
|
|
38
|
-
"shown": this.shown,
|
|
39
|
-
"read": this.read,
|
|
40
|
-
"delivered_at": this.deliveredAt,
|
|
41
|
-
"link_url": this.linkUrl,
|
|
42
|
-
"link_url_string": this.linkUrlString,
|
|
43
|
-
"image_url": this.imageUrl,
|
|
44
|
-
"image_url_string": this.imageUrlString
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const NewsFeedModule = {
|
|
50
|
-
getNewsFeeds: (limit, callback) => {
|
|
51
|
-
NativeModules.Repro.getNewsFeeds(limit, NativeModules.Repro.CAMPAIGN_TYPE_PUSH_NOTIFICATION, (error, items) => {
|
|
52
|
-
if (!callback) return;
|
|
53
|
-
if (!items) {
|
|
54
|
-
callback(null, []);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const newsFeeds = [];
|
|
59
|
-
|
|
60
|
-
for (const item of items) {
|
|
61
|
-
newsFeeds.push(new NewsFeedEntry(item));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
callback(error, newsFeeds);
|
|
65
|
-
})
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
getNewsFeedsWithCampaignType: (limit, campaignType, callback) => {
|
|
69
|
-
NativeModules.Repro.getNewsFeeds(limit, campaignType, (error, items) => {
|
|
70
|
-
if (!callback) return;
|
|
71
|
-
if (!items) {
|
|
72
|
-
callback(null, []);
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const newsFeeds = [];
|
|
77
|
-
|
|
78
|
-
for (const item of items) {
|
|
79
|
-
newsFeeds.push(new NewsFeedEntry(item));
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
callback(error, newsFeeds);
|
|
83
|
-
})
|
|
84
|
-
},
|
|
85
|
-
|
|
86
|
-
getNewsFeedsFor: (limit, offsetID, callback) => {
|
|
87
|
-
NativeModules.Repro.getNewsFeedsFor(limit, offsetID, NativeModules.Repro.CAMPAIGN_TYPE_PUSH_NOTIFICATION, (error, items) => {
|
|
88
|
-
if (!callback) return;
|
|
89
|
-
if (!items) {
|
|
90
|
-
callback(null, []);
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const newsFeeds = [];
|
|
95
|
-
|
|
96
|
-
for (const item of items) {
|
|
97
|
-
newsFeeds.push(new NewsFeedEntry(item));
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
callback(error, newsFeeds);
|
|
101
|
-
})
|
|
102
|
-
},
|
|
103
|
-
|
|
104
|
-
getNewsFeedsWithCampaignTypeFor: (limit, offsetID, campaignType, callback) => {
|
|
105
|
-
NativeModules.Repro.getNewsFeedsFor(limit, offsetID, campaignType, (error, items) => {
|
|
106
|
-
if (!callback) return;
|
|
107
|
-
if (!items) {
|
|
108
|
-
callback(null, []);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const newsFeeds = [];
|
|
113
|
-
|
|
114
|
-
for (const item of items) {
|
|
115
|
-
newsFeeds.push(new NewsFeedEntry(item));
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
callback(error, newsFeeds);
|
|
119
|
-
})
|
|
120
|
-
},
|
|
121
|
-
|
|
122
|
-
updateNewsFeeds: (newsFeeds, callback) => {
|
|
123
|
-
const items = [];
|
|
124
|
-
|
|
125
|
-
for(const entry of newsFeeds) {
|
|
126
|
-
if (entry && entry instanceof NewsFeedEntry) {
|
|
127
|
-
items.push(entry.toJson());
|
|
128
|
-
}
|
|
33
|
+
const Repro = new Proxy({}, {
|
|
34
|
+
get: function(_target, prop) {
|
|
35
|
+
if (prop === 'setOpenUrlCallback') {
|
|
36
|
+
return eventManager[prop].bind(eventManager);
|
|
129
37
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
callback(error);
|
|
133
|
-
});
|
|
134
|
-
},
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
class RemoteConfigValue {
|
|
138
|
-
constructor(value) {
|
|
139
|
-
this.value = value;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
asString() {
|
|
143
|
-
if (typeof this.value === 'string') {
|
|
144
|
-
return this.value;
|
|
38
|
+
if (prop === 'remoteConfig') {
|
|
39
|
+
return mergedRemoteConfig;
|
|
145
40
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return this.value ?? "";
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
class RemoteConfigModule {
|
|
156
|
-
static FETCH_STATUS = NativeModules.RemoteConfig.getConstants();
|
|
157
|
-
|
|
158
|
-
static fetch(timeout, callback) {
|
|
159
|
-
NativeModules.RemoteConfig.fetch(timeout, callback);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
static activateFetched() {
|
|
163
|
-
NativeModules.RemoteConfig.activateFetched()
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
static setDefaultsFromDictionary(dict) {
|
|
167
|
-
NativeModules.RemoteConfig.setDefaultsFromDictionary(dict);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
static setDefaultsFromJsonString(str) {
|
|
171
|
-
NativeModules.RemoteConfig.setDefaultsFromJsonString(str);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
static getAllValues(callback) {
|
|
175
|
-
NativeModules.RemoteConfig.getAllValues((values) => {
|
|
176
|
-
if (!callback) return;
|
|
177
|
-
|
|
178
|
-
var retValue = {}
|
|
179
|
-
for(k in values) {
|
|
180
|
-
retValue[k] = new RemoteConfigValue(values[k]);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
callback(retValue);
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
static getAllValuesWithPrefix(prefix, callback) {
|
|
188
|
-
NativeModules.RemoteConfig.getAllValuesWithPrefix(prefix, (values) => {
|
|
189
|
-
if (!callback) return;
|
|
190
|
-
|
|
191
|
-
var retValue = {}
|
|
192
|
-
for(k in values) {
|
|
193
|
-
retValue[k] = new RemoteConfigValue(values[k]);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
callback(retValue);
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
static getValue(key, callback) {
|
|
201
|
-
NativeModules.RemoteConfig.getValue(key, (value) => {
|
|
202
|
-
if (!callback) return;
|
|
203
|
-
callback(new RemoteConfigValue(value))
|
|
204
|
-
})
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
static getLocalDefaultValue(key, callback) {
|
|
208
|
-
NativeModules.RemoteConfig.getLocalDefaultValue(key, (value) => {
|
|
209
|
-
if (!callback) return;
|
|
210
|
-
callback(new RemoteConfigValue(value))
|
|
211
|
-
})
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
static forceReset() {
|
|
215
|
-
NativeModules.RemoteConfig.forceReset()
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
class EventEmitterOpenUrl {
|
|
220
|
-
static setCallback(callback)
|
|
221
|
-
{
|
|
222
|
-
if (!this.emitter) {
|
|
223
|
-
this.emitter = new NativeEventEmitter(NativeModules.RPREventEmitterOpenUrl);
|
|
41
|
+
if (prop === 'handleWebViewUrl') {
|
|
42
|
+
return async function(...args) {
|
|
43
|
+
await NativeReproReact._handleWebViewUrl(args[0]);
|
|
44
|
+
return args[0].startsWith('repro://');
|
|
45
|
+
};
|
|
224
46
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
this.subscription.remove()
|
|
47
|
+
if (!isNewArchitecture && newsFeedManager.hasOwnProperty(prop)) {
|
|
48
|
+
return newsFeedManager[prop];
|
|
228
49
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
50
|
+
if (reproConstants && reproConstants.hasOwnProperty(prop)) {
|
|
51
|
+
return reproConstants[prop];
|
|
52
|
+
}
|
|
53
|
+
if (NativeReproReact && prop in NativeReproReact) {
|
|
54
|
+
return NativeReproReact[prop];
|
|
232
55
|
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
const Repro = {
|
|
237
|
-
...NativeModules.Repro,
|
|
238
|
-
...NewsFeedModule,
|
|
239
|
-
...{ remoteConfig: RemoteConfigModule },
|
|
240
|
-
|
|
241
|
-
setOpenUrlCallback: EventEmitterOpenUrl.setCallback,
|
|
242
56
|
|
|
243
|
-
|
|
244
|
-
NativeModules.Repro._handleWebViewUrl(url);
|
|
245
|
-
return url.startsWith('repro://');
|
|
57
|
+
return undefined;
|
|
246
58
|
}
|
|
247
|
-
}
|
|
59
|
+
});
|
|
248
60
|
|
|
249
61
|
|
|
250
62
|
export default Repro;
|
|
@@ -44,18 +44,33 @@
|
|
|
44
44
|
#endif
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
#define REPRO_REACT_NATIVE_BRIDGE_VERSION "
|
|
47
|
+
#define REPRO_REACT_NATIVE_BRIDGE_VERSION "4.0.0"
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
52
|
+
|
|
53
|
+
#import <ReproSpec/ReproSpec.h>
|
|
52
54
|
|
|
55
|
+
@interface RPRRemoteConfigBridge: NSObject <NativeReproRemoteConfigBridgeSpec>
|
|
53
56
|
@end
|
|
54
57
|
|
|
55
|
-
@interface RPRReproReactBridge
|
|
58
|
+
@interface RPRReproReactBridge: NSObject <NativeReproReactBridgeSpec>
|
|
59
|
+
@end
|
|
56
60
|
|
|
61
|
+
@interface RPREventEmitterOpenUrl: RCTEventEmitter <NativeReproEventEmitterOpenUrlSpec>
|
|
57
62
|
@end
|
|
58
63
|
|
|
59
|
-
|
|
64
|
+
#else
|
|
65
|
+
|
|
66
|
+
@interface RPRRemoteConfigBridge: NSObject <RCTBridgeModule>
|
|
67
|
+
@end
|
|
68
|
+
|
|
69
|
+
@interface RPRReproReactBridge : NSObject <RCTBridgeModule>
|
|
70
|
+
@end
|
|
60
71
|
|
|
72
|
+
@interface RPREventEmitterOpenUrl : RCTEventEmitter <RCTBridgeModule>
|
|
61
73
|
@end
|
|
74
|
+
|
|
75
|
+
#endif
|
|
76
|
+
|