aboutsummaryrefslogtreecommitdiff
path: root/src/background/usecases
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2019-07-30 21:52:22 +0900
committerShin'ya Ueoka <ueokande@i-beam.org>2019-07-30 21:52:22 +0900
commit33a16b85e412abbf54f22d21feb97e876e5dd784 (patch)
tree2abc4e5d011f2bb155ad8a5ae220508efce4a402 /src/background/usecases
parent3db11041c5b75c30b584893937876b6471e67cf2 (diff)
Handle errors on loading settings
The error on loading settings can occurs when the settings lose backward compatibility on version up, or the saved date is broken. The error is caught, then the script done fallback to default settings and notify it to user.
Diffstat (limited to 'src/background/usecases')
-rw-r--r--src/background/usecases/SettingUseCase.ts12
-rw-r--r--src/background/usecases/VersionUseCase.ts4
2 files changed, 11 insertions, 5 deletions
diff --git a/src/background/usecases/SettingUseCase.ts b/src/background/usecases/SettingUseCase.ts
index fd00f80..694d3c1 100644
--- a/src/background/usecases/SettingUseCase.ts
+++ b/src/background/usecases/SettingUseCase.ts
@@ -4,6 +4,7 @@ import PersistentSettingRepository
import SettingRepository from '../repositories/SettingRepository';
import { DefaultSettingData } from '../../shared/SettingData';
import Settings from '../../shared/Settings';
+import NotifyPresenter from '../presenters/NotifyPresenter';
@injectable()
export default class SettingUseCase {
@@ -11,6 +12,7 @@ export default class SettingUseCase {
constructor(
private persistentSettingRepository: PersistentSettingRepository,
private settingRepository: SettingRepository,
+ private notifyPresenter: NotifyPresenter,
) {
}
@@ -24,8 +26,14 @@ export default class SettingUseCase {
data = DefaultSettingData;
}
- let value = data.toSettings();
- this.settingRepository.update(value);
+ let value: Settings;
+ try {
+ value = data.toSettings();
+ } catch (e) {
+ this.notifyPresenter.notifyInvalidSettings(() => {});
+ value = DefaultSettingData.toSettings();
+ }
+ this.settingRepository.update(value!!);
return value;
}
}
diff --git a/src/background/usecases/VersionUseCase.ts b/src/background/usecases/VersionUseCase.ts
index 1d9ef8b..0ff0e9b 100644
--- a/src/background/usecases/VersionUseCase.ts
+++ b/src/background/usecases/VersionUseCase.ts
@@ -12,10 +12,8 @@ export default class VersionUseCase {
notify(): Promise<void> {
let manifest = browser.runtime.getManifest();
- let title = `Vim Vixen ${manifest.version} has been installed`;
- let message = 'Click here to see release notes';
let url = this.releaseNoteUrl(manifest.version);
- return this.notifyPresenter.notify(title, message, () => {
+ return this.notifyPresenter.notifyUpdated(manifest.version, () => {
this.tabPresenter.create(url);
});
}