Skip to content

Commit 4f687d1

Browse files
committed
fix(messaging): use weakref
1 parent b2034d1 commit 4f687d1

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

packages/firebase-messaging-core/index.android.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ const onMessageCallbacks: Set<(message: any) => void> = new Set();
5252
const onTokenCallbacks: Set<(token: any) => void> = new Set();
5353
const onNotificationTapCallbacks: Set<(message: any) => void> = new Set();
5454

55-
let lastActivity;
55+
let lastActivity: WeakRef<androidx.appcompat.app.AppCompatActivity>;
5656
let requestPermissionLauncher: androidx.activity.result.ActivityResultLauncher<any>;
5757
let _resolve;
5858

5959
function register(args: any) {
6060
if (!lastActivity) {
61-
lastActivity = args.activity;
61+
lastActivity = new WeakRef(args.activity);
6262
requestPermissionLauncher = args.activity.registerForActivityResult(
6363
new androidx.activity.result.contract.ActivityResultContracts.RequestPermission(),
6464
new androidx.activity.result.ActivityResultCallback({
@@ -142,8 +142,8 @@ export class MessagingCore implements IMessagingCore {
142142
Application.android.once('activityCreated', register);
143143

144144
Application.android.on('activityDestroyed', (args) => {
145-
const activity = args.activity;
146-
if (lastActivity && activity === lastActivity) {
145+
const activity = lastActivity?.get?.();
146+
if (activity && args.activity === activity) {
147147
requestPermissionLauncher?.unregister?.();
148148
lastActivity = undefined;
149149
Application.android.once('activityCreated', register);

0 commit comments

Comments
 (0)