Skip to content

Commit 418a62f

Browse files
committed
change subscription to interface
1 parent b213c03 commit 418a62f

File tree

10 files changed

+52
-73
lines changed

10 files changed

+52
-73
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,12 @@
8484
},
8585
{
8686
"path": "./build/releases/OneSignalSDK.page.es6.js",
87-
"limit": "46.124 kB",
87+
"limit": "46.035 kB",
8888
"gzip": true
8989
},
9090
{
9191
"path": "./build/releases/OneSignalSDK.sw.js",
92-
"limit": "13.4 kB",
92+
"limit": "13.302 kB",
9393
"gzip": true
9494
},
9595
{

src/onesignal/PushSubscriptionNamespace.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { IDManager } from 'src/shared/managers/IDManager';
1616
import type { EventsMap } from 'src/shared/services/types';
1717
import { EventListenerBase } from '../page/userModel/EventListenerBase';
1818
import { isCompleteSubscriptionObject } from '../shared/managers/utils';
19-
import { Subscription } from '../shared/models/Subscription';
2019
import {
2120
awaitOneSignalInitAndSupported,
2221
logMethodCall,
@@ -30,7 +29,7 @@ export default class PushSubscriptionNamespace extends EventListenerBase {
3029

3130
constructor(
3231
initialize: boolean,
33-
subscription?: Subscription,
32+
subscription?: UserSubscription,
3433
permission?: NotificationPermission,
3534
) {
3635
super();

src/onesignal/UserNamespace.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import { IdentityConstants } from 'src/core/constants';
55
import { ModelChangeTags } from 'src/core/types/models';
66
import * as Log from 'src/shared/libraries/log';
77
import { IDManager } from 'src/shared/managers/IDManager';
8+
import type { UserSubscription } from 'src/shared/subscriptions/types';
89
import type { UserChangeEvent } from '../page/models/UserChangeEvent';
9-
import { Subscription } from '../shared/models/Subscription';
1010
import User from './User';
1111
import UserNamespace from './UserNamespace';
1212

@@ -438,11 +438,11 @@ describe('Initialization', () => {
438438
});
439439

440440
test('should use provided subscription and permission when initializing', () => {
441-
const subscription = new Subscription();
442-
subscription.deviceId = 'device-123';
443-
subscription.subscriptionToken = PUSH_TOKEN;
444-
subscription.optedOut = false;
445-
subscription.createdAt = Date.now();
441+
const subscription: UserSubscription = {
442+
deviceId: 'device-123',
443+
subscriptionToken: PUSH_TOKEN,
444+
optedOut: false,
445+
};
446446

447447
const permission: NotificationPermission = 'granted';
448448

src/onesignal/UserNamespace.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import type { UserEventsMap } from 'src/shared/services/types';
22
import type { UserChangeEvent } from '../page/models/UserChangeEvent';
33
import { EventListenerBase } from '../page/userModel/EventListenerBase';
44
import Emitter from '../shared/libraries/Emitter';
5-
import { Subscription } from '../shared/models/Subscription';
65
import PushSubscriptionNamespace from './PushSubscriptionNamespace';
76
import User from './User';
87

@@ -15,7 +14,7 @@ export default class UserNamespace extends EventListenerBase {
1514

1615
constructor(
1716
initialize: boolean,
18-
subscription?: Subscription,
17+
subscription?: UserSubscription,
1918
permission?: NotificationPermission,
2019
) {
2120
super();

src/shared/database/subscription.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Subscription } from '../models/Subscription';
1+
import type { UserSubscription } from '../subscriptions/types';
22
import { db, getOptionsValue } from './client';
33

44
export const getPushId = async () => {
@@ -16,7 +16,7 @@ export const setPushToken = async (pushToken: string | undefined) => {
1616
};
1717

1818
export const getSubscription = async () => {
19-
const subscription = new Subscription();
19+
const subscription: UserSubscription = {};
2020
subscription.deviceId = (await db.get('Ids', 'userId'))?.id;
2121
subscription.subscriptionToken = (await db.get('Ids', 'registrationId'))?.id;
2222

@@ -44,7 +44,7 @@ export const getSubscription = async () => {
4444
return subscription;
4545
};
4646

47-
export const setSubscription = async (subscription: Subscription) => {
47+
export const setSubscription = async (subscription: UserSubscription) => {
4848
if (subscription.deviceId) {
4949
await db.put('Ids', {
5050
type: 'userId',

src/shared/helpers/subscription.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import { SubscriptionType } from 'src/shared/subscriptions/constants';
2-
import type { SubscriptionTypeValue } from 'src/shared/subscriptions/types';
2+
import type {
3+
SubscriptionTypeValue,
4+
UserSubscription,
5+
} from 'src/shared/subscriptions/types';
36
import { error } from '../libraries/log';
47
import { checkAndTriggerSubscriptionChanged } from '../listeners';
5-
import { Subscription } from '../models/Subscription';
68
import { SubscriptionStrategyKind } from '../models/SubscriptionStrategyKind';
79
import { IS_SERVICE_WORKER } from '../utils/env';
810
import { incrementPageViewCount } from './pageview';
911
import { triggerNotificationPermissionChanged } from './permissions';
1012

11-
export async function registerForPush(): Promise<Subscription | null> {
13+
export async function registerForPush(): Promise<UserSubscription | null> {
1214
const context = OneSignal._context;
13-
let subscription: Subscription | null = null;
15+
let subscription: UserSubscription | null = null;
1416

1517
if (IS_SERVICE_WORKER) throw new Error('Unsupported environment');
1618
try {

src/shared/managers/subscription/base.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@ import {
22
getSubscription,
33
setSubscription,
44
} from 'src/shared/database/subscription';
5-
import type { NotificationTypeValue } from 'src/shared/subscriptions/types';
5+
import { debug, warn } from 'src/shared/libraries/log';
6+
import type {
7+
NotificationTypeValue,
8+
UserSubscription,
9+
} from 'src/shared/subscriptions/types';
610
import type { ContextInterface, ContextSWInterface } from '../../context/types';
711
import { useSafariLegacyPush } from '../../environment/detect';
812
import { RawPushSubscription } from '../../models/RawPushSubscription';
9-
import type { Subscription } from '../../models/Subscription';
1013
import {
1114
SubscriptionStrategyKind,
1215
type SubscriptionStrategyKindValue,
@@ -18,7 +21,6 @@ import { getBrowserName } from '../../useragent/detect';
1821
import { base64ToUint8Array } from '../../utils/encode';
1922
import { IS_SERVICE_WORKER } from '../../utils/env';
2023
import { DEFAULT_DEVICE_ID } from './constants';
21-
import { debug, warn } from 'src/shared/libraries/log';
2224

2325
export interface SubscriptionManagerConfig {
2426
safariWebId?: string;
@@ -65,7 +67,7 @@ export class SubscriptionManagerBase<
6567
pushSubscription: RawPushSubscription | undefined,
6668
// eslint-disable-next-line @typescript-eslint/no-unused-vars
6769
_subscriptionState?: NotificationTypeValue | null,
68-
): Promise<Subscription> {
70+
): Promise<UserSubscription> {
6971
/*
7072
This may be called after the RawPushSubscription has been serialized across a postMessage
7173
frame. This means it will only have object properties and none of the functions. We have to
@@ -300,9 +302,7 @@ export class SubscriptionManagerBase<
300302
private static async _doPushUnsubscribe(
301303
pushSubscription: PushSubscription,
302304
): Promise<boolean> {
303-
debug(
304-
'[Subscription Manager] Unsubscribing existing push subscription.',
305-
);
305+
debug('[Subscription Manager] Unsubscribing existing push subscription.');
306306
const result = await pushSubscription.unsubscribe();
307307
debug(
308308
`[Subscription Manager] Unsubscribing existing push subscription result: ${result}`,

src/shared/models/Subscription.ts

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

src/shared/subscriptions/types.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,27 @@ export type SubscriptionTypeValue =
1212

1313
export type NotificationTypeValue =
1414
(typeof NotificationType)[keyof typeof NotificationType];
15+
16+
export interface UserSubscription {
17+
/**
18+
* The OneSignal subscription id.
19+
*/
20+
deviceId?: string | null;
21+
/**
22+
* The GCM/FCM registration token, as a stringified URL, or the Safari device token.
23+
*/
24+
subscriptionToken?: string | null;
25+
/**
26+
* Whether the user is opted out of notifications, set by setSubscription().
27+
*/
28+
optedOut?: boolean;
29+
/**
30+
* A UTC timestamp of when this subscription was created. This value is not modified when a
31+
* subscription is merely refreshed, only when a subscription is created anew.
32+
*/
33+
createdAt?: number | null;
34+
/**
35+
* This property is stored on the native PushSubscription object.
36+
*/
37+
expirationTime?: number | null;
38+
}

src/sw/serviceWorker/ServiceWorker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ function setupMessageListeners() {
181181
);
182182
workerMessenger._broadcast(
183183
WorkerMessengerCommand._Subscribe,
184-
subscription._serialize(),
184+
subscription,
185185
);
186186
},
187187
);
@@ -201,7 +201,7 @@ function setupMessageListeners() {
201201

202202
workerMessenger._broadcast(
203203
WorkerMessengerCommand._SubscribeNew,
204-
subscription._serialize(),
204+
subscription,
205205
);
206206
},
207207
);

0 commit comments

Comments
 (0)