import { ActionController, err, registerAction } from './ActionController'; import { GrabError, TryLaterError } from '../Errors'; import { clickBuildButton } from '../Page/BuildingPage/BuildingPage'; import { aroundMinutes } from '../utils'; import { Args } from '../Queue/Args'; import { Task } from '../Queue/TaskProvider'; @registerAction export class BuildBuildingAction extends ActionController { async run(args: Args, task: Task): Promise { try { this.ensureSameVillage(args, task); this.ensureBuildingQueueIsEmpty(); const buildTypeId = args.buildTypeId || err('Undefined build type id'); clickBuildButton(buildTypeId); } catch (e) { if (e instanceof GrabError) { throw new TryLaterError(aroundMinutes(5), 'No upgrade button, try later'); } throw e; } } }