import User from './user'
/**
* Visitor class represents information about current website visitor.
* @extends User
* @property {string} uuid UUID is unique identifier for user. UUID for visitor sets automatically on starting.
* Managers have UUID in their account.
* @property {string} name
* @property {string} email
* @property {Field[]} fields custom fiels defined for user
*/
class Visitor extends User {
/**
* Visitor constructor
*/
constructor() {
super();
this.fields = {};
}
/**
* Gets visitor's custom fields
*/
getFields() {
return this.fields;
}
/**
* Sets custom fields for visitor
* @param {object} fields Visitor fields object
*/
setFields(fields) {
for (let prop in fields) {
if (typeof fields[prop] === "object") {
throw new Error("Object nesting is not allowed in visitor fields. Check " + prop + " field. It is an object");
}
}
this.fields = fields;
}
}
/**
* Static builder for visitor instance
*
* @param {object} data Visitor representation received from API
* @return {Visitor}
*/
Visitor.buildFromInfo = (data) => {
let visitor = new Visitor();
visitor.setUuid(data.uuid);
visitor.setName(data.name);
visitor.setEmail(data.email);
visitor.setIsOnline(data.isOnline);
visitor.setFields(data.fields);
return visitor;
};
export default Visitor;