import { remote, ipcRenderer } from 'electron'; import BaseComponent from '../../components/base'; import * as DomainUtil from '../../utils/domain-util'; import * as Messages from '../../../../resources/messages'; import * as t from '../../utils/translation-util'; const { dialog } = remote; interface ServerInfoFormProps { $root: Element; server: DomainUtil.ServerConf; index: number; onChange: () => void; } export default class ServerInfoForm extends BaseComponent { props: ServerInfoFormProps; $serverInfoForm: Element; $serverInfoAlias: Element; $serverIcon: Element; $deleteServerButton: Element; $openServerButton: Element; constructor(props: ServerInfoFormProps) { super(); this.props = props; } template(): string { return `
${this.props.server.alias} open_in_new
${this.props.server.url}
${t.__('Disconnect')}
`; } init(): void { this.initForm(); this.initActions(); } initForm(): void { this.$serverInfoForm = this.generateNodeFromTemplate(this.template()); this.$serverInfoAlias = this.$serverInfoForm.querySelectorAll('.server-info-alias')[0]; this.$serverIcon = this.$serverInfoForm.querySelectorAll('.server-info-icon')[0]; this.$deleteServerButton = this.$serverInfoForm.querySelectorAll('.server-delete-action')[0]; this.$openServerButton = this.$serverInfoForm.querySelectorAll('.open-tab-button')[0]; this.props.$root.append(this.$serverInfoForm); } initActions(): void { this.$deleteServerButton.addEventListener('click', async () => { const { response } = await dialog.showMessageBox({ type: 'warning', buttons: [t.__('YES'), t.__('NO')], defaultId: 0, message: t.__('Are you sure you want to disconnect this organization?') }); if (response === 0) { if (DomainUtil.removeDomain(this.props.index)) { ipcRenderer.send('reload-full-app'); } else { const { title, content } = Messages.orgRemovalError(DomainUtil.getDomain(this.props.index).url); dialog.showErrorBox(title, content); } } }); this.$openServerButton.addEventListener('click', () => { ipcRenderer.send('forward-message', 'switch-server-tab', this.props.index); }); this.$serverInfoAlias.addEventListener('click', () => { ipcRenderer.send('forward-message', 'switch-server-tab', this.props.index); }); this.$serverIcon.addEventListener('click', () => { ipcRenderer.send('forward-message', 'switch-server-tab', this.props.index); }); } }