Skip to content

Commit

Permalink
feat(messaging): add support for setDeliveryMetricsExportToBigQuery (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
pavan168 authored Sep 17, 2022
1 parent 6f67c2c commit 930abd6
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -221,10 +221,29 @@ public void unsubscribeFromTopic(String topic, Promise promise) {
});
}

@ReactMethod
public void setDeliveryMetricsExportToBigQuery(Boolean enabled, Promise promise) {
Tasks.call(
getExecutor(),
() -> {
FirebaseMessaging.getInstance().setDeliveryMetricsExportToBigQuery(enabled);
return null;
})
.addOnCompleteListener(
task -> {
if (task.isSuccessful()) {
promise.resolve(FirebaseMessaging.getInstance().deliveryMetricsExportToBigQueryEnabled());
} else {
rejectPromiseWithExceptionMap(promise, task.getException());
}
});
}

@Override
public Map<String, Object> getConstants() {
final Map<String, Object> constants = new HashMap<>();
constants.put("isAutoInitEnabled", FirebaseMessaging.getInstance().isAutoInitEnabled());
constants.put("isDeliveryMetricsExportToBigQueryEnabled", FirebaseMessaging.getInstance().deliveryMetricsExportToBigQueryEnabled());
return constants;
}

Expand Down
26 changes: 26 additions & 0 deletions packages/messaging/e2e/messaging.e2e.js
Original file line number Diff line number Diff line change
Expand Up @@ -320,4 +320,30 @@ describe('messaging()', function () {
}
});
});

describe('setDeliveryMetricsExportToBigQuery()', function () {
afterEach(async function () {
await firebase.messaging().setDeliveryMetricsExportToBigQuery(false);
});

it('throws if enabled is not a boolean', function () {
try {
firebase.messaging().setDeliveryMetricsExportToBigQuery(123);
return Promise.reject(new Error('Did not throw Error.'));
} catch (e) {
e.message.should.containEql("'enabled' expected a boolean value");
return Promise.resolve();
}
});

it('sets the value', async function () {
should.equal(firebase.messaging().isDeliveryMetricsExportToBigQueryEnabled, false);
await firebase.messaging().setDeliveryMetricsExportToBigQuery(true);
should.equal(firebase.messaging().isDeliveryMetricsExportToBigQueryEnabled, true);

// Set it back to the default value for future runs in re-use mode
await firebase.messaging().setDeliveryMetricsExportToBigQuery(false);
should.equal(firebase.messaging().isDeliveryMetricsExportToBigQueryEnabled, false);
});
});
});
2 changes: 2 additions & 0 deletions packages/messaging/ios/RNFBMessaging/RNFBMessagingModule.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,6 @@
@interface RNFBMessagingModule : NSObject <RCTBridgeModule>
+ (NSDictionary *_Nonnull)addCustomPropsToUserProps:(NSDictionary *_Nullable)userProps
withLaunchOptions:(NSDictionary *_Nullable)launchOptions;
@property BOOL isDeliveryMetricsExportToBigQueryEnabled;

@end
15 changes: 15 additions & 0 deletions packages/messaging/ios/RNFBMessaging/RNFBMessagingModule.m
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ - (NSDictionary *)constantsToExport {
@([RCTConvert BOOL:@([FIRMessaging messaging].autoInitEnabled)]);
constants[@"isRegisteredForRemoteNotifications"] = @(
[RCTConvert BOOL:@([[UIApplication sharedApplication] isRegisteredForRemoteNotifications])]);
constants[@"isDeliveryMetricsExportToBigQueryEnabled"] =
@([RCTConvert BOOL:@(_isDeliveryMetricsExportToBigQueryEnabled)]);
return constants;
}

Expand Down Expand Up @@ -369,4 +371,17 @@ - (NSDictionary *)constantsToExport {
}];
}

RCT_EXPORT_METHOD(setDeliveryMetricsExportToBigQuery
: (BOOL)enabled
: (RCTPromiseResolveBlock)resolve
: (RCTPromiseRejectBlock)reject) {
@try {
_isDeliveryMetricsExportToBigQueryEnabled = enabled;
} @catch (NSException *exception) {
return [RNFBSharedUtils rejectPromiseWithExceptionDict:reject exception:exception];
}

return resolve([NSNull null]);
}

@end
17 changes: 17 additions & 0 deletions packages/messaging/lib/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -995,6 +995,23 @@ export namespace FirebaseMessagingTypes {
* @param topic The topic name.
*/
unsubscribeFromTopic(topic: string): Promise<void>;

/**
* Sets whether message delivery metrics are exported to BigQuery is enabled or disabled.
*
* The value is false by default. Set this to true to allow exporting of message delivery metrics to BigQuery.
*
*
* #### Example
*
* ```js
* // Enable exports of message delivery metrics to BigQuery
* await firebase.messaging().setDeliveryMetricsExportToBigQuery(true);
* ```
*
* @param enabled A boolean value to enable or disable exporting of message delivery metrics to BigQuery.
*/
setDeliveryMetricsExportToBigQuery(enabled: boolean): Promise<void>;
}
}

Expand Down
19 changes: 19 additions & 0 deletions packages/messaging/lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ class FirebaseMessagingModule extends FirebaseModule {
super(...args);
this._isAutoInitEnabled =
this.native.isAutoInitEnabled != null ? this.native.isAutoInitEnabled : true;
this._isDeliveryMetricsExportToBigQueryEnabled =
this.native.isDeliveryMetricsExportToBigQueryEnabled != null
? this.native.isDeliveryMetricsExportToBigQueryEnabled
: false;
this._isRegisteredForRemoteNotifications =
this.native.isRegisteredForRemoteNotifications != null
? this.native.isRegisteredForRemoteNotifications
Expand Down Expand Up @@ -127,6 +131,10 @@ class FirebaseMessagingModule extends FirebaseModule {
return this._isRegisteredForRemoteNotifications;
}

get isDeliveryMetricsExportToBigQueryEnabled() {
return this._isDeliveryMetricsExportToBigQueryEnabled;
}

setAutoInitEnabled(enabled) {
if (!isBoolean(enabled)) {
throw new Error(
Expand Down Expand Up @@ -429,6 +437,17 @@ class FirebaseMessagingModule extends FirebaseModule {
'firebase.messaging().usePublicVapidKey() is not supported on react-native-firebase.',
);
}

setDeliveryMetricsExportToBigQuery(enabled) {
if (!isBoolean(enabled)) {
throw new Error(
"firebase.messaging().setDeliveryMetricsExportToBigQuery(*) 'enabled' expected a boolean value.",
);
}

this._isDeliveryMetricsExportToBigQueryEnabled = enabled;
return this.native.setDeliveryMetricsExportToBigQuery(enabled);
}
}

// import { SDK_VERSION } from '@react-native-firebase/messaging';
Expand Down

1 comment on commit 930abd6

@vercel
Copy link

@vercel vercel bot commented on 930abd6 Sep 17, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.