yet-another-blog/frontend/views/themes/default/js/editAuthor.js

85 lines
2.5 KiB
JavaScript

/* global qs request */
async function changeValue(setting_name, value) {
const form = {
setting_name: setting_name,
value: value.value || value,
id: window.location.href.split("/")[4],
};
const response = await request(`/api/web/user`, "PATCH", form);
// TODO: On failure, notify the user
if (response.body.success) {
alert("Successfully changed setting.");
}
}
const change_password_dialog = qs("#change-password-dialog");
qs("#change-password-button").addEventListener("click", () => change_password_dialog.showModal());
qs("#cp-cancel").addEventListener("click", () => change_password_dialog.close());
function changePasswordInputUpdate() {
const status = qs("#change-password-dialog .status");
const current_password = qs("#cp-current");
const new_password_1 = qs("#cp-new-1");
const new_password_2 = qs("#cp-new-2");
if (current_password.value === "") return (status.innerText = "Please enter your current password.");
if (new_password_1.value !== new_password_2.value) return (status.innerText = "New password does not match.");
return (status.innerHTML = " ");
}
async function sendPasswordUpdate() {
const new_password_1 = qs("#cp-new-1");
const original_password_value = qs("#cp-current").value;
const form = {
setting_name: "password",
value: new_password_1.value,
original_password: original_password_value,
id: window.location.href.split("/")[4],
};
const response = await request(`/api/web/user`, "PATCH", form);
if (response.body.success) {
alert("Successfully changed password");
}
}
const fileInput = qs("#profile_picture");
fileInput.addEventListener("change", uploadProfileImage);
async function uploadProfileImage(event) {
const file = event.target.files[0];
const image_object = {
data_blob: new Blob([await file.arrayBuffer()]),
content_type: file.type,
};
let form_data = {
buffer: await _readFile(image_object.data_blob),
content_type: image_object.content_type,
parent_id: window.location.href.split("/")[4],
parent_type: "user",
};
const image_uploading_request = await request("/api/web/image", "POST", form_data);
if (image_uploading_request.status == 200) {
// Update profile picture link
changeValue("profile_image", image_uploading_request.body);
// alert(image_uploading_request.body);
}
}
function _readFile(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result);
reader.onerror = reject;
reader.readAsDataURL(file);
});
}