diff options
-rw-r--r-- | src/background/controllers/VersionController.js | 4 | ||||
-rw-r--r-- | src/background/controllers/version.js | 13 | ||||
-rw-r--r-- | src/background/index.js | 8 | ||||
-rw-r--r-- | src/background/presenters/NotifyPresenter.js (renamed from src/background/infrastructures/Notifier.js) | 2 | ||||
-rw-r--r-- | src/background/usecases/VersionUseCase.js | 29 |
5 files changed, 30 insertions, 26 deletions
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..29aa92b 100644 --- a/src/background/index.js +++ b/src/background/index.js @@ -3,6 +3,12 @@ import SettingController from './controllers/SettingController'; import VersionController from './controllers/VersionController'; new SettingController().reload(); -new VersionController().notifyIfUpdated(); + +browser.runtime.onInstalled.addListener((details) => { + if (details.reason !== 'install' && details.reason !== 'update') { + return; + } + new VersionController().notify(); +}); new ContentMessageListener().run(); diff --git a/src/background/infrastructures/Notifier.js b/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/'; } |