mirror of
				https://github.com/arduino/arduino-ide.git
				synced 2025-10-30 21:48:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { MessageService } from '@theia/core';
 | |
| import { FrontendApplicationContribution } from '@theia/core/lib/browser';
 | |
| import { inject, injectable } from '@theia/core/shared/inversify';
 | |
| import { LocalStorageService } from '@theia/core/lib/browser';
 | |
| import { nls } from '@theia/core/lib/common';
 | |
| import { WindowService } from '@theia/core/lib/browser/window/window-service';
 | |
| import { ArduinoPreferences } from '../arduino-preferences';
 | |
| import { SurveyNotificationService } from '../../common/protocol/survey-service';
 | |
| 
 | |
| const SURVEY_MESSAGE = nls.localize(
 | |
|   'arduino/survey/surveyMessage',
 | |
|   'Please help us improve by answering this super short survey. We value our community and would like to get to know our supporters a little better.'
 | |
| );
 | |
| const DO_NOT_SHOW_AGAIN = nls.localize(
 | |
|   'arduino/survey/dismissSurvey',
 | |
|   "Don't show again"
 | |
| );
 | |
| const GO_TO_SURVEY = nls.localize(
 | |
|   'arduino/survey/answerSurvey',
 | |
|   'Answer survey'
 | |
| );
 | |
| 
 | |
| const SURVEY_BASE_URL = 'https://surveys.hotjar.com/';
 | |
| const surveyId = '17887b40-e1f0-4bd6-b9f0-a37f229ccd8b';
 | |
| 
 | |
| @injectable()
 | |
| export class SurveyNotification implements FrontendApplicationContribution {
 | |
|   @inject(MessageService)
 | |
|   private readonly messageService: MessageService;
 | |
| 
 | |
|   @inject(LocalStorageService)
 | |
|   private readonly localStorageService: LocalStorageService;
 | |
| 
 | |
|   @inject(WindowService)
 | |
|   private readonly windowService: WindowService;
 | |
| 
 | |
|   @inject(ArduinoPreferences)
 | |
|   private readonly arduinoPreferences: ArduinoPreferences;
 | |
| 
 | |
|   @inject(SurveyNotificationService)
 | |
|   private readonly surveyNotificationService: SurveyNotificationService;
 | |
| 
 | |
|   onStart(): void {
 | |
|     this.arduinoPreferences.ready.then(async () => {
 | |
|       if (
 | |
|         (await this.surveyNotificationService.isFirstInstance()) &&
 | |
|         this.arduinoPreferences.get('arduino.survey.notification')
 | |
|       ) {
 | |
|         const surveyAnswered = await this.localStorageService.getData(
 | |
|           this.surveyKey(surveyId)
 | |
|         );
 | |
|         if (surveyAnswered !== undefined) {
 | |
|           return;
 | |
|         }
 | |
|         const answer = await this.messageService.info(
 | |
|           SURVEY_MESSAGE,
 | |
|           DO_NOT_SHOW_AGAIN,
 | |
|           GO_TO_SURVEY
 | |
|         );
 | |
|         switch (answer) {
 | |
|           case GO_TO_SURVEY:
 | |
|             this.windowService.openNewWindow(SURVEY_BASE_URL + surveyId, {
 | |
|               external: true,
 | |
|             });
 | |
|             this.localStorageService.setData(this.surveyKey(surveyId), true);
 | |
|             break;
 | |
|           case DO_NOT_SHOW_AGAIN:
 | |
|             this.localStorageService.setData(this.surveyKey(surveyId), false);
 | |
|             break;
 | |
|         }
 | |
|       }
 | |
|     });
 | |
|   }
 | |
| 
 | |
|   private surveyKey(id: string): string {
 | |
|     return `answered_survey:${id}`;
 | |
|   }
 | |
| }
 | 
