Skip to content

Commit c1df103

Browse files
committed
break up subscription helper
1 parent eaba3e6 commit c1df103

File tree

7 files changed

+56
-88
lines changed

7 files changed

+56
-88
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
},
8585
{
8686
"path": "./build/releases/OneSignalSDK.page.es6.js",
87-
"limit": "47.59 kB",
87+
"limit": "47.565 kB",
8888
"gzip": true
8989
},
9090
{

src/core/CoreModuleDirector.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import FuturePushSubscriptionRecord from 'src/page/userModel/FuturePushSubscriptionRecord';
22
import { getPushToken } from 'src/shared/database/subscription';
3+
import { isPushSubscriptionType } from 'src/shared/helpers/subscription';
34
import { IDManager } from 'src/shared/managers/IDManager';
45
import {
56
SubscriptionChannel,
67
SubscriptionType,
78
} from 'src/shared/subscriptions/constants';
89
import type { SubscriptionChannelValue } from 'src/shared/subscriptions/types';
910
import { logMethodCall } from 'src/shared/utils/utils';
10-
import SubscriptionHelper from '../../src/shared/helpers/SubscriptionHelper';
1111
import MainHelper from '../shared/helpers/MainHelper';
1212
import { RawPushSubscription } from '../shared/models/RawPushSubscription';
1313
import CoreModule from './CoreModule';
@@ -108,9 +108,7 @@ export class CoreModuleDirector {
108108
public _getAllPushSubscriptionModels(): SubscriptionModel[] {
109109
logMethodCall('CoreModuleDirector.getAllPushSubscriptionModels');
110110
const subscriptions = this._core._subscriptionModelStore.list();
111-
return subscriptions.filter((s) =>
112-
SubscriptionHelper.isPushSubscriptionType(s.type),
113-
);
111+
return subscriptions.filter((s) => isPushSubscriptionType(s.type));
114112
}
115113

116114
async _getPushSubscriptionModelByCurrentToken(): Promise<

src/core/executors/RefreshUserOperationExecutor.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
getResponseStatusType,
33
ResponseStatusType,
44
} from 'src/shared/helpers/NetworkUtils';
5-
import SubscriptionHelper from 'src/shared/helpers/SubscriptionHelper';
5+
import { isPushSubscriptionType } from 'src/shared/helpers/subscription';
66
import Log from 'src/shared/libraries/Log';
77
import { NotificationType } from 'src/shared/subscriptions/constants';
88
import { IdentityConstants, OPERATION_NAME } from '../constants';
@@ -114,7 +114,7 @@ export class RefreshUserOperationExecutor implements IOperationExecutor {
114114

115115
// We only add a non-push subscriptions. For push, the device is the source of truth
116116
// so we don't want to cache these subscriptions from the backend.
117-
if (!SubscriptionHelper.isPushSubscriptionType(model.type)) {
117+
if (!isPushSubscriptionType(model.type)) {
118118
subscriptionModels.push(model);
119119
}
120120
}

src/core/modelStores/SubscriptionModelStore.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
type ModelChangeTagValue,
55
} from 'src/core/types/models';
66
import type { IDBStoreName } from 'src/shared/database/types';
7-
import SubscriptionHelper from 'src/shared/helpers/SubscriptionHelper';
7+
import { isPushSubscriptionType } from 'src/shared/helpers/subscription';
88
import { SubscriptionModel } from '../models/SubscriptionModel';
99

1010
// Implements logic similar to Android SDK's SubscriptionModelStore
@@ -31,7 +31,7 @@ export class SubscriptionModelStore extends SimpleModelStore<SubscriptionModel>
3131

3232
// When hydrating, preserve properties from existing PUSH subscription
3333
for (const model of models) {
34-
if (SubscriptionHelper.isPushSubscriptionType(model.type)) {
34+
if (isPushSubscriptionType(model.type)) {
3535
const existingPushModel = this.get(model._modelId);
3636
if (existingPushModel) {
3737
model.sdk = existingPushModel.sdk;

src/shared/helpers/SubscriptionHelper.ts

Lines changed: 0 additions & 76 deletions
This file was deleted.

src/shared/helpers/init.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { once } from '../utils/utils';
1414
import MainHelper from './MainHelper';
1515
import { incrementPageViewCount } from './pageview';
1616
import { triggerNotificationPermissionChanged } from './permissions';
17-
import SubscriptionHelper from './SubscriptionHelper';
17+
import { registerForPush } from './subscription';
1818

1919
export async function internalInit() {
2020
Log._debug('Called internalInit()');
@@ -96,7 +96,7 @@ async function sessionInit(): Promise<void> {
9696
}
9797

9898
export async function registerForPushNotifications(): Promise<boolean> {
99-
return !!(await SubscriptionHelper.registerForPush());
99+
return !!(await registerForPush());
100100
}
101101

102102
/**
@@ -383,7 +383,7 @@ async function handleAutoResubscribe(isOptedOut: boolean) {
383383
OneSignal._context._appConfig.safariWebId,
384384
);
385385
if (currentPermission == 'granted') {
386-
await SubscriptionHelper.registerForPush();
386+
await registerForPush();
387387
}
388388
}
389389
}

src/shared/helpers/subscription.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { SubscriptionType } from 'src/shared/subscriptions/constants';
2+
import type { SubscriptionTypeValue } from 'src/shared/subscriptions/types';
3+
import Log from '../libraries/Log';
4+
import { checkAndTriggerSubscriptionChanged } from '../listeners';
5+
import { Subscription } from '../models/Subscription';
6+
import { SubscriptionStrategyKind } from '../models/SubscriptionStrategyKind';
7+
import { IS_SERVICE_WORKER } from '../utils/EnvVariables';
8+
import { incrementPageViewCount } from './pageview';
9+
import { triggerNotificationPermissionChanged } from './permissions';
10+
11+
export async function registerForPush(): Promise<Subscription | null> {
12+
const context = OneSignal._context;
13+
let subscription: Subscription | null = null;
14+
15+
if (IS_SERVICE_WORKER) throw new Error('Unsupported environment');
16+
try {
17+
const rawSubscription = await context._subscriptionManager._subscribe(
18+
SubscriptionStrategyKind.ResubscribeExisting,
19+
);
20+
subscription =
21+
await context._subscriptionManager._registerSubscription(rawSubscription);
22+
23+
incrementPageViewCount();
24+
25+
await triggerNotificationPermissionChanged();
26+
await checkAndTriggerSubscriptionChanged();
27+
} catch (e) {
28+
Log._error(e);
29+
}
30+
return subscription;
31+
}
32+
33+
/**
34+
* Helper that checks if a given SubscriptionType is a push subscription.
35+
*/
36+
export function isPushSubscriptionType(type: SubscriptionTypeValue): boolean {
37+
switch (type) {
38+
case SubscriptionType.ChromePush:
39+
case SubscriptionType.SafariPush:
40+
case SubscriptionType.SafariLegacyPush:
41+
case SubscriptionType.FirefoxPush:
42+
return true;
43+
default:
44+
return false;
45+
}
46+
}

0 commit comments

Comments
 (0)