You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
| /* global i18n: false */
 | |
| /* global Whisper: false */
 | |
| 
 | |
| // eslint-disable-next-line func-names
 | |
| (function() {
 | |
|   'use strict';
 | |
| 
 | |
|   window.Whisper = window.Whisper || {};
 | |
| 
 | |
|   Whisper.DebugLogLinkView = Whisper.View.extend({
 | |
|     templateName: 'debug-log-link',
 | |
|     initialize(options) {
 | |
|       this.url = options.url;
 | |
|     },
 | |
|     render_attributes() {
 | |
|       return {
 | |
|         url: this.url,
 | |
|         reportIssue: i18n('reportIssue'),
 | |
|       };
 | |
|     },
 | |
|   });
 | |
|   Whisper.DebugLogView = Whisper.View.extend({
 | |
|     templateName: 'debug-log',
 | |
|     className: 'debug-log modal',
 | |
|     initialize() {
 | |
|       this.render();
 | |
|       this.$('textarea').val(i18n('loading'));
 | |
| 
 | |
|       // eslint-disable-next-line more/no-then
 | |
|       window.log.fetch().then(text => {
 | |
|         this.$('textarea').val(text);
 | |
|       });
 | |
|     },
 | |
|     events: {
 | |
|       'click .submit': 'submit',
 | |
|       'click .close': 'close',
 | |
|     },
 | |
|     render_attributes: {
 | |
|       title: i18n('submitDebugLog'),
 | |
|       cancel: i18n('cancel'),
 | |
|       submit: i18n('submit'),
 | |
|       close: i18n('gotIt'),
 | |
|       debugLogExplanation: i18n('debugLogExplanation'),
 | |
|     },
 | |
|     close() {
 | |
|       window.closeDebugLog();
 | |
|     },
 | |
|     async submit(e) {
 | |
|       e.preventDefault();
 | |
|       const text = this.$('textarea').val();
 | |
|       if (text.length === 0) {
 | |
|         return;
 | |
|       }
 | |
| 
 | |
|       this.$('.buttons, textarea').remove();
 | |
|       this.$('.result').addClass('loading');
 | |
| 
 | |
|       try {
 | |
|         const publishedLogURL = await window.log.publish(text);
 | |
|         const view = new Whisper.DebugLogLinkView({
 | |
|           url: publishedLogURL,
 | |
|           el: this.$('.result'),
 | |
|         });
 | |
|         this.$('.loading').removeClass('loading');
 | |
|         view.render();
 | |
|         this.$('.link')
 | |
|           .focus()
 | |
|           .select();
 | |
|       } catch (error) {
 | |
|         window.log.error('DebugLogView error:', error && error.stack ? error.stack : error);
 | |
|         this.$('.loading').removeClass('loading');
 | |
|         this.$('.result').text(i18n('debugLogError'));
 | |
|       }
 | |
|     },
 | |
|   });
 | |
| })();
 |