From a26d8a8a1bed48a77e062914c120a23ace7bb8cf Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 24 Feb 2019 20:54:35 +0900 Subject: Capitalize background scripts --- src/background/usecases/VersionUseCase.js | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/background/usecases/VersionUseCase.js (limited to 'src/background/usecases/VersionUseCase.js') diff --git a/src/background/usecases/VersionUseCase.js b/src/background/usecases/VersionUseCase.js new file mode 100644 index 0000000..704c808 --- /dev/null +++ b/src/background/usecases/VersionUseCase.js @@ -0,0 +1,41 @@ +import manifest from '../../../manifest.json'; +import VersionRepository from '../repositories/VersionRepository'; +import TabPresenter from '../presenters/TabPresenter'; +import Notifier from '../infrastructures/Notifier'; + +export default class VersionUseCase { + constructor() { + this.versionRepository = new VersionRepository(); + this.tabPresenter = new TabPresenter(); + this.notifier = new Notifier(); + } + + async notifyIfUpdated() { + if (!await this.checkUpdated()) { + return; + } + + 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); + 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/'; + } +} -- cgit v1.2.3