billscroll should now remember user's position across devices

This commit is contained in:
Disco DeDisco
2026-03-24 17:44:34 -04:00
parent a0f8aeb791
commit cde231d43c
9 changed files with 206 additions and 4 deletions

View File

@@ -2,3 +2,30 @@
<h2>{{ room.name }}</h2>
{% include "core/_partials/_scroll.html" %}
</section>
<script>
(function() {
var scroll = document.getElementById('id_drama_scroll');
if (!scroll) return;
// Restore saved position
scroll.scrollTop = {{ scroll_position }};
// Debounced save on scroll
var saveTimer;
scroll.addEventListener('scroll', function() {
clearTimeout(saveTimer);
saveTimer = setTimeout(function() {
var csrfToken = document.querySelector('[name=csrfmiddlewaretoken]');
var token = csrfToken ? csrfToken.value : '';
fetch("{% url 'billboard:save_scroll_position' room.id %}", {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-CSRFToken': token,
},
body: 'position=' + Math.round(scroll.scrollTop),
});
}, 800);
});
})();
</script>

View File

@@ -4,6 +4,7 @@
{% block header_text %}<span>Bill</span>scroll{% endblock header_text %}
{% block content %}
{% csrf_token %}
<div class="billscroll-page">
{% include "apps/billboard/_partials/_applet-billboard-scroll.html" %}
</div>

View File

@@ -1,5 +1,5 @@
{% load lyric_extras %}
<section id="id_drama_scroll" class="drama-scroll">
<section id="id_drama_scroll" class="drama-scroll" data-scroll-position="{{ scroll_position|default:0 }}">
{% for event in events %}
<div class="drama-event {% if event.actor == viewer %}mine{% else %}theirs{% endif %}">
<span class="event-body">