95 lines
2.4 KiB
JavaScript
95 lines
2.4 KiB
JavaScript
import { Client } from "./Client.js";
|
|
import { Profile } from "./Profile.js";
|
|
|
|
class MyProfile extends Profile
|
|
{
|
|
|
|
/**
|
|
* @param {Client} client
|
|
*/
|
|
constructor (client)
|
|
{
|
|
super(client, "../me");
|
|
|
|
/**
|
|
* @type {[Profile]}
|
|
*/
|
|
this.blockedUsers = [];
|
|
/**
|
|
* @type {[Profile]}
|
|
*/
|
|
this.friends = [];
|
|
/**
|
|
* @type {[Profile]}
|
|
*/
|
|
this.incomingFriendRequests = [];
|
|
/**
|
|
* @type {[Profile]}
|
|
*/
|
|
this.outgoingFriendRequests = [];
|
|
}
|
|
|
|
async init() {
|
|
await super.init();
|
|
await this.getBlockedUsers();
|
|
await this.getFriends();
|
|
await this.getIncomingFriendRequests()
|
|
await this.getOutgoingFriendRequests()
|
|
}
|
|
|
|
async getBlockedUsers() {
|
|
const response = await this.client._get('/api/profiles/block');
|
|
const data = await response.json();
|
|
data.forEach(profileData => this.blockedUsers.push(new Profile(this.client, profileData.username, profileData.user_id, profileData.avatar)));
|
|
}
|
|
|
|
async getFriends() {
|
|
const response = await this.client._get('/api/profiles/friends');
|
|
const data = await response.json();
|
|
data.forEach(profileData => this.friends.push(new Profile(this.client, profileData.username, profileData.user_id, profileData.avatar)));
|
|
}
|
|
async getIncomingFriendRequests() {
|
|
const response = await this.client._get('/api/profiles/incoming_friend_requests');
|
|
const data = await response.json();
|
|
data.forEach(profileData => this.incomingFriendRequests.push(
|
|
new Profile(this.client, profileData.username, profileData.user_id, profileData.avatar)
|
|
));
|
|
}
|
|
async getOutgoingFriendRequests() {
|
|
const response = await this.client._get('/api/profiles/outgoing_friend_requests');
|
|
const data = await response.json();
|
|
data.forEach(profileData => this.outgoingFriendRequests.push(
|
|
new Profile(this.client, profileData.username, profileData.user_id, profileData.avatar)
|
|
));
|
|
}
|
|
/**
|
|
*
|
|
* @param {File} selectedFile
|
|
* @returns {Promise<Response>}
|
|
*/
|
|
async changeAvatar(selectedFile)
|
|
{
|
|
const formData = new FormData();
|
|
formData.append('avatar', selectedFile);
|
|
|
|
const response = await this.client._patch_file(`/api/profiles/settings`, formData);
|
|
const responseData = await response.json();
|
|
|
|
if (response.ok)
|
|
return null;
|
|
return responseData;
|
|
}
|
|
|
|
async deleteAvatar() {
|
|
const response = await this.client._delete('/api/profiles/settings');
|
|
const responseData = await response.json();
|
|
|
|
if (response.ok)
|
|
return null;
|
|
return responseData;
|
|
}
|
|
|
|
}
|
|
|
|
export {MyProfile};
|