1
0
mirror of https://github.com/mgerb/ps-launcher synced 2026-01-09 01:52:57 +00:00
Files
ps-launcher/app/pages/Home/Home.tsx
2017-10-16 23:05:44 -05:00

69 lines
1.5 KiB
TypeScript

import * as _ from 'lodash';
import fs from 'fs';
import { exec } from 'child_process';
import React from 'react';
import { RouteComponentProps } from 'react-router-dom';
import './Home.scss';
interface Props extends RouteComponentProps<any> {}
interface State {
path: string;
}
export default class Home extends React.Component<Props, State> {
constructor() {
super();
this.state = {
path: '',
};
}
onFolderSelect(e: React.ChangeEvent<HTMLInputElement>) {
const path: string = _.get(e, `target.files[0].path`);
if (path) {
this.setState({ path });
}
}
async startGame() {
const { path } = this.state;
// set the realm list
await this.setRealmList();
// launch wow
exec(`"${path}/WoW.exe"`, (err, output) => {
console.log(err);
console.log(output);
});
}
setRealmList(): Promise<any> {
const { path } = this.state;
return new Promise((resolve, reject) => {
fs.writeFile(`${path}/realmlist.wtf`, 'set realmlist logon.elysium-project.org', err => {
err ? reject(err) : resolve();
});
});
}
render() {
const { path } = this.state;
return (
<div className="Home">
<div>{path}</div>
{/* hacky way of adding webkitdirectory to the input */}
<input type="file" {...{ webkitdirectory: 'true' }} onChange={this.onFolderSelect.bind(this)} />
<div>
<button onClick={this.startGame.bind(this)}>Start</button>
</div>
</div>
);
}
}