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>
</div>
<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">
pause
<span
@ -21,6 +23,7 @@
<script>
import { Mutations } from './Store';
import { ManagementMode, ModeDetector } from '../ModeDetector';
export default {
data() {
@ -41,6 +44,12 @@ export default {
toggleLogs() {
this.$store.commit(Mutations.toggleLogs);
},
executorLink() {
return ModeDetector.makeLink(ManagementMode.Executor);
},
blankLink() {
return ModeDetector.makeLink(ManagementMode.Blank);
},
},
};
</script>

View File

@ -1,25 +1,51 @@
import { parseLocation } from './utils';
const SESSION_KEY = 'travian_automation_mode';
const SESSION_VALUE = 'command_execution';
const MODE_PARAMETER_NAME = 'auto-management';
export enum ManagementMode {
Blank = 'blank',
Executor = 'executor',
}
const MANAGEMENT_MODE_SESSION_KEY = 'travian_management_mode';
export const MANAGEMENT_MODE_QUERY_PARAMETER = 'ta-management-mode';
export class ModeDetector {
isAuto(): boolean {
return this.isAutoByLocation() || this.isAutoBySession();
isExecutorMode(): boolean {
return (
this.isModeByLocation(ManagementMode.Executor) ||
this.isModeBySession(ManagementMode.Executor)
);
}
setAuto(): void {
sessionStorage.setItem(SESSION_KEY, SESSION_VALUE);
setExecutorMode(): void {
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();
return p.query[MODE_PARAMETER_NAME] !== undefined;
const queryParam = p.query[MANAGEMENT_MODE_QUERY_PARAMETER];
return queryParam === mode;
}
private isAutoBySession(): boolean {
const sessionKey = sessionStorage.getItem(SESSION_KEY);
return sessionKey === SESSION_VALUE;
private isModeBySession(mode: ManagementMode): boolean {
const sessionKey = sessionStorage.getItem(MANAGEMENT_MODE_SESSION_KEY);
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 modeDetector = new ModeDetector();
if (modeDetector.isAuto()) {
modeDetector.setAuto();
if (modeDetector.isBlankMode()) {
modeDetector.setBlankMode();
logger.info('AUTO MANAGEMENT OFF');
} else if (modeDetector.isExecutorMode()) {
modeDetector.setExecutorMode();
logger.info('AUTO MANAGEMENT ON');
const executor = container.executor;
executor.run();