diff --git a/index.html b/index.html
index 50e62d45a..4521dd8fe 100644
--- a/index.html
+++ b/index.html
@@ -16,6 +16,16 @@
OneSignalDeferred.push(async function (OneSignal) {
await OneSignal.init({
appId,
+ // promptOptions: {
+ // slidedown: {
+ // prompts: [
+ // {
+ // type: 'email',
+ // // autoPrompt: false,
+ // },
+ // ],
+ // },
+ // },
});
});
diff --git a/package.json b/package.json
index bf9d312f3..a17bf7fa2 100644
--- a/package.json
+++ b/package.json
@@ -81,12 +81,12 @@
},
{
"path": "./build/releases/OneSignalSDK.page.es6.js",
- "limit": "54.81 kB",
+ "limit": "54.812 kB",
"gzip": true
},
{
"path": "./build/releases/OneSignalSDK.sw.js",
- "limit": "15.34 kB",
+ "limit": "15.29 kB",
"gzip": true
},
{
diff --git a/src/entries/worker.ts b/src/entries/worker.ts
index a34b3eada..ab507e1ad 100644
--- a/src/entries/worker.ts
+++ b/src/entries/worker.ts
@@ -3,4 +3,5 @@
*/
import { OneSignalServiceWorker } from '../sw/serviceWorker/ServiceWorker';
+// Expose this class to the global scope
(self as any).OneSignal = OneSignalServiceWorker;
diff --git a/src/global.d.ts b/src/global.d.ts
index dab5fe95a..571fe300f 100644
--- a/src/global.d.ts
+++ b/src/global.d.ts
@@ -34,18 +34,27 @@ declare global {
safari?: {
pushNotification?: SafariRemoteNotification;
};
- intlTelInput: ((
+ intlTelInputUtils: {
+ numberFormat: {
+ E164: string;
+ };
+ };
+ intlTelInput: (
element: Element,
options: {
autoPlaceholder: string;
separateDialCode: boolean;
},
- ) => void) & {
- utils: {
- numberFormat: {
- E164: string;
- };
- };
+ ) => {
+ isValidNumber: () => boolean;
+ getNumber: (format: string) => string;
};
}
+
+ interface WorkerGlobalScope {
+ OneSignal: _OneSignal;
+ OneSignalWorker: typeof import('./sw/serviceWorker/ServiceWorker').OneSignalServiceWorker;
+ workerMessenger: import('./sw/serviceWorker/WorkerMessengerSW').WorkerMessengerSW;
+ shouldLog: boolean;
+ }
}
diff --git a/src/page/slidedown/ChannelCaptureContainer.ts b/src/page/slidedown/ChannelCaptureContainer.ts
index 2191ee8e4..8aba0e3b0 100644
--- a/src/page/slidedown/ChannelCaptureContainer.ts
+++ b/src/page/slidedown/ChannelCaptureContainer.ts
@@ -34,7 +34,7 @@ export default class ChannelCaptureContainer {
public smsInputFieldIsValid = true;
public emailInputFieldIsValid = true;
private promptOptions: SlidedownPromptOptions;
- private itiOneSignal: any; // iti library initialization return obj
+ private itiOneSignal: ReturnType | undefined;
constructor(promptOptions: SlidedownPromptOptions) {
this.promptOptions = promptOptions;
@@ -207,7 +207,7 @@ export default class ChannelCaptureContainer {
smsInput.addEventListener('keyup', (event) => {
this.smsInputFieldIsValid =
- this.itiOneSignal.isValidNumber() ||
+ this.itiOneSignal?.isValidNumber() ||
(smsInput as HTMLInputElement)?.value === '';
// @ts-expect-error - TODO: improve type
@@ -222,7 +222,7 @@ export default class ChannelCaptureContainer {
// handles case where number is typed, then country is changed after
smsInput.addEventListener('blur', () => {
this.smsInputFieldIsValid =
- this.itiOneSignal.isValidNumber() ||
+ this.itiOneSignal?.isValidNumber() ||
(smsInput as HTMLInputElement)?.value === '';
this.updateValidationOnSmsInputChange();
@@ -369,8 +369,8 @@ export default class ChannelCaptureContainer {
getValueFromSmsInput(): string {
return (
- this.itiOneSignal.getNumber(
- window.intlTelInput.utils.numberFormat.E164,
+ this.itiOneSignal?.getNumber(
+ window.intlTelInputUtils.numberFormat.E164,
) || ''
);
}
diff --git a/src/shared/context/types.ts b/src/shared/context/types.ts
index 84d49f4b9..7d0a0c8c1 100644
--- a/src/shared/context/types.ts
+++ b/src/shared/context/types.ts
@@ -17,7 +17,6 @@ export type RecursivePartial = {
export interface ContextBase {
appConfig: AppConfig;
- sessionManager: ISessionManager;
}
export interface ContextSWInterface extends ContextBase {
@@ -30,6 +29,7 @@ export interface ContextInterface extends ContextBase {
permissionManager: PermissionManager;
serviceWorkerManager: ServiceWorkerManager;
slidedownManager: ISlidedownManager;
+ sessionManager: ISessionManager;
subscriptionManager: SubscriptionManagerPage;
tagManager: ITagManager;
updateManager: UpdateManager;
diff --git a/src/shared/libraries/Log.ts b/src/shared/libraries/Log.ts
index a82ea2c5d..cbb9fb8c1 100644
--- a/src/shared/libraries/Log.ts
+++ b/src/shared/libraries/Log.ts
@@ -2,7 +2,8 @@ import { IS_SERVICE_WORKER, LOGGING } from '../utils/EnvVariables';
export default class Log {
private static shouldLog(): boolean {
- if (IS_SERVICE_WORKER) return !!(self as any).shouldLog;
+ if (IS_SERVICE_WORKER)
+ return !!(self as unknown as ServiceWorkerGlobalScope).shouldLog;
try {
/* LocalStorage may not be accessible on browser profiles that restrict 3rd party cookies */
const level = window.localStorage.getItem('loglevel');
diff --git a/src/shared/managers/subscription/base.ts b/src/shared/managers/subscription/base.ts
index 148cd7477..c891e79c5 100644
--- a/src/shared/managers/subscription/base.ts
+++ b/src/shared/managers/subscription/base.ts
@@ -82,7 +82,9 @@ export class SubscriptionManagerBase<
if ('updateManager' in this.context) {
await this.context.updateManager.sendPushDeviceRecordUpdate();
}
- } else {
+
+ // NOTE: We only have sessionManager in the page context, should sw upsert do anything?
+ } else if ('sessionManager' in this.context) {
this.context.sessionManager.upsertSession(SessionOrigin.UserCreate);
}
diff --git a/src/shared/models/ContextSW.ts b/src/shared/models/ContextSW.ts
index 39fe60b03..40b67eefa 100644
--- a/src/shared/models/ContextSW.ts
+++ b/src/shared/models/ContextSW.ts
@@ -1,21 +1,17 @@
-import { SessionManager } from '../../sw/managers/sessionManager/SessionManager';
import type { AppConfig } from '../config/types';
import type { ContextSWInterface } from '../context/types';
import { getSubscriptionManagerSW } from '../helpers/context';
import { WorkerMessengerSW } from '../libraries/workerMessenger/sw';
-import type { ISessionManager } from '../managers/sessionManager/types';
import { SubscriptionManagerSW } from '../managers/subscription/sw';
export default class ContextSW implements ContextSWInterface {
public appConfig: AppConfig;
public subscriptionManager: SubscriptionManagerSW;
- public sessionManager: ISessionManager;
public workerMessenger: WorkerMessengerSW;
constructor(appConfig: AppConfig) {
this.appConfig = appConfig;
this.subscriptionManager = getSubscriptionManagerSW(this);
- this.sessionManager = new SessionManager();
this.workerMessenger = new WorkerMessengerSW(this);
}
}
diff --git a/src/sw/managers/sessionManager/SessionManager.ts b/src/sw/managers/sessionManager/SessionManager.ts
deleted file mode 100644
index 88ed16f6a..000000000
--- a/src/sw/managers/sessionManager/SessionManager.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import type { SessionOriginValue } from 'src/shared/session/types';
-import type { ISessionManager } from '../../../shared/managers/sessionManager/types';
-
-export class SessionManager implements ISessionManager {
- async upsertSession(_sessionOrigin: SessionOriginValue): Promise {
- // TODO: how should it be implemented if called from inside of service worker?
- }
-
- async setupSessionEventListeners(): Promise {
- // TO DO
- }
-
- async sendOnSessionUpdateFromPage(): Promise {
- // TODO: how should it be implemented if called from inside of service worker?
- }
-}
diff --git a/src/sw/serviceWorker/ServiceWorker.ts b/src/sw/serviceWorker/ServiceWorker.ts
index 926a8e203..a4a8219d7 100755
--- a/src/sw/serviceWorker/ServiceWorker.ts
+++ b/src/sw/serviceWorker/ServiceWorker.ts
@@ -91,10 +91,10 @@ export class OneSignalServiceWorker {
* service worker to close all active notifications.
*/
static get workerMessenger(): WorkerMessengerSW {
- if (!(self as any).workerMessenger) {
- (self as any).workerMessenger = new WorkerMessengerSW(undefined);
+ if (!self.workerMessenger) {
+ self.workerMessenger = new WorkerMessengerSW(undefined);
}
- return (self as any).workerMessenger;
+ return self.workerMessenger;
}
/**
@@ -1180,6 +1180,5 @@ export class OneSignalServiceWorker {
}
}
-// Expose this class to the global scope
-(self as any).OneSignalWorker = OneSignalServiceWorker;
+self.OneSignalWorker = OneSignalServiceWorker;
OneSignalServiceWorker.run();