propose users to disable an alias instead of deleting it

This commit is contained in:
Son NK 2021-03-18 14:21:26 +01:00
parent 9dede0a281
commit 8bb324e82b
3 changed files with 46 additions and 28 deletions

View File

@ -418,18 +418,23 @@
<div>
<div class="btn-group float-right" role="group" aria-label="Basic example">
<a href="{{ url_for('dashboard.alias_transfer_send_route', alias_id=alias.id) }}" class="btn btn-sm btn-link">
<a href="{{ url_for('dashboard.alias_transfer_send_route', alias_id=alias.id) }}"
class="btn btn-sm btn-link">
Transfer
<i class="ml-0 dropdown-icon fe fe-share-2 text-primary"></i>
</a>
<form method="post">
<input type="hidden" name="form-name" value="delete-email">
<input type="hidden" name="form-name" value="delete-alias">
<input type="hidden" name="alias-id" value="{{ alias.id }}">
<input type="hidden" name="alias" class="alias" value="{{ alias.email }}">
<span class="delete-email btn btn-link btn-sm float-right text-danger">
<span class="btn btn-link btn-sm float-right text-danger"
onclick="confirmDeleteAlias.call(this)"
data-alias="{{ alias.id }}"
data-alias-email="{{ alias.email }}"
>
Delete&nbsp; &nbsp;<i class="dropdown-icon fe fe-trash-2 text-danger"></i>
</span>
</form>

View File

@ -106,10 +106,10 @@ def index():
else:
flash("You need to upgrade your plan to create new alias.", "warning")
elif request.form.get("form-name") == "delete-email":
elif request.form.get("form-name") in ("delete-alias", "disable-alias"):
alias_id = request.form.get("alias-id")
alias: Alias = Alias.get(alias_id)
if not alias:
if not alias or alias.user_id != current_user.id:
flash("Unknown error, sorry for the inconvenience", "error")
return redirect(
url_for(
@ -120,10 +120,15 @@ def index():
)
)
LOG.d("delete alias %s", alias)
email = alias.email
alias_utils.delete_alias(alias, current_user)
flash(f"Alias {email} has been deleted", "success")
if request.form.get("form-name") == "delete-alias":
LOG.d("delete alias %s", alias)
email = alias.email
alias_utils.delete_alias(alias, current_user)
flash(f"Alias {email} has been deleted", "success")
elif request.form.get("form-name") == "disable-alias":
alias.enabled = False
db.session.commit()
flash(f"Alias {alias.email} has been disabled", "success")
return redirect(
url_for("dashboard.index", query=query, sort=sort, filter=alias_filter)

View File

@ -1,33 +1,41 @@
$('.mailbox-select').multipleSelect();
$(".delete-email").on("click", function () {
let alias = $(this).parent().find(".alias").val();
let message = `Once <b>${alias}</b> is deleted, people/apps ` +
"who used to contact you via this alias cannot reach you any more," +
" please confirm.";
function confirmDeleteAlias() {
let that = $(this);
let alias = that.data("alias-email");
bootbox.confirm({
message: message,
bootbox.dialog({
title: `Delete ${alias}`,
message: `Maybe you want to disable the alias instead? Please note once deleted, it <b>can't</b> be restored.`,
size: 'large',
onEscape: true,
backdrop: true,
buttons: {
confirm: {
label: 'Yes, delete it',
className: 'btn-danger'
disable: {
label: 'Disable it',
className: 'btn-primary',
callback: function () {
that.closest("form").find('input[name="form-name"]').val("disable-alias");
that.closest("form").submit();
}
},
delete: {
label: "Yes, I don't need it anymore",
className: 'btn-outline-danger',
callback: function () {
that.closest("form").submit();
}
},
cancel: {
label: 'Cancel',
className: 'btn-outline-primary'
}
},
callback: function (result) {
if (result) {
that.closest("form").submit();
}
},
}
})
});
}
$(".enable-disable-alias").change(async function () {
let aliasId = $(this).data("alias");