diff options
Diffstat (limited to 'src/background/usecases')
| -rw-r--r-- | src/background/usecases/version.js | 41 | 
1 files changed, 41 insertions, 0 deletions
diff --git a/src/background/usecases/version.js b/src/background/usecases/version.js new file mode 100644 index 0000000..a681bdf --- /dev/null +++ b/src/background/usecases/version.js @@ -0,0 +1,41 @@ +import manifest from '../../../manifest.json'; +import VersionRepository from '../repositories/version'; +import TabRepository from '../repositories/tab'; +import Notifier from '../infrastructures/notifier'; + +export default class VersionInteractor { +  constructor() { +    this.versionRepository = new VersionRepository(); +    this.tabRepository = new TabRepository(); +    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.tabRepository.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/'; +  } +}  | 
