import { gql, request } from "graphql-request";
import { Config } from "../../../config/types";
import { Logger } from "../../../logger/types";
import { ToolItemServerResponse } from "../types";
export class TasksLoader {
constructor(
private config: Config,
private logger: Logger,
) {}
async load() {
const query = gql`
{
tasks(lang: ${this.config.lang}) {
id
name
trader {
id
name
}
map {
id
name
}
normalizedName
experience
wikiLink
minPlayerLevel
taskRequirements {
task {
id
name
}
status
}
traderRequirements {
trader {
id
name
}
}
objectives {
id
type
description
maps {
id
name
}
optional
}
startRewards {
items {
item {
id
name
shortName
iconLink
}
count
quantity
attributes {
name
value
}
}
traderStanding {
trader {
id
name
}
standing
}
skillLevelReward {
name
level
}
offerUnlock {
id
trader {
id
name
}
level
item {
id
name
shortName
iconLink
}
}
traderUnlock {
id
name
}
}
finishRewards {
items {
item {
id
name
shortName
iconLink
}
count
quantity
attributes {
name
value
}
}
traderStanding {
trader {
id
name
}
standing
}
skillLevelReward {
name
level
}
offerUnlock {
id
trader {
id
name
}
level
item {
id
name
shortName
iconLink
}
}
traderUnlock {
id
name
}
}
failConditions {
id
description
}
}
}
`;
const response = await request<ToolItemServerResponse>(
this.config.apiEndpoint,
query,
);
return response;
}
}