warframe-worldstate-parser
Version:
An Open parser for Warframe's Worldstate in Javascript
91 lines (76 loc) • 2.23 kB
JavaScript
import { fromNow, timeDeltaToString } from 'warframe-worldstate-data/utilities';
import mdConfig from '../supporting/MarkdownSettings.js';
import WorldstateObject from './WorldstateObject.js';
import Mission from './Mission.js';
/**
* Represents an alert
* @augments {WorldstateObject}
*/
export default class Alert extends WorldstateObject {
/**
* @param {object} data The alert data
* @param {string} locale Locale to use for translations
*/
constructor(data, { locale = 'en' } = { locale: 'en' }) {
super(data);
const deps = {
locale,
};
/**
* The mission that the players have to complete
* @type {Mission}
*/
this.mission = new Mission(data.MissionInfo, deps);
/**
* ETA string (at time of object creation)
* @type {string}
*/
this.eta = this.getETAString();
/**
* An array containing the types of all of the alert's rewards
* @type {Array.<string>}
*/
this.rewardTypes = this.getRewardTypes().length ? this.getRewardTypes() : ['credits'];
/**
* A tag that DE occasionally provides, such as `LotusGift`
* @type {string}
*/
this.tag = data.Tag || undefined;
}
/**
* Get the alert's description text
* @returns {string} the description
*/
getDescription() {
return this.mission.description;
}
/**
* Get the alert's reward
* @returns {Reward} the reward
*/
getReward() {
return this.mission.reward;
}
/**
* Get a string indicating how much time is left before the alert expires
* @returns {string} the time left
*/
getETAString() {
return timeDeltaToString(fromNow(this.expiry));
}
/**
* Get an array containing the types of all of the alert's rewards
* @returns {Array.<string>} an array containing the types of all of the alert's rewards
*/
getRewardTypes() {
return this.mission.reward.getTypes();
}
/**
* The alert's string representation
* @returns {string} the string representation
*/
toString() {
const lines = [this.mission.toString(), this.getETAString()];
return `${mdConfig.codeBlock}${lines.join(mdConfig.lineEnd)}${mdConfig.blockEnd}`;
}
}