Add links to automation modes

This commit is contained in:
Anton Vakhrushev 2020-07-18 13:37:23 +03:00
parent 08c7119879
commit 7d3c14a842
3 changed files with 52 additions and 14 deletions

View File

@ -7,6 +7,8 @@
</h1> </h1>
</div> </div>
<div class="actions-block"> <div class="actions-block">
<a :href="executorLink()" target="_blank">exec</a>
<a :href="blankLink()" target="_blank">blank</a>
<a href="#" v-on:click.prevent="pause"> <a href="#" v-on:click.prevent="pause">
pause pause
<span <span
@ -21,6 +23,7 @@
<script> <script>
import { Mutations } from './Store'; import { Mutations } from './Store';
import { ManagementMode, ModeDetector } from '../ModeDetector';
export default { export default {
data() { data() {
@ -41,6 +44,12 @@ export default {
toggleLogs() { toggleLogs() {
this.$store.commit(Mutations.toggleLogs); this.$store.commit(Mutations.toggleLogs);
}, },
executorLink() {
return ModeDetector.makeLink(ManagementMode.Executor);
},
blankLink() {
return ModeDetector.makeLink(ManagementMode.Blank);
},
}, },
}; };
</script> </script>

View File

@ -1,25 +1,51 @@
import { parseLocation } from './utils'; import { parseLocation } from './utils';
const SESSION_KEY = 'travian_automation_mode'; export enum ManagementMode {
const SESSION_VALUE = 'command_execution'; Blank = 'blank',
const MODE_PARAMETER_NAME = 'auto-management'; Executor = 'executor',
}
const MANAGEMENT_MODE_SESSION_KEY = 'travian_management_mode';
export const MANAGEMENT_MODE_QUERY_PARAMETER = 'ta-management-mode';
export class ModeDetector { export class ModeDetector {
isAuto(): boolean { isExecutorMode(): boolean {
return this.isAutoByLocation() || this.isAutoBySession(); return (
this.isModeByLocation(ManagementMode.Executor) ||
this.isModeBySession(ManagementMode.Executor)
);
} }
setAuto(): void { setExecutorMode(): void {
sessionStorage.setItem(SESSION_KEY, SESSION_VALUE); sessionStorage.setItem(MANAGEMENT_MODE_SESSION_KEY, ManagementMode.Executor);
} }
private isAutoByLocation(): boolean { isBlankMode(): boolean {
return (
this.isModeByLocation(ManagementMode.Blank) ||
this.isModeBySession(ManagementMode.Blank)
);
}
setBlankMode() {
sessionStorage.setItem(MANAGEMENT_MODE_SESSION_KEY, ManagementMode.Blank);
}
private isModeByLocation(mode: ManagementMode): boolean {
const p = parseLocation(); const p = parseLocation();
return p.query[MODE_PARAMETER_NAME] !== undefined; const queryParam = p.query[MANAGEMENT_MODE_QUERY_PARAMETER];
return queryParam === mode;
} }
private isAutoBySession(): boolean { private isModeBySession(mode: ManagementMode): boolean {
const sessionKey = sessionStorage.getItem(SESSION_KEY); const sessionKey = sessionStorage.getItem(MANAGEMENT_MODE_SESSION_KEY);
return sessionKey === SESSION_VALUE; return sessionKey === mode;
}
static makeLink(mode: ManagementMode): string {
const p = parseLocation();
p.query[MANAGEMENT_MODE_QUERY_PARAMETER] = mode;
return p.toString();
} }
} }

View File

@ -11,8 +11,11 @@ function main() {
const container = new Container(TxtVersion); const container = new Container(TxtVersion);
const modeDetector = new ModeDetector(); const modeDetector = new ModeDetector();
if (modeDetector.isAuto()) { if (modeDetector.isBlankMode()) {
modeDetector.setAuto(); modeDetector.setBlankMode();
logger.info('AUTO MANAGEMENT OFF');
} else if (modeDetector.isExecutorMode()) {
modeDetector.setExecutorMode();
logger.info('AUTO MANAGEMENT ON'); logger.info('AUTO MANAGEMENT ON');
const executor = container.executor; const executor = container.executor;
executor.run(); executor.run();