From 9b2b8f0608df9e4c7a251f49d8ed818b8966786e Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Thu, 1 Aug 2019 21:56:28 +0900 Subject: [PATCH] Distinct notification IDs --- src/background/presenters/NotifyPresenter.ts | 36 +++++++++----------- src/background/usecases/SettingUseCase.ts | 2 +- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/background/presenters/NotifyPresenter.ts b/src/background/presenters/NotifyPresenter.ts index 6498fbf..9785278 100644 --- a/src/background/presenters/NotifyPresenter.ts +++ b/src/background/presenters/NotifyPresenter.ts @@ -1,39 +1,37 @@ import { injectable } from 'tsyringe'; -const NOTIFICATION_ID = 'vimvixen-update'; +const NOTIFICATION_ID_UPDATE = 'vimvixen-update'; +const NOTIFICATION_ID_INVALID_SETTINGS = 'vimvixen-update-invalid-settings'; @injectable() export default class NotifyPresenter { async notifyUpdated(version: string, onclick: () => void): Promise { let title = `Vim Vixen ${version} has been installed`; let message = 'Click here to see release notes'; - await this.notify(title, message, onclick); - } - - async notifyInvalidSettings(onclick: () => void): Promise { - let title = `Loaded settings is invalid`; - // eslint-disable-next-line max-len - let message = 'The default settings is used due to the last saved settings is invalid. Check your current settings from the add-on preference'; - await this.notify(title, message, onclick); - } - private async notify( - title: string, - message: string, - onclick: () => void, - ): Promise { const listener = (id: string) => { - if (id !== NOTIFICATION_ID) { + if (id !== NOTIFICATION_ID_UPDATE) { return; } - onclick(); - browser.notifications.onClicked.removeListener(listener); }; browser.notifications.onClicked.addListener(listener); - await browser.notifications.create(NOTIFICATION_ID, { + await browser.notifications.create(NOTIFICATION_ID_UPDATE, { + 'type': 'basic', + 'iconUrl': browser.extension.getURL('resources/icon_48x48.png'), + title, + message, + }); + } + + async notifyInvalidSettings(): Promise { + let title = `Loaded settings is invalid`; + // eslint-disable-next-line max-len + let message = 'The default settings is used due to the last saved settings is invalid. Check your current settings from the add-on preference'; + + await browser.notifications.create(NOTIFICATION_ID_INVALID_SETTINGS, { 'type': 'basic', 'iconUrl': browser.extension.getURL('resources/icon_48x48.png'), title, diff --git a/src/background/usecases/SettingUseCase.ts b/src/background/usecases/SettingUseCase.ts index 694d3c1..53c8f1d 100644 --- a/src/background/usecases/SettingUseCase.ts +++ b/src/background/usecases/SettingUseCase.ts @@ -30,7 +30,7 @@ export default class SettingUseCase { try { value = data.toSettings(); } catch (e) { - this.notifyPresenter.notifyInvalidSettings(() => {}); + this.notifyPresenter.notifyInvalidSettings(); value = DefaultSettingData.toSettings(); } this.settingRepository.update(value!!);