From 8001510f0a44ada710b3da1859681693877d5136 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sat, 18 Apr 2020 12:38:51 +0300 Subject: [PATCH] Add parse location utility --- src/ControlPanel.ts | 6 +++--- src/ModeDetector.ts | 4 ++-- src/Page/VillageBlock.ts | 5 ++--- src/State/ResourcePerformanceGrabber.ts | 4 ++-- src/utils.ts | 6 ++++++ 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/ControlPanel.ts b/src/ControlPanel.ts index fb02a69..87017df 100644 --- a/src/ControlPanel.ts +++ b/src/ControlPanel.ts @@ -1,5 +1,4 @@ -import * as URLParse from 'url-parse'; -import { getNumber, uniqId, waitForLoad } from './utils'; +import { getNumber, parseLocation, uniqId, waitForLoad } from './utils'; import { Scheduler } from './Scheduler'; import { BuildPage } from './Page/BuildPage'; import { UpgradeBuildingTask } from './Task/UpgradeBuildingTask'; @@ -38,12 +37,13 @@ export class ControlPanel { async run() { await waitForLoad(); - const p = new URLParse(window.location.href, true); + const p = parseLocation(); this.logger.log('PARSED LOCATION', p); const villageId = grabActiveVillageId(); this.grabbers.grab(); + setInterval(() => this.grabbers.grab(), 2000); const scheduler = this.scheduler; const quickActions: QuickAction[] = []; diff --git a/src/ModeDetector.ts b/src/ModeDetector.ts index 3dc0cfa..7079b50 100644 --- a/src/ModeDetector.ts +++ b/src/ModeDetector.ts @@ -1,4 +1,4 @@ -import * as URLParse from 'url-parse'; +import { parseLocation } from './utils'; const SESSION_KEY = 'travian_automation_mode'; const SESSION_VALUE = 'command_execution'; @@ -14,7 +14,7 @@ export class ModeDetector { } private isAutoByLocation(): boolean { - const p = new URLParse(window.location.href, true); + const p = parseLocation(); return p.query[MODE_PARAMETER_NAME] !== undefined; } diff --git a/src/Page/VillageBlock.ts b/src/Page/VillageBlock.ts index a22d852..9c49e77 100644 --- a/src/Page/VillageBlock.ts +++ b/src/Page/VillageBlock.ts @@ -1,7 +1,6 @@ import { Coordinates, Resources, Village, VillageList } from '../Game'; import { GrabError } from '../Errors'; -import * as URLParse from 'url-parse'; -import { getNumber } from '../utils'; +import { getNumber, parseLocation } from '../utils'; function getVillageListItems() { const $elements = jQuery('#sidebarBoxVillagelist ul li a'); @@ -36,7 +35,7 @@ export function grabActiveVillageId(): number { function grabVillageInfo($el): Village { const href = $el.attr('href'); - const parsedHref = new URLParse(href || '', true); + const parsedHref = parseLocation(href || ''); const id = getNumber(parsedHref.query.newdid); const name = $el.find('.name').text(); const active = $el.hasClass('active'); diff --git a/src/State/ResourcePerformanceGrabber.ts b/src/State/ResourcePerformanceGrabber.ts index 0db00bb..dfbae95 100644 --- a/src/State/ResourcePerformanceGrabber.ts +++ b/src/State/ResourcePerformanceGrabber.ts @@ -1,11 +1,11 @@ -import * as URLParse from 'url-parse'; import { StateGrabber } from './StateGrabber'; import { grabActiveVillageId, grabResourcesPerformance } from '../Page/VillageBlock'; import { VillageState } from './VillageState'; +import { parseLocation } from '../utils'; export class ResourcePerformanceGrabber extends StateGrabber { grab(): void { - const p = new URLParse(window.location.href, true); + const p = parseLocation(); if (p.pathname !== '/dorf1.php') { return; } diff --git a/src/utils.ts b/src/utils.ts index 7832798..b9a0ad9 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,3 +1,5 @@ +import * as URLParse from 'url-parse'; + export function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } @@ -88,6 +90,10 @@ export function getNumber(value: any, def: number = 0): number { return converted === undefined ? def : converted; } +export function parseLocation(location?: string | undefined) { + return new URLParse(location || window.location.href, true); +} + export function path(p: string, query: { [key: string]: string | number | undefined } = {}) { let parts: string[] = []; for (let k in query) {