mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-07-15 09:12:39 +02:00
feat: add option for muting sounds
This commit is contained in:
@@ -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"
|
get_user_model(), on_delete=models.CASCADE, related_name="settings"
|
||||||
)
|
)
|
||||||
hide_amounts = models.BooleanField(default=False)
|
hide_amounts = models.BooleanField(default=False)
|
||||||
|
mute_sounds = models.BooleanField(default=False)
|
||||||
|
|
||||||
language = models.CharField(
|
language = models.CharField(
|
||||||
max_length=10,
|
max_length=10,
|
||||||
|
|||||||
@@ -11,6 +11,11 @@ urlpatterns = [
|
|||||||
views.toggle_amount_visibility,
|
views.toggle_amount_visibility,
|
||||||
name="toggle_amount_visibility",
|
name="toggle_amount_visibility",
|
||||||
),
|
),
|
||||||
|
path(
|
||||||
|
"user/toggle-sound-playing/",
|
||||||
|
views.toggle_sound_playing,
|
||||||
|
name="toggle_sound_playing",
|
||||||
|
),
|
||||||
path(
|
path(
|
||||||
"user/settings/",
|
"user/settings/",
|
||||||
views.update_settings,
|
views.update_settings,
|
||||||
|
|||||||
@@ -49,6 +49,27 @@ def toggle_amount_visibility(request):
|
|||||||
return response
|
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
|
@only_htmx
|
||||||
@login_required
|
@login_required
|
||||||
def update_settings(request):
|
def update_settings(request):
|
||||||
|
|||||||
@@ -18,8 +18,19 @@
|
|||||||
{% include 'users/generic/hide_amounts.html' %}
|
{% include 'users/generic/hide_amounts.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</a>
|
</a>
|
||||||
{% endspaceless %}
|
|
||||||
</li>
|
</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><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
|
<li><a class="dropdown-item" href="{% url 'logout' %}"><i class="fa-solid fa-door-open me-2 fa-fw"></i
|
||||||
>{% translate 'Logout' %}</a></li>
|
>{% translate 'Logout' %}</a></li>
|
||||||
|
|||||||
@@ -13,14 +13,14 @@ my-3"
|
|||||||
hx-get="{% url 'transaction_pay' transaction_id=transaction.id %}"
|
hx-get="{% url 'transaction_pay' transaction_id=transaction.id %}"
|
||||||
hx-target="closest .transaction"
|
hx-target="closest .transaction"
|
||||||
hx-swap="outerHTML"
|
hx-swap="outerHTML"
|
||||||
_="on paid
|
_="on paid if body do not include #settings-mute-sound
|
||||||
js
|
js
|
||||||
paidSound.pause()
|
paidSound.pause()
|
||||||
paidSound.currentTime = 0
|
paidSound.currentTime = 0
|
||||||
paidSound.play()
|
paidSound.play()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
on unpaid
|
on unpaid if body do not include #settings-mute-sound
|
||||||
js
|
js
|
||||||
unpaidSound.pause()
|
unpaidSound.pause()
|
||||||
unpaidSound.currentTime = 0
|
unpaidSound.currentTime = 0
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
{% load i18n %}
|
||||||
|
<i class="fa-solid fa-volume-xmark me-2 fa-fw"></i>{% translate 'Mute sounds' %}
|
||||||
@@ -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