From f961c205a7afbcbfc4cc585fbb0362796043f1a1 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Fri, 15 Feb 2019 21:01:12 +0900 Subject: [PATCH 1/2] Use onInstalled event --- .../controllers/VersionController.js | 4 +-- src/background/controllers/version.js | 13 +++++++++ src/background/index.js | 5 +++- .../NotifyPresenter.js} | 2 +- src/background/usecases/VersionUseCase.js | 29 +++++-------------- 5 files changed, 27 insertions(+), 26 deletions(-) create mode 100644 src/background/controllers/version.js rename src/background/{infrastructures/Notifier.js => presenters/NotifyPresenter.js} (92%) diff --git a/src/background/controllers/VersionController.js b/src/background/controllers/VersionController.js index 1bcac4c..c596f9b 100644 --- a/src/background/controllers/VersionController.js +++ b/src/background/controllers/VersionController.js @@ -5,7 +5,7 @@ export default class VersionController { this.versionUseCase = new VersionUseCase(); } - notifyIfUpdated() { - this.versionUseCase.notifyIfUpdated(); + notify() { + this.versionUseCase.notify(); } } diff --git a/src/background/controllers/version.js b/src/background/controllers/version.js new file mode 100644 index 0000000..ec0f634 --- /dev/null +++ b/src/background/controllers/version.js @@ -0,0 +1,13 @@ +import VersionInteractor from '../usecases/version'; + +export default class VersionController { + constructor() { + this.versionInteractor = new VersionInteractor(); + } + + notifyIfUpdated() { + browser.runtime.onInstalled.addListener(() => { + return this.versionInteractor.notify(); + }); + } +} diff --git a/src/background/index.js b/src/background/index.js index b829f99..3e7492d 100644 --- a/src/background/index.js +++ b/src/background/index.js @@ -3,6 +3,9 @@ import SettingController from './controllers/SettingController'; import VersionController from './controllers/VersionController'; new SettingController().reload(); -new VersionController().notifyIfUpdated(); + +browser.runtime.onInstalled.addListener(() => { + new VersionController().notify(); +}); new ContentMessageListener().run(); diff --git a/src/background/infrastructures/Notifier.js b/src/background/presenters/NotifyPresenter.js similarity index 92% rename from src/background/infrastructures/Notifier.js rename to src/background/presenters/NotifyPresenter.js index 1eccc47..a81f227 100644 --- a/src/background/infrastructures/Notifier.js +++ b/src/background/presenters/NotifyPresenter.js @@ -1,6 +1,6 @@ const NOTIFICATION_ID = 'vimvixen-update'; -export default class Notifier { +export default class NotifyPresenter { notify(title, message, onclick) { const listener = (id) => { if (id !== NOTIFICATION_ID) { diff --git a/src/background/usecases/VersionUseCase.js b/src/background/usecases/VersionUseCase.js index 704c808..ed5112b 100644 --- a/src/background/usecases/VersionUseCase.js +++ b/src/background/usecases/VersionUseCase.js @@ -1,40 +1,25 @@ import manifest from '../../../manifest.json'; -import VersionRepository from '../repositories/VersionRepository'; import TabPresenter from '../presenters/TabPresenter'; -import Notifier from '../infrastructures/Notifier'; +import NotifyPresenter from '../presenters/NotifyPresenter'; export default class VersionUseCase { constructor() { - this.versionRepository = new VersionRepository(); this.tabPresenter = new TabPresenter(); - this.notifier = new Notifier(); + this.notifyPresenter = new NotifyPresenter(); } - async notifyIfUpdated() { - if (!await this.checkUpdated()) { - return; - } - - let title = 'Vim Vixen ' + manifest.version + ' has been installed'; + notify() { + let title = `Vim Vixen ${manifest.version} has been installed`; let message = 'Click here to see release notes'; - this.notifier.notify(title, message, () => { - let url = this.releaseNoteUrl(manifest.version); + let url = this.releaseNoteUrl(manifest.version); + this.notifyPresenter.notify(title, message, () => { this.tabPresenter.create(url); }); - this.versionRepository.update(manifest.version); - } - - async checkUpdated() { - let prev = await this.versionRepository.get(); - if (!prev) { - return true; - } - return manifest.version !== prev; } releaseNoteUrl(version) { if (version) { - return 'https://github.com/ueokande/vim-vixen/releases/tag/' + version; + return `https://github.com/ueokande/vim-vixen/releases/tag/${version}`; } return 'https://github.com/ueokande/vim-vixen/releases/'; } From 8614c7a516b475803b0ad30a0fe8e6d0c98e7b48 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Mon, 25 Feb 2019 21:46:33 +0900 Subject: [PATCH 2/2] Show popup when installed or updated --- src/background/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/background/index.js b/src/background/index.js index 3e7492d..29aa92b 100644 --- a/src/background/index.js +++ b/src/background/index.js @@ -4,7 +4,10 @@ import VersionController from './controllers/VersionController'; new SettingController().reload(); -browser.runtime.onInstalled.addListener(() => { +browser.runtime.onInstalled.addListener((details) => { + if (details.reason !== 'install' && details.reason !== 'update') { + return; + } new VersionController().notify(); });