From 21e57e207e8ebfa0a08d929eaa2164c068924a26 Mon Sep 17 00:00:00 2001 From: Andreas Coroiu Date: Tue, 19 Aug 2025 19:42:45 +0200 Subject: [PATCH] fix: refresh clearing badge on chrome --- apps/browser/src/platform/badge/badge-browser-api.ts | 12 +++--------- apps/browser/src/platform/badge/badge.service.ts | 4 ++-- .../platform/badge/test/mock-badge-browser-api.ts | 6 +++--- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/apps/browser/src/platform/badge/badge-browser-api.ts b/apps/browser/src/platform/badge/badge-browser-api.ts index e8edcd23da4..2aeb0c49742 100644 --- a/apps/browser/src/platform/badge/badge-browser-api.ts +++ b/apps/browser/src/platform/badge/badge-browser-api.ts @@ -1,4 +1,4 @@ -import { concat, defer, filter, map, merge, Observable, shareReplay, switchMap } from "rxjs"; +import { concat, defer, map, merge, Observable, shareReplay, switchMap } from "rxjs"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { Utils } from "@bitwarden/common/platform/misc/utils"; @@ -16,8 +16,7 @@ export interface RawBadgeState { } export interface BadgeBrowserApi { - activeTab$: Observable; - // activeTabs$: Observable; + tabUpdated$: Observable; setState(state: RawBadgeState, tabId?: number): Promise; getTabs(): Promise; @@ -33,7 +32,7 @@ export class DefaultBadgeBrowserApi implements BadgeBrowserApi { shareReplay({ bufferSize: 1, refCount: true }), ); - activeTab$ = concat( + tabUpdated$ = concat( defer(async () => { const currentTab = await BrowserApi.getTabFromCurrentWindow(); if (currentTab == null || currentTab.id === undefined) { @@ -45,11 +44,6 @@ export class DefaultBadgeBrowserApi implements BadgeBrowserApi { merge( this.onTabActivated$, fromChromeEvent(chrome.tabs.onUpdated).pipe( - filter( - ([_, changeInfo]) => - // Only emit if the url was updated - changeInfo.url != undefined, - ), map(([tabId, _changeInfo, tab]) => ({ tabId, windowId: tab.windowId })), ), ), diff --git a/apps/browser/src/platform/badge/badge.service.ts b/apps/browser/src/platform/badge/badge.service.ts index 82836370840..309ae588034 100644 --- a/apps/browser/src/platform/badge/badge.service.ts +++ b/apps/browser/src/platform/badge/badge.service.ts @@ -40,10 +40,10 @@ export class BadgeService { */ startListening(): Subscription { // React to tab changes - return this.badgeApi.activeTab$ + return this.badgeApi.tabUpdated$ .pipe( withLatestFrom(this.serviceState.state$), - filter(([activeTab]) => activeTab != undefined), + filter(([updatedTab]) => updatedTab != undefined), concatMap(async ([activeTab, serviceState]) => { await this.updateBadge(serviceState, activeTab!.tabId); }), diff --git a/apps/browser/src/platform/badge/test/mock-badge-browser-api.ts b/apps/browser/src/platform/badge/test/mock-badge-browser-api.ts index 6708ae52ea5..02ee9412d79 100644 --- a/apps/browser/src/platform/badge/test/mock-badge-browser-api.ts +++ b/apps/browser/src/platform/badge/test/mock-badge-browser-api.ts @@ -3,8 +3,8 @@ import { BehaviorSubject } from "rxjs"; import { BadgeBrowserApi, RawBadgeState } from "../badge-browser-api"; export class MockBadgeBrowserApi implements BadgeBrowserApi { - private _activeTab$ = new BehaviorSubject(undefined); - activeTab$ = this._activeTab$.asObservable(); + private _tabUpdated$ = new BehaviorSubject(undefined); + tabUpdated$ = this._tabUpdated$.asObservable(); specificStates: Record = {}; generalState?: RawBadgeState; @@ -29,7 +29,7 @@ export class MockBadgeBrowserApi implements BadgeBrowserApi { } setLastActivatedTab(tabId: number) { - this._activeTab$.next({ + this._tabUpdated$.next({ tabId, windowId: 1, });