diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2019-08-05 21:48:46 +0900 |
---|---|---|
committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2019-08-20 21:48:05 +0900 |
commit | 34bd084a4d0d3823764e3fb78378795aba9534d3 (patch) | |
tree | 3b3914d4d493cbe4c32348e3f5beaedf86ef7f6e /src | |
parent | 07bcc15e7b487fb5815b151e8c7e84a31f875dce (diff) |
Open options page on banner click
Diffstat (limited to 'src')
-rw-r--r-- | src/background/presenters/NotifyPresenter.ts | 11 | ||||
-rw-r--r-- | src/background/usecases/SettingUseCase.ts | 4 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/background/presenters/NotifyPresenter.ts b/src/background/presenters/NotifyPresenter.ts index 9785278..defb601 100644 --- a/src/background/presenters/NotifyPresenter.ts +++ b/src/background/presenters/NotifyPresenter.ts @@ -26,11 +26,20 @@ export default class NotifyPresenter { }); } - async notifyInvalidSettings(): Promise<void> { + async notifyInvalidSettings(onclick: () => void): Promise<void> { 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'; + const listener = (id: string) => { + if (id !== NOTIFICATION_ID_INVALID_SETTINGS) { + return; + } + onclick(); + browser.notifications.onClicked.removeListener(listener); + }; + browser.notifications.onClicked.addListener(listener); + await browser.notifications.create(NOTIFICATION_ID_INVALID_SETTINGS, { 'type': 'basic', 'iconUrl': browser.extension.getURL('resources/icon_48x48.png'), diff --git a/src/background/usecases/SettingUseCase.ts b/src/background/usecases/SettingUseCase.ts index 53c8f1d..ee131c7 100644 --- a/src/background/usecases/SettingUseCase.ts +++ b/src/background/usecases/SettingUseCase.ts @@ -30,7 +30,9 @@ export default class SettingUseCase { try { value = data.toSettings(); } catch (e) { - this.notifyPresenter.notifyInvalidSettings(); + this.notifyPresenter.notifyInvalidSettings(() => { + browser.runtime.openOptionsPage(); + }); value = DefaultSettingData.toSettings(); } this.settingRepository.update(value!!); |