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();