/* global Whisper, i18n, log */ // eslint-disable-next-line func-names (function() { 'use strict'; window.Whisper = window.Whisper || {}; Whisper.ConnectingToServerDialogView = Whisper.View.extend({ templateName: 'connecting-to-server-template', className: 'loki-dialog connecting-to-server modal', initialize(options = {}) { this.title = i18n('connectingLoad'); this.cancelText = options.cancelText || i18n('cancel'); this.serverUrl = options.serverUrl; this.channelId = options.channelId; this.once('attemptConnection', () => this.attemptConnection(options.serverUrl, options.channelId) ); this.render(); }, events: { keyup: 'onKeyup', 'click .cancel': 'close', }, async attemptConnection(serverUrl, channelId) { let conversation = null; try { conversation = await window.attemptConnection(serverUrl, channelId); } catch (e) { log.error('can not connect', e.message, e.code); return this.resolveWith({ errorCode: e.message }); } return this.resolveWith({ conversation }); }, resolveWith(result) { this.trigger('connectionResult', result); this.remove(); }, render_attributes() { return { title: this.title, cancel: this.cancelText, }; }, close() { this.trigger('connectionResult', { cancelled: true }); this.remove(); }, onKeyup(event) { switch (event.key) { case 'Escape': case 'Esc': this.close(); break; default: break; } }, }); })();