1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-05 19:23:19 +00:00

fix: refresh clearing badge on chrome

This commit is contained in:
Andreas Coroiu
2025-08-19 19:42:45 +02:00
parent 321cd86a2c
commit 21e57e207e
3 changed files with 8 additions and 14 deletions

View File

@@ -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<chrome.tabs.TabActiveInfo | undefined>;
// activeTabs$: Observable<chrome.tabs.Tab[]>;
tabUpdated$: Observable<chrome.tabs.TabActiveInfo | undefined>;
setState(state: RawBadgeState, tabId?: number): Promise<void>;
getTabs(): Promise<number[]>;
@@ -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 })),
),
),

View File

@@ -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);
}),

View File

@@ -3,8 +3,8 @@ import { BehaviorSubject } from "rxjs";
import { BadgeBrowserApi, RawBadgeState } from "../badge-browser-api";
export class MockBadgeBrowserApi implements BadgeBrowserApi {
private _activeTab$ = new BehaviorSubject<chrome.tabs.TabActiveInfo | undefined>(undefined);
activeTab$ = this._activeTab$.asObservable();
private _tabUpdated$ = new BehaviorSubject<chrome.tabs.TabActiveInfo | undefined>(undefined);
tabUpdated$ = this._tabUpdated$.asObservable();
specificStates: Record<number, RawBadgeState> = {};
generalState?: RawBadgeState;
@@ -29,7 +29,7 @@ export class MockBadgeBrowserApi implements BadgeBrowserApi {
}
setLastActivatedTab(tabId: number) {
this._activeTab$.next({
this._tabUpdated$.next({
tabId,
windowId: 1,
});