1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-17 08:43:33 +00:00

implement notifications service

This commit is contained in:
Kyle Spearrin
2018-08-20 17:40:39 -04:00
parent ce61e62cf0
commit 50c94f587d
12 changed files with 61 additions and 18 deletions

View File

@@ -20,6 +20,7 @@ import {
UserService,
} from 'jslib/services';
import { ExportService } from 'jslib/services/export.service';
import { NotificationsService } from 'jslib/services/notifications.service';
import { SearchService } from 'jslib/services/search.service';
import { WebCryptoFunctionService } from 'jslib/services/webCryptoFunction.service';
@@ -45,6 +46,7 @@ import {
UserService as UserServiceAbstraction,
} from 'jslib/abstractions';
import { ExportService as ExportServiceAbstraction } from 'jslib/abstractions/export.service';
import { NotificationsService as NotificationsServiceAbstraction } from 'jslib/abstractions/notifications.service';
import { SearchService as SearchServiceAbstraction } from 'jslib/abstractions/search.service';
import { Analytics } from 'jslib/misc';
@@ -93,6 +95,7 @@ export default class MainBackground {
auditService: AuditServiceAbstraction;
exportService: ExportServiceAbstraction;
searchService: SearchServiceAbstraction;
notificationsService: NotificationsServiceAbstraction;
analytics: Analytics;
onUpdatedRan: boolean;
@@ -128,7 +131,6 @@ export default class MainBackground {
this.appIdService = new AppIdService(this.storageService);
this.apiService = new ApiService(this.tokenService, this.platformUtilsService,
async (expired: boolean) => await this.logout(expired));
this.environmentService = new EnvironmentService(this.apiService, this.storageService);
this.userService = new UserService(this.tokenService, this.storageService);
this.settingsService = new SettingsService(this.userService, this.storageService);
this.cipherService = new CipherService(this.cryptoService, this.userService, this.settingsService,
@@ -155,6 +157,10 @@ export default class MainBackground {
this.containerService = new ContainerService(this.cryptoService, this.platformUtilsService);
this.auditService = new AuditService(cryptoFunctionService, this.apiService);
this.exportService = new ExportService(this.folderService, this.cipherService, this.apiService);
this.notificationsService = new NotificationsService(this.userService, this.tokenService,
this.syncService, this.appIdService);
this.environmentService = new EnvironmentService(this.apiService, this.storageService,
this.notificationsService);
this.analytics = new Analytics(window, () => BrowserApi.gaFilter(), this.platformUtilsService,
this.storageService, this.appIdService);
@@ -166,7 +172,7 @@ export default class MainBackground {
// Background
this.runtimeBackground = new RuntimeBackground(this, this.autofillService, this.cipherService,
this.platformUtilsService as BrowserPlatformUtilsService, this.storageService, this.i18nService,
this.analytics);
this.analytics, this.notificationsService);
this.tabsBackground = new TabsBackground(this, this.platformUtilsService);
this.commandsBackground = new CommandsBackground(this, this.passwordGenerationService,
this.platformUtilsService, this.analytics);
@@ -202,7 +208,8 @@ export default class MainBackground {
await this.environmentService.setUrlsFromStorage();
await this.setIcon();
this.cleanupNotificationQueue();
await this.fullSync(true);
this.fullSync(true);
setTimeout(() => this.notificationsService.init(this.environmentService), 2500);
resolve();
}, 500);
});
@@ -271,6 +278,7 @@ export default class MainBackground {
await this.setIcon();
await this.refreshBadgeAndMenu();
this.notificationsService.updateConnection();
}
collectPageDetailsForContentScript(tab: any, sender: string, frameId: number = null) {

View File

@@ -22,6 +22,8 @@ import MainBackground from './main.background';
import { AutofillService } from '../services/abstractions/autofill.service';
import BrowserPlatformUtilsService from '../services/browserPlatformUtils.service';
import { NotificationsService } from 'jslib/abstractions/notifications.service';
import { Utils } from 'jslib/misc/utils';
export default class RuntimeBackground {
@@ -33,7 +35,8 @@ export default class RuntimeBackground {
constructor(private main: MainBackground, private autofillService: AutofillService,
private cipherService: CipherService, private platformUtilsService: BrowserPlatformUtilsService,
private storageService: StorageService, private i18nService: I18nService, private analytics: Analytics) {
private storageService: StorageService, private i18nService: I18nService,
private analytics: Analytics, private notificationsService: NotificationsService) {
this.isSafari = this.platformUtilsService.isSafari();
this.runtime = this.isSafari ? safari.application : chrome.runtime;
@@ -77,6 +80,10 @@ export default class RuntimeBackground {
async processMessage(msg: any, sender: any, sendResponse: any) {
switch (msg.command) {
case 'loggedIn':
await this.main.setIcon();
await this.main.refreshBadgeAndMenu(false);
this.notificationsService.updateConnection();
break;
case 'unlocked':
case 'locked':
await this.main.setIcon();