aboutsummaryrefslogtreecommitdiff
path: root/src/background
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2019-02-25 22:01:37 +0900
committerGitHub <noreply@github.com>2019-02-25 22:01:37 +0900
commitcebd64a69f705482957a5e6a3f23054ca7985aa4 (patch)
tree9e8ffd8209972f839367302d3a4b68051f5c2823 /src/background
parentdfeb7e75498384af5e24255ee0fe7f8af37ac489 (diff)
parent8614c7a516b475803b0ad30a0fe8e6d0c98e7b48 (diff)
Merge pull request #539 from ueokande/webext-on-install-event
Use browser.runtime.onInstalled event
Diffstat (limited to 'src/background')
-rw-r--r--src/background/controllers/VersionController.js4
-rw-r--r--src/background/controllers/version.js13
-rw-r--r--src/background/index.js8
-rw-r--r--src/background/presenters/NotifyPresenter.js (renamed from src/background/infrastructures/Notifier.js)2
-rw-r--r--src/background/usecases/VersionUseCase.js29
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/';
}