Skip to content

Commit 2231742

Browse files
committed
Only send subscription deltas (payload in operation) for update sub
Motivation: when updating a subscription, we can send only the `deltas`. While sending the entire object also works, this is a better implementation.
1 parent 5fc3a1e commit 2231742

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

src/core/requestService/SubscriptionRequests.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,19 @@ export default class SubscriptionRequests {
4141
static async updateSubscription<Model>(operation: Operation<Model>): Promise<ExecutorResult<SupportedSubscription>> {
4242
logMethodCall("SubscriptionRequests.updateSubscription", operation);
4343

44-
const { subscription, subscriptionId } = processSubscriptionOperation(operation);
44+
const { payload, subscriptionId } = processSubscriptionOperation(operation);
4545

4646
if (!subscriptionId) {
4747
throw new OneSignalError("updateSubscription: subscriptionId is not defined");
4848
}
49+
50+
if (!payload) {
51+
throw new OneSignalError("updateSubscription: payload is not defined");
52+
}
53+
4954
const appId = await MainHelper.getAppId();
5055

51-
const response = await RequestService.updateSubscription({ appId }, subscriptionId, subscription);
56+
const response = await RequestService.updateSubscription({ appId }, subscriptionId, payload);
5257
return SubscriptionRequests._processSubscriptionResponse(response);
5358
}
5459

src/core/requestService/helpers.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export function processSubscriptionOperation<Model>(operation: Operation<Model>)
1111
subscription: SupportedSubscription;
1212
aliasPair: AliasPair;
1313
subscriptionId?: string;
14+
payload?: Partial<SupportedSubscription>
1415
} {
1516
const subscriptionOSModel = operation.model;
1617
const subscription = subscriptionOSModel?.data;
@@ -25,20 +26,21 @@ export function processSubscriptionOperation<Model>(operation: Operation<Model>)
2526
throw new OneSignalError(`processSubscriptionModel: bad subscription object: ${JSON.stringify(subscription)}`);
2627
}
2728

28-
let subscriptionId;
29-
if (isCompleteSubscriptionObject(subscription)) {
30-
subscriptionId = subscription?.id;
31-
}
32-
3329
// fixes typescript errors
3430
if (!subscriptionOSModel.onesignalId) {
3531
throw new OneSignalError(`processSubscriptionModel: missing onesignalId: ${JSON.stringify(subscriptionOSModel)}`);
3632
}
3733

34+
let subscriptionId;
35+
if (isCompleteSubscriptionObject(subscription)) {
36+
subscriptionId = subscription?.id;
37+
}
38+
3839
return {
3940
subscription,
4041
aliasPair: new AliasPair(AliasPair.ONESIGNAL_ID, subscriptionOSModel.onesignalId),
4142
subscriptionId,
43+
payload: operation.payload as Partial<SupportedSubscription>
4244
};
4345
}
4446

0 commit comments

Comments
 (0)