feat: add option for muting sounds

This commit is contained in:
Herculino Trotta
2024-10-14 11:30:19 -03:00
parent dad0d96b58
commit 311d974762
8 changed files with 64 additions and 3 deletions

View File

@@ -0,0 +1,18 @@
# Generated by Django 5.1.1 on 2024-10-14 14:21
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("users", "0006_alter_usersettings_language"),
]
operations = [
migrations.AddField(
model_name="usersettings",
name="mute_sounds",
field=models.BooleanField(default=False),
),
]

View File

@@ -26,6 +26,7 @@ class UserSettings(models.Model):
get_user_model(), on_delete=models.CASCADE, related_name="settings"
)
hide_amounts = models.BooleanField(default=False)
mute_sounds = models.BooleanField(default=False)
language = models.CharField(
max_length=10,

View File

@@ -11,6 +11,11 @@ urlpatterns = [
views.toggle_amount_visibility,
name="toggle_amount_visibility",
),
path(
"user/toggle-sound-playing/",
views.toggle_sound_playing,
name="toggle_sound_playing",
),
path(
"user/settings/",
views.update_settings,

View File

@@ -49,6 +49,27 @@ def toggle_amount_visibility(request):
return response
@only_htmx
@login_required
def toggle_sound_playing(request):
user_settings, created = UserSettings.objects.get_or_create(user=request.user)
current_mute_sounds = user_settings.mute_sounds
new_mute_sounds = not current_mute_sounds
user_settings.mute_sounds = new_mute_sounds
user_settings.save()
if new_mute_sounds is True:
messages.info(request, _("Sounds are now muted"))
response = render(request, "users/generic/play_sounds.html")
else:
messages.info(request, _("Sounds will now play"))
response = render(request, "users/generic/mute_sounds.html")
response.headers["HX-Trigger"] = "updated, toast"
return response
@only_htmx
@login_required
def update_settings(request):

View File

@@ -18,8 +18,19 @@
{% include 'users/generic/hide_amounts.html' %}
{% endif %}
</a>
{% endspaceless %}
</li>
{% endspaceless %}
{% spaceless %}
<li>
<a class="dropdown-item" hx-get="{% url 'toggle_sound_playing' %}" role="button">
{% if user.settings.mute_sounds %}
{% include 'users/generic/play_sounds.html' %}
{% else %}
{% include 'users/generic/mute_sounds.html' %}
{% endif %}
</a>
</li>
{% endspaceless %}
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="{% url 'logout' %}"><i class="fa-solid fa-door-open me-2 fa-fw"></i
>{% translate 'Logout' %}</a></li>

View File

@@ -13,14 +13,14 @@ my-3"
hx-get="{% url 'transaction_pay' transaction_id=transaction.id %}"
hx-target="closest .transaction"
hx-swap="outerHTML"
_="on paid
_="on paid if body do not include #settings-mute-sound
js
paidSound.pause()
paidSound.currentTime = 0
paidSound.play()
end
end
on unpaid
on unpaid if body do not include #settings-mute-sound
js
unpaidSound.pause()
unpaidSound.currentTime = 0

View File

@@ -0,0 +1,2 @@
{% load i18n %}
<i class="fa-solid fa-volume-xmark me-2 fa-fw"></i>{% translate 'Mute sounds' %}

View File

@@ -0,0 +1,3 @@
{% load i18n %}
<i class="fa-solid fa-volume-low me-2 fa-fw"></i>{% translate 'Play sounds' %}
<span id="settings-mute-sound" class="d-inline tw-invisible"></span>