Distinct notification IDs
This commit is contained in:
		
							parent
							
								
									33a16b85e4
								
							
						
					
					
						commit
						9b2b8f0608
					
				
					 2 changed files with 18 additions and 20 deletions
				
			
		|  | @ -1,39 +1,37 @@ | |||
| import { injectable } from 'tsyringe'; | ||||
| 
 | ||||
| const NOTIFICATION_ID = 'vimvixen-update'; | ||||
| const NOTIFICATION_ID_UPDATE = 'vimvixen-update'; | ||||
| const NOTIFICATION_ID_INVALID_SETTINGS = 'vimvixen-update-invalid-settings'; | ||||
| 
 | ||||
| @injectable() | ||||
| export default class NotifyPresenter { | ||||
|   async notifyUpdated(version: string, onclick: () => void): Promise<void> { | ||||
|     let title = `Vim Vixen ${version} has been installed`; | ||||
|     let message = 'Click here to see release notes'; | ||||
|     await this.notify(title, message, onclick); | ||||
|   } | ||||
| 
 | ||||
|   async notifyInvalidSettings(onclick: () => void): Promise<void> { | ||||
|     let title = `Loaded settings is invalid`; | ||||
|     // eslint-disable-next-line max-len
 | ||||
|     let message = 'The default settings is used due to the last saved settings is invalid.  Check your current settings from the add-on preference'; | ||||
|     await this.notify(title, message, onclick); | ||||
|   } | ||||
| 
 | ||||
|   private async notify( | ||||
|     title: string, | ||||
|     message: string, | ||||
|     onclick: () => void, | ||||
|   ): Promise<void> { | ||||
|     const listener = (id: string) => { | ||||
|       if (id !== NOTIFICATION_ID) { | ||||
|       if (id !== NOTIFICATION_ID_UPDATE) { | ||||
|         return; | ||||
|       } | ||||
| 
 | ||||
|       onclick(); | ||||
| 
 | ||||
|       browser.notifications.onClicked.removeListener(listener); | ||||
|     }; | ||||
|     browser.notifications.onClicked.addListener(listener); | ||||
| 
 | ||||
|     await browser.notifications.create(NOTIFICATION_ID, { | ||||
|     await browser.notifications.create(NOTIFICATION_ID_UPDATE, { | ||||
|       'type': 'basic', | ||||
|       'iconUrl': browser.extension.getURL('resources/icon_48x48.png'), | ||||
|       title, | ||||
|       message, | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   async notifyInvalidSettings(): Promise<void> { | ||||
|     let title = `Loaded settings is invalid`; | ||||
|     // eslint-disable-next-line max-len
 | ||||
|     let message = 'The default settings is used due to the last saved settings is invalid.  Check your current settings from the add-on preference'; | ||||
| 
 | ||||
|     await browser.notifications.create(NOTIFICATION_ID_INVALID_SETTINGS, { | ||||
|       'type': 'basic', | ||||
|       'iconUrl': browser.extension.getURL('resources/icon_48x48.png'), | ||||
|       title, | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ export default class SettingUseCase { | |||
|     try { | ||||
|       value = data.toSettings(); | ||||
|     } catch (e) { | ||||
|       this.notifyPresenter.notifyInvalidSettings(() => {}); | ||||
|       this.notifyPresenter.notifyInvalidSettings(); | ||||
|       value = DefaultSettingData.toSettings(); | ||||
|     } | ||||
|     this.settingRepository.update(value!!); | ||||
|  |  | |||
		Reference in a new issue