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 = [];
	}

	async init() {
		await super.init();
		await this.getBlockedUsers();
		await this.getFriends();
	}

	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)));
	}
	/**
	 * 
	 * @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};
