mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-04-21 08:11:36 +02:00
feat: add option for muting sounds
This commit is contained in:
18
app/apps/users/migrations/0007_usersettings_mute_sounds.py
Normal file
18
app/apps/users/migrations/0007_usersettings_mute_sounds.py
Normal 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),
|
||||
),
|
||||
]
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
2
app/templates/users/generic/mute_sounds.html
Normal file
2
app/templates/users/generic/mute_sounds.html
Normal file
@@ -0,0 +1,2 @@
|
||||
{% load i18n %}
|
||||
<i class="fa-solid fa-volume-xmark me-2 fa-fw"></i>{% translate 'Mute sounds' %}
|
||||
3
app/templates/users/generic/play_sounds.html
Normal file
3
app/templates/users/generic/play_sounds.html
Normal 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>
|
||||
Reference in New Issue
Block a user