react-native-repro 3.23.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.
Files changed (50) hide show
  1. package/React-Repro.podspec +2 -2
  2. package/android/build.gradle +28 -1
  3. package/android/src/main/java/io/repro/android/reactbridge/{ReproReactBridgeModule.java → ReproReactBridgeModuleImpl.java} +265 -67
  4. package/android/src/main/java/io/repro/android/reactbridge/{ReproRemoteConfigBridge.java → ReproRemoteConfigBridgeModuleImpl.java} +19 -34
  5. package/android/src/newarch/java/io/repro/android/reactbridge/ReproEventEmitterOpenUrlModule.java +54 -0
  6. package/android/src/newarch/java/io/repro/android/reactbridge/ReproReactBridgeModule.java +367 -0
  7. package/android/src/newarch/java/io/repro/android/reactbridge/ReproReactBridgePackage.java +78 -0
  8. package/android/src/newarch/java/io/repro/android/reactbridge/ReproRemoteConfigBridgeModule.java +79 -0
  9. package/android/src/{main/java/io/repro/android/reactbridge/ReproEventEmitterOpenUrl.java → oldarch/java/io/repro/android/reactbridge/ReproEventEmitterOpenUrlModule.java} +4 -4
  10. package/android/src/oldarch/java/io/repro/android/reactbridge/ReproReactBridgeModule.java +365 -0
  11. package/android/src/oldarch/java/io/repro/android/reactbridge/ReproReactBridgePackage.java +29 -0
  12. package/android/src/oldarch/java/io/repro/android/reactbridge/ReproRemoteConfigBridgeModule.java +77 -0
  13. package/index.js +45 -228
  14. package/ios/RPRReproReactBridge.h +19 -4
  15. package/ios/{RPRReproReactBridge.m → RPRReproReactBridge.mm} +662 -187
  16. package/ios/RPRReproReactBridgeImpl.h +111 -0
  17. package/ios/RPRReproReactBridgeImpl.m +713 -0
  18. package/package.json +22 -1
  19. package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.aar +0 -0
  20. package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.aar.md5 +1 -0
  21. package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.aar.sha1 +1 -0
  22. package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.pom +24 -0
  23. package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.pom.md5 +1 -0
  24. package/sdk-android/io/repro/repro-android-sdk/5.20.0/repro-android-sdk-5.20.0.pom.sha1 +1 -0
  25. package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml +3 -3
  26. package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml.md5 +1 -1
  27. package/sdk-android/io/repro/repro-android-sdk/maven-metadata.xml.sha1 +1 -1
  28. package/sdk-ios/Repro.xcframework/_CodeSignature/CodeDirectory +0 -0
  29. package/sdk-ios/Repro.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
  30. package/sdk-ios/Repro.xcframework/_CodeSignature/CodeResources +18 -18
  31. package/sdk-ios/Repro.xcframework/_CodeSignature/CodeSignature +0 -0
  32. package/sdk-ios/Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework/Headers/Repro.h +63 -0
  33. package/sdk-ios/Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework/Info.plist +0 -0
  34. package/sdk-ios/Repro.xcframework/ios-arm64_armv7_armv7s/Repro.framework/Repro +0 -0
  35. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Headers/Repro.h +63 -0
  36. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Info.plist +0 -0
  37. package/sdk-ios/Repro.xcframework/ios-arm64_i386_x86_64-simulator/Repro.framework/Repro +0 -0
  38. package/src/EventEmitterOpenUrl.js +24 -0
  39. package/src/NativeReproEventEmitterOpenUrl.ts +9 -0
  40. package/src/NativeReproReactBridge.ts +134 -0
  41. package/src/NativeReproRemoteConfigBridge.ts +26 -0
  42. package/src/NewsFeedManager.js +149 -0
  43. package/android/src/main/java/io/repro/android/reactbridge/ReproReactBridgePackage.java +0 -36
  44. package/repro-version.json +0 -5
  45. package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.aar +0 -0
  46. package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.aar.md5 +0 -1
  47. package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.aar.sha1 +0 -1
  48. package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.pom +0 -9
  49. package/sdk-android/io/repro/repro-android-sdk/5.19.0/repro-android-sdk-5.19.0.pom.md5 +0 -1
  50. 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,244 +2,61 @@
2
2
  //
3
3
  // import Repro from 'react-native-repro';
4
4
 
5
- import { NativeModules, NativeEventEmitter } from 'react-native';
6
-
7
- const safeString = (str) => {
8
- if (str && str === 'null') { return null };
9
- return str;
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
- this.linkUrl = safeString(value["link_url"]);
25
- this.linkUrlString = safeString(value["link_url_string"]);
26
- this.imageUrl = safeString(value["image_url"]);
27
- this.imageUrlString = safeString(value["image_url_string"]);
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
- toJson() {
31
- return {
32
- "newsfeed_id": this.id,
33
- "device_id": this.deviceID,
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
- NativeModules.Repro.updateNewsFeeds(items, (error) => {
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
- return null;
148
- }
149
-
150
- toString() {
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
- if (this.subscription) {
227
- this.subscription.remove()
47
+ if (!isNewArchitecture && newsFeedManager.hasOwnProperty(prop)) {
48
+ return newsFeedManager[prop];
228
49
  }
229
-
230
- if (callback) {
231
- this.subscription = this.emitter.addListener('__RPR__openUrlCallback', url => callback(url));
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
56
 
241
- setOpenUrlCallback: EventEmitterOpenUrl.setCallback,
242
- }
57
+ return undefined;
58
+ }
59
+ });
243
60
 
244
61
 
245
62
  export default Repro;
@@ -44,18 +44,33 @@
44
44
  #endif
45
45
 
46
46
 
47
- #define REPRO_REACT_NATIVE_BRIDGE_VERSION "3.23.0"
47
+ #define REPRO_REACT_NATIVE_BRIDGE_VERSION "4.0.0"
48
48
 
49
49
 
50
50
 
51
- @interface RPRRemoteConfigBridge: NSObject <RCTBridgeModule>
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 : NSObject <RCTBridgeModule>
58
+ @interface RPRReproReactBridge: NSObject <NativeReproReactBridgeSpec>
59
+ @end
56
60
 
61
+ @interface RPREventEmitterOpenUrl: RCTEventEmitter <NativeReproEventEmitterOpenUrlSpec>
57
62
  @end
58
63
 
59
- @interface RPREventEmitterOpenUrl : RCTEventEmitter <RCTBridgeModule>
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
+