96 lines
1.8 KiB
JavaScript
96 lines
1.8 KiB
JavaScript
import { AExchangeable } from "./AExchangable.js";
|
|
import { Client } from "./Client.js";
|
|
|
|
export class Profile extends AExchangeable
|
|
{
|
|
/**
|
|
* @param {Client} client
|
|
*/
|
|
constructor (client, username, id, avatar)
|
|
{
|
|
super();
|
|
|
|
/**
|
|
* @type {Client} client
|
|
*/
|
|
this.client = client;
|
|
|
|
/**
|
|
* @type {String}
|
|
*/
|
|
this.username = username;
|
|
|
|
/**
|
|
* @type {Number}
|
|
*/
|
|
this.id = id;
|
|
|
|
/**
|
|
* @type {String}
|
|
*/
|
|
this.avatar = avatar;
|
|
|
|
/**
|
|
* @type {Boolean}
|
|
*/
|
|
this.isFriend;
|
|
this.isBlocked;
|
|
this.hasIncomingRequest;
|
|
this.hasOutgoingRequest;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @returns {Promise<*>}
|
|
*/
|
|
async init()
|
|
{
|
|
let response;
|
|
if (this.username !== undefined)
|
|
response = await this.client._get(`/api/profiles/user/${this.username}`);
|
|
else
|
|
response = await this.client._get(`/api/profiles/id/${this.id}`);
|
|
|
|
if (response.status !== 200)
|
|
return response.status;
|
|
|
|
let response_data = await response.json();
|
|
this.id = response_data.id;
|
|
this.username = response_data.username;
|
|
this.avatar = response_data.avatar;
|
|
|
|
if (!this.client.me || this.client.me.id === this.id)
|
|
return;
|
|
|
|
this.isBlocked = this.client.me._isBlocked(this);
|
|
this.hasIncomingRequest = this.client.me._hasIncomingRequestFrom(this);
|
|
this.hasOutgoingRequest = this.client.me._hasOutgoingRequestTo(this);
|
|
this.isFriend = this.client.me._isFriend(this);
|
|
}
|
|
|
|
/**
|
|
* @returns {[Object]}
|
|
*/
|
|
async getGameHistory()
|
|
{
|
|
let response = await this.client._get(`/api/games/history/${this.id}`);
|
|
let response_data = await response.json();
|
|
|
|
let games = [];
|
|
|
|
response_data.forEach(game_data => {
|
|
games.push(game_data);
|
|
});
|
|
|
|
return games;
|
|
}
|
|
|
|
/**
|
|
* @param {[String]} additionalFieldList
|
|
*/
|
|
export(additionalFieldList = [])
|
|
{
|
|
super.export([...["username", "avatar", "id"], ...additionalFieldList])
|
|
}
|
|
}
|