import { Client } from "./Client.js"; class Account { /** * @param {Client} client */ constructor (client) { /** * @type {Client} client */ this.client = client; } /** * @param {String} username * @param {String} password * @returns {Response} */ async create(username, password) { let response = await this.client._post("/api/accounts/register", {username: username, password: password}); if (response.status === 201) await this.client._update_logged(true); return response; } /** * @param {String} password * @returns {?Promise} */ async delete(password) { let response = await this.client._delete("/api/accounts/delete", {password: password}); let response_data = await response.json(); if (response.status === 403) { this.client._update_logged(false); return null; } if (response_data == "user deleted") this.client._update_logged(false); return response_data; } /** * @param {String} newUsername * @returns {?Promise} */ async updateUsername(newUsername) { const data = { username: newUsername }; const response = await this.client._patch_json(`/api/accounts/update_profile`, data); const respondeData = await response.json(); if (response.status === 200) { this.client.me.username = respondeData.username; document.getElementById('navbarDropdownButton').innerHTML = respondeData.username; document.getElementById('myProfileLink').href = '/profiles/' + respondeData.username; return null; } return respondeData['authorize'] || respondeData['detail'] || respondeData['username']?.join(' ') || 'Error.'; } } export { Account };