Allow users to hide ratings in the UI

This commit is contained in:
Mouse Reeve 2024-08-23 16:52:38 -07:00
parent 413c26bc5e
commit f53bb62b2b
3 changed files with 33 additions and 2 deletions

View file

@ -141,7 +141,6 @@ class User(OrderedCollectionPageMixin, AbstractUser):
hide_follows = fields.BooleanField(default=False)
# migration fields
moved_to = fields.RemoteIdField(
null=True, unique=False, activitypub_field="movedTo", deduplication_field=False
)
@ -158,6 +157,7 @@ class User(OrderedCollectionPageMixin, AbstractUser):
show_suggested_users = models.BooleanField(default=True)
discoverable = fields.BooleanField(default=False)
show_guided_tour = models.BooleanField(default=True)
show_ratings = models.BooleanField(default=True)
# feed options
feed_status_types = DjangoArrayField(

View file

@ -14,6 +14,10 @@ let BookWyrm = new (class {
.querySelectorAll("[data-controls]")
.forEach((button) => button.addEventListener("click", this.toggleAction.bind(this)));
document
.querySelectorAll("[data-disappear]")
.forEach((button) => button.addEventListener("click", this.hideSelf.bind(this)));
document
.querySelectorAll(".interaction")
.forEach((button) => button.addEventListener("submit", this.interact.bind(this)));
@ -181,6 +185,19 @@ let BookWyrm = new (class {
this.addRemoveClass(visible, "is-hidden", true);
}
/**
* Hide the element you just clicked
*
* @param {Event} event
* @return {undefined}
*/
hideSelf(event) {
let trigger = event.currentTarget;
this.addRemoveClass(trigger, "is-hidden", true)
}
/**
* Execute actions on targets based on triggers.
*

View file

@ -1,8 +1,19 @@
{% spaceless %}
{% load utilities %}
{% load i18n %}
<span class="stars">
{% with 0|uuid as uuid %}
<span class="stars tag">
{% if not request.user.show_ratings %}
<button type="button" data-controls="rating-{{ uuid }}" id="rating-button-{{ uuid }}" aria-pressed="false" data-disappear>
<em>{% trans "Show rating" %} </em>
</button>
{% endif %}
{% if rating %}
<span class="{% if not request.user.show_ratings %}is-hidden{% endif %}" id="rating-{{ uuid }}">
<span class="is-sr-only">
{% blocktranslate trimmed with rating=rating|floatformat:0 count counter=rating|floatformat:0|add:0 %}
{{ rating }} star
@ -19,8 +30,11 @@
aria-hidden="true"
></span>
{% endfor %}
</span>
{% else %}
<span class="no-rating">{% trans "No rating" %}</span>
{% endif %}
</span>
{% endwith %}
{% endspaceless %}