Skip to content

Commit 648bb61

Browse files
committed
Move listener registration into the factory
1 parent 5cc3b96 commit 648bb61

File tree

5 files changed

+15
-67
lines changed

5 files changed

+15
-67
lines changed

common/api-review/messaging-exp.api.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,6 @@ export function onBackgroundMessage(messaging: FirebaseMessaging, nextOrObserver
6767
// @public
6868
export function onMessage(messaging: FirebaseMessaging, nextOrObserver: NextFn<MessagePayload> | Observer<MessagePayload>): Unsubscribe;
6969

70-
// @internal
71-
export function _registerListeners(messaging: FirebaseMessaging): void;
72-
7370
export { Unsubscribe }
7471

7572

packages-exp/messaging-exp/src/api.ts

Lines changed: 2 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,12 @@ import {
2323
Unsubscribe,
2424
getModularInstance
2525
} from '@firebase/util';
26-
import {
27-
onNotificationClick,
28-
onPush,
29-
onSubChange
30-
} from './listeners/sw-listeners';
3126

3227
import { MessagingService } from './messaging-service';
33-
import { Provider } from '@firebase/component';
34-
import { ServiceWorkerGlobalScope } from './util/sw-types';
3528
import { deleteToken as _deleteToken } from './api/deleteToken';
3629
import { getToken as _getToken } from './api/getToken';
3730
import { onBackgroundMessage as _onBackgroundMessage } from './api/onBackgroundMessage';
3831
import { onMessage as _onMessage } from './api/onMessage';
39-
import { messageEventListener } from './listeners/window-listener';
4032

4133
/**
4234
* Retrieves a Firebase Cloud Messaging instance.
@@ -45,48 +37,8 @@ import { messageEventListener } from './listeners/window-listener';
4537
*
4638
* @public
4739
*/
48-
export function getMessagingInWindow(
49-
app: FirebaseApp = getApp()
50-
): FirebaseMessaging {
51-
app = getModularInstance(app);
52-
const messagingProvider: Provider<'messaging-exp'> = _getProvider(
53-
app,
54-
'messaging-exp'
55-
);
56-
const messaging = messagingProvider.getImmediate();
57-
58-
navigator.serviceWorker.addEventListener('message', e =>
59-
messageEventListener(messaging as MessagingService, e)
60-
);
61-
62-
return messaging;
63-
}
64-
65-
/**
66-
* Retrieves a firebase messaging instance.
67-
*
68-
* @returns the firebase messaging instance associated with the provided firebase app.
69-
*
70-
*/
71-
declare const self: ServiceWorkerGlobalScope;
72-
export function getMessagingInSw(app: FirebaseApp): FirebaseMessaging {
73-
const messagingProvider: Provider<'messaging-exp'> = _getProvider(
74-
app,
75-
'messaging-exp'
76-
);
77-
const messaging = messagingProvider.getImmediate();
78-
79-
self.addEventListener('push', e => {
80-
e.waitUntil(onPush(e, messaging as MessagingService));
81-
});
82-
self.addEventListener('pushsubscriptionchange', e => {
83-
e.waitUntil(onSubChange(e, messaging as MessagingService));
84-
});
85-
self.addEventListener('notificationclick', e => {
86-
e.waitUntil(onNotificationClick(e));
87-
});
88-
89-
return messagingProvider.getImmediate();
40+
export function getMessaging(app: FirebaseApp = getApp()): FirebaseMessaging {
41+
return _getProvider(getModularInstance(app), 'messaging-exp').getImmediate();
9042
}
9143

9244
/**

packages-exp/messaging-exp/src/helpers/register.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,15 @@ const WindowMessagingFactory: InstanceFactory<'messaging-exp'> = (
5252
throw ERROR_FACTORY.create(ErrorCode.INDEXED_DB_UNSUPPORTED);
5353
});
5454

55-
return new MessagingService(
55+
const messaging = new MessagingService(
5656
container.getProvider('app-exp').getImmediate(),
5757
container.getProvider('installations-exp-internal').getImmediate(),
5858
container.getProvider('analytics-internal')
5959
);
60+
61+
registerListeners(messaging);
62+
63+
return messaging;
6064
};
6165

6266
const SwMessagingFactory: InstanceFactory<'messaging-exp'> = (
@@ -76,11 +80,15 @@ const SwMessagingFactory: InstanceFactory<'messaging-exp'> = (
7680
throw ERROR_FACTORY.create(ErrorCode.INDEXED_DB_UNSUPPORTED);
7781
});
7882

79-
return new MessagingService(
83+
const messaging = new MessagingService(
8084
container.getProvider('app-exp').getImmediate(),
8185
container.getProvider('installations-exp-internal').getImmediate(),
8286
container.getProvider('analytics-internal')
8387
);
88+
89+
registerListeners(messaging);
90+
91+
return messaging;
8492
};
8593

8694
export function registerMessagingInWindow(): void {
@@ -96,15 +104,7 @@ export function registerMessagingInSw(): void {
96104
}
97105

98106
declare const self: ServiceWorkerGlobalScope;
99-
/**
100-
* Conditionally registers the listeners. Theses registrations are done in `getMessagingInSw` and
101-
* `getMessagingInWindow` for the v9 SDK. This method exists for `messaging-compat` because the
102-
* injected messaging instance to `messaging-compat` isn't created through the `getMessaging`
103-
* method. Thus the main package of v9 needs to export this method to support `messaging-compat`.
104-
*
105-
* @internal
106-
*/
107-
export function _registerListeners(messaging: FirebaseMessaging): void {
107+
function registerListeners(messaging: FirebaseMessaging): void {
108108
if (!!navigator) {
109109
// in window
110110
navigator.serviceWorker.addEventListener('message', e =>

packages-exp/messaging-exp/src/index.sw.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import '@firebase/installations-exp';
2020
import { FirebaseMessaging } from './interfaces/public-types';
2121
import { registerMessagingInSw } from './helpers/register';
2222

23-
export { onBackgroundMessage, getMessagingInSw as getMessaging } from './api';
23+
export { onBackgroundMessage, getMessaging } from './api';
2424
export { isSwSupported as isSupported } from './api/isSupported';
2525

2626
declare module '@firebase/component' {

packages-exp/messaging-exp/src/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,9 @@ export {
3030
getToken,
3131
deleteToken,
3232
onMessage,
33-
getMessagingInWindow as getMessaging,
33+
getMessaging,
3434
onBackgroundMessage
3535
} from './api';
36-
export { _registerListeners } from './helpers/register';
3736
export { isWindowSupported as isSupported } from './api/isSupported';
3837
export * from './interfaces/public-types';
3938

0 commit comments

Comments
 (0)