From 4dd11a60f7c16042beea4825992db3cebb13efa8 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sun, 12 Apr 2020 10:01:56 +0300 Subject: [PATCH] Extract some dom-manipulations --- src/Action/UpgradeBuildingAction.ts | 16 +++++++++------- src/Dashboard/Dashboard.ts | 4 ++-- src/Page/BuildingPage.ts | 9 +++++++++ src/Page/SlotBlock.ts | 7 ++----- 4 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 src/Page/BuildingPage.ts diff --git a/src/Action/UpgradeBuildingAction.ts b/src/Action/UpgradeBuildingAction.ts index c688be2..f22a49e 100644 --- a/src/Action/UpgradeBuildingAction.ts +++ b/src/Action/UpgradeBuildingAction.ts @@ -1,17 +1,19 @@ import { ActionController, registerAction } from './ActionController'; import { Args } from '../Common'; -import { TryLaterError } from '../Errors'; +import { GrabError, TryLaterError } from '../Errors'; import { Task } from '../Storage/TaskQueue'; +import { clickUpgradeButton } from '../Page/BuildingPage'; @registerAction export class UpgradeBuildingAction extends ActionController { async run(args: Args, task: Task): Promise { - const btn = jQuery('.upgradeButtonsContainer .section1 button.green.build'); - - if (btn.length !== 1) { - throw new TryLaterError(task.id, 15 * 60, 'No upgrade button, try later'); + try { + clickUpgradeButton(); + } catch (e) { + if (e instanceof GrabError) { + throw new TryLaterError(task.id, 15 * 60, 'No upgrade button, try later'); + } + throw e; } - - btn.trigger('click'); } } diff --git a/src/Dashboard/Dashboard.ts b/src/Dashboard/Dashboard.ts index 777cb86..8a917f5 100644 --- a/src/Dashboard/Dashboard.ts +++ b/src/Dashboard/Dashboard.ts @@ -7,7 +7,7 @@ import { BuildPage } from '../Page/BuildPage'; import { UpgradeBuildingTask } from '../Task/UpgradeBuildingTask'; import { grabResources } from '../Page/ResourcesBlock'; import { grabActiveVillageId, grabVillageList } from '../Page/VillageBlock'; -import { onResourceSlotCtrlClick, showBuildingSlotIds, showFieldsSlotIds } from '../Page/SlotBlock'; +import { onResourceSlotCtrlClick, showBuildingSlotIds, showResourceSlotIds } from '../Page/SlotBlock'; export class Dashboard { private readonly version: string; @@ -42,7 +42,7 @@ export class Dashboard { .map(t => t.args.buildId); if (p.pathname === '/dorf1.php') { - showFieldsSlotIds(buildingsInQueue); + showResourceSlotIds(buildingsInQueue); onResourceSlotCtrlClick(buildId => { this.scheduler.scheduleTask(UpgradeBuildingTask.name, { villageId, buildId }); const n = new Notification(`Building ${buildId} scheduled`); diff --git a/src/Page/BuildingPage.ts b/src/Page/BuildingPage.ts new file mode 100644 index 0000000..aee2aef --- /dev/null +++ b/src/Page/BuildingPage.ts @@ -0,0 +1,9 @@ +import { GrabError } from '../Errors'; + +export function clickUpgradeButton() { + const btn = jQuery('.upgradeButtonsContainer .section1 button.green.build'); + if (btn.length !== 1) { + throw new GrabError('No upgrade button, try later'); + } + btn.trigger('click'); +} diff --git a/src/Page/SlotBlock.ts b/src/Page/SlotBlock.ts index 8a07d48..67bbe5b 100644 --- a/src/Page/SlotBlock.ts +++ b/src/Page/SlotBlock.ts @@ -9,10 +9,7 @@ function slotElements(prefix: string): Array { const result: Array = []; jQuery('.level.colorLayer').each((idx, el) => { const buildId = getNumber(elClassId(jQuery(el).attr('class') || '', prefix)); - result.push({ - el, - buildId, - }); + result.push({ el, buildId }); }); return result; } @@ -35,7 +32,7 @@ function showSlotIds(prefix: string, buildingIds: number[]): void { }); } -export function showFieldsSlotIds(buildingIds: number[]): void { +export function showResourceSlotIds(buildingIds: number[]): void { showSlotIds('buildingSlot', buildingIds); }