103 lines
3.1 KiB
JavaScript
103 lines
3.1 KiB
JavaScript
|
|
if (typeof email !== "undefined" && typeof username !== "undefined") {
|
|
Vue.createApp({
|
|
data() {
|
|
return {
|
|
formData: {
|
|
// eslint-disable-next-line no-undef
|
|
email,
|
|
// eslint-disable-next-line no-undef
|
|
username,
|
|
oldPassword: "",
|
|
password: "",
|
|
passwordConfirm: "",
|
|
// eslint-disable-next-line no-undef
|
|
mastodon: mastodon || {
|
|
publish: false,
|
|
url: "",
|
|
token: "",
|
|
message:
|
|
"Je viens d'ajouter {artist} - {album} à ma collection !",
|
|
},
|
|
},
|
|
loading: false,
|
|
errors: [],
|
|
};
|
|
},
|
|
methods: {
|
|
// eslint-disable-next-line no-unused-vars
|
|
async testMastodon() {
|
|
const { url, token } = this.formData.mastodon;
|
|
|
|
if (!url) {
|
|
this.errors.push("emptyUrl");
|
|
}
|
|
if (!token) {
|
|
this.errors.push("emptyToken");
|
|
}
|
|
|
|
if (this.errors.length > 0) {
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
await axios.post(`/api/v1/mastodon`, { url, token });
|
|
|
|
showToastr("Configuration valide !", true);
|
|
} catch (err) {
|
|
showToastr(
|
|
err.response?.data?.message ||
|
|
"Impossible de tester cette configuration",
|
|
false
|
|
);
|
|
}
|
|
|
|
return true;
|
|
},
|
|
// eslint-disable-next-line no-unused-vars
|
|
async updateProfil() {
|
|
this.errors = [];
|
|
const { oldPassword, password, passwordConfirm, mastodon } =
|
|
this.formData;
|
|
|
|
if (password && !oldPassword) {
|
|
this.errors.push("emptyPassword");
|
|
}
|
|
|
|
if (password !== passwordConfirm) {
|
|
this.errors.push("passwordsDiffer");
|
|
}
|
|
|
|
if (this.errors.length > 0) {
|
|
return false;
|
|
}
|
|
|
|
this.loading = true;
|
|
|
|
const data = {
|
|
mastodon,
|
|
};
|
|
|
|
if (password) {
|
|
data.password = password;
|
|
data.oldPassword = oldPassword;
|
|
}
|
|
|
|
try {
|
|
await axios.patch(`/api/v1/me`, data);
|
|
|
|
showToastr("Profil mis à jour", true);
|
|
} catch (err) {
|
|
showToastr(
|
|
err.response?.data?.message ||
|
|
"Impossible de mettre à jour votre profil"
|
|
);
|
|
}
|
|
|
|
this.loading = false;
|
|
|
|
return true;
|
|
},
|
|
},
|
|
}).mount("#mon-compte");
|
|
}
|