diff --git a/src/DashboardView/Header.vue b/src/DashboardView/Header.vue
index d312554..b1006ec 100644
--- a/src/DashboardView/Header.vue
+++ b/src/DashboardView/Header.vue
@@ -7,6 +7,8 @@
+
exec
+
blank
pause
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);
+ },
},
};
diff --git a/src/ModeDetector.ts b/src/ModeDetector.ts
index 7079b50..d94e1a9 100644
--- a/src/ModeDetector.ts
+++ b/src/ModeDetector.ts
@@ -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();
}
}
diff --git a/src/index.js b/src/index.js
index 59302b4..1691d63 100644
--- a/src/index.js
+++ b/src/index.js
@@ -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();