import React from 'react'; import fs from 'fs'; import { exec } from 'child_process'; import { inject, observer } from 'mobx-react'; import { AppState } from '../../state/AppState'; import './ServerList.scss'; interface Props { AppState?: AppState; } @inject('AppState') @observer export class ServerList extends React.Component { constructor(props: Props) { super(props); } private renderItems(): any { const { AppState } = this.props; return this.props.AppState.selectedExpansion.servers.map((server, index) => { const selected = AppState.selectedExpansion.selectedServerIndex === index ? ' selected' : ''; return (
AppState.setSelectedServerIndex(index)}> {server.name}
); }); } private async play(): Promise { const { directory } = this.props.AppState.selectedExpansion; // set the realm list await this.setRealmList(); // launch wow exec(`"${directory}/WoW.exe"`, (err, output) => { console.log(err); console.log(output); }); } private setRealmList(): Promise { const { directory } = this.props.AppState.selectedExpansion; const { realmlist } = this.props.AppState.selectedServer; return new Promise((resolve, reject) => { fs.writeFile(`${directory}/realmlist.wtf`, `set realmlist ${realmlist}`, err => { err ? reject(err) : resolve(); }); }); } public render(): any { const { selectedServer } = this.props.AppState; return (
Servers
{this.renderItems()}
); } }