plotline-engage 4.6.2 → 4.6.4

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.
@@ -39,6 +39,6 @@ repositories {
39
39
 
40
40
  dependencies {
41
41
  implementation 'com.facebook.react:react-native:+'
42
- implementation 'com.gitlab.plotline:plotline-android-sdk:4.1.9'
42
+ implementation 'com.gitlab.plotline:plotline-android-sdk:4.2.1'
43
43
  }
44
44
 
@@ -15,6 +15,7 @@ import com.facebook.react.bridge.Arguments;
15
15
  import com.facebook.react.bridge.ReactApplicationContext;
16
16
  import com.facebook.react.bridge.ReactContextBaseJavaModule;
17
17
  import com.facebook.react.bridge.ReactMethod;
18
+ import com.facebook.react.bridge.Promise;
18
19
  import com.facebook.react.bridge.ReadableMap;
19
20
  import com.facebook.react.bridge.ReadableMapKeySetIterator;
20
21
  import com.facebook.react.bridge.ReadableType;
@@ -231,6 +232,42 @@ public class RNPlotline extends ReactContextBaseJavaModule {
231
232
  Plotline.logout();
232
233
  }
233
234
 
235
+ @ReactMethod
236
+ public void isFeatureEnabled(String key, Promise promise) {
237
+ try {
238
+ Plotline.setOnFeatureFlagsLoadedListener(() -> {
239
+ boolean result = Plotline.isFeatureEnabled(key);
240
+ promise.resolve(result);
241
+ });
242
+ } catch (Exception e) {
243
+ promise.reject("ERROR", e);
244
+ }
245
+ }
246
+
247
+ @ReactMethod
248
+ public void getFeatureFlag(String key, Promise promise) {
249
+ try {
250
+ Plotline.setOnFeatureFlagsLoadedListener(() -> {
251
+ String result = Plotline.getFeatureFlag(key);
252
+ promise.resolve(result);
253
+ });
254
+ } catch (Exception e) {
255
+ promise.reject("ERROR", e);
256
+ }
257
+ }
258
+
259
+ @ReactMethod
260
+ public void getFeatureFlagPayload(String key, Promise promise) {
261
+ try {
262
+ Plotline.setOnFeatureFlagsLoadedListener(() -> {
263
+ String result = Plotline.getFeatureFlagPayload(key);
264
+ promise.resolve(result);
265
+ });
266
+ } catch (Exception e) {
267
+ promise.reject("ERROR", e);
268
+ }
269
+ }
270
+
234
271
  public static void setNotificationMetadata(Context context, @DrawableRes int smallIcon) {
235
272
  PlotlinePush.setPlotlineNotificationMetaData(context, new PlotlineNotificationConfig(smallIcon));
236
273
  }
package/index.d.ts CHANGED
@@ -19,6 +19,9 @@ declare class plotline {
19
19
  setPlotlineRedirectListener(listener: (keyValuePairs: {[key: string]: any}) => void): void;
20
20
  setToken(token: string): void;
21
21
  logout(): void;
22
+ isFeatureEnabled(key: string): Promise<boolean>;
23
+ getFeatureFlag(key: string): Promise<string>;
24
+ getFeatureFlagPayload(key: string): Promise<string>;
22
25
  }
23
26
 
24
27
  declare const NavigationContainer = RNNavigationContainer;
package/index.js CHANGED
@@ -179,6 +179,33 @@ class plotline {
179
179
  setToken(token) {
180
180
  RNPlotline.setToken(token);
181
181
  }
182
+
183
+ isFeatureEnabled(key) {
184
+ return RNPlotline.isFeatureEnabled(key)
185
+ .then(result => result)
186
+ .catch(error => {
187
+ console.error("Error in isFeatureEnabled:", error);
188
+ return false; // Default fallback
189
+ });
190
+ }
191
+
192
+ getFeatureFlag(key) {
193
+ return RNPlotline.getFeatureFlag(key)
194
+ .then(result => result)
195
+ .catch(error => {
196
+ console.error("Error in getFeatureFlag:", error);
197
+ return null; // Default fallback
198
+ });
199
+ }
200
+
201
+ getFeatureFlagPayload(key) {
202
+ return RNPlotline.getFeatureFlagPayload(key)
203
+ .then(result => result)
204
+ .catch(error => {
205
+ console.error("Error in getFeatureFlagPayload:", error);
206
+ return null; // Default fallback
207
+ });
208
+ }
182
209
  }
183
210
 
184
211
  const Plotline = new plotline();
package/ios/RNPlotline.m CHANGED
@@ -105,6 +105,52 @@ RCT_EXPORT_METHOD(setToken:(NSString *)token)
105
105
  [PlotlinePush setPushTokenWithDeviceToken:deviceTokenData];
106
106
  }
107
107
 
108
+
109
+ // Asynchronous method for `isFeatureEnabled`
110
+ RCT_EXPORT_METHOD(isFeatureEnabled:(NSString *)key
111
+ resolver:(RCTPromiseResolveBlock)resolve
112
+ rejecter:(RCTPromiseRejectBlock)reject)
113
+ {
114
+ @try {
115
+ [Plotline setOnFeatureFlagsLoadedListenerWithFeatureFlagsLoadedListener:^{
116
+ BOOL result = [Plotline isFeatureEnabledWithKey:key];
117
+ resolve(@(result));
118
+ }];
119
+ } @catch (NSException *exception) {
120
+ reject(@"error", exception.reason, nil); // Handle errors
121
+ }
122
+ }
123
+
124
+ // Asynchronous method for `getFeatureFlag`
125
+ RCT_EXPORT_METHOD(getFeatureFlag:(NSString *)key
126
+ resolver:(RCTPromiseResolveBlock)resolve
127
+ rejecter:(RCTPromiseRejectBlock)reject)
128
+ {
129
+ @try {
130
+ [Plotline setOnFeatureFlagsLoadedListenerWithFeatureFlagsLoadedListener:^{
131
+ NSString *result = [Plotline getFeatureFlagWithKey:key];
132
+ resolve(result);
133
+ }];
134
+ } @catch (NSException *exception) {
135
+ reject(@"error", exception.reason, nil); // Handle errors
136
+ }
137
+ }
138
+
139
+ // Asynchronous method for `getFeatureFlagPayload`
140
+ RCT_EXPORT_METHOD(getFeatureFlagPayload:(NSString *)key
141
+ resolver:(RCTPromiseResolveBlock)resolve
142
+ rejecter:(RCTPromiseRejectBlock)reject)
143
+ {
144
+ @try {
145
+ [Plotline setOnFeatureFlagsLoadedListenerWithFeatureFlagsLoadedListener:^{
146
+ NSString *result = [Plotline getFeatureFlagPayloadWithKey:key];
147
+ resolve(result);
148
+ }];
149
+ } @catch (NSException *exception) {
150
+ reject(@"error", exception.reason, nil); // Handle errors
151
+ }
152
+ }
153
+
108
154
  RCT_EXPORT_MODULE();
109
155
 
110
156
  @end
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plotline-engage",
3
- "version": "4.6.2",
3
+ "version": "4.6.4",
4
4
  "description": "React Native plugin for Plotline",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"