bugfix: cursor follows playback

fix bug where cursor would not check for delay and block modules
This commit is contained in:
cv
2021-05-25 23:03:03 +02:00
parent 447fede0ff
commit 894b5e894a
+14 -11
View File
@@ -27,7 +27,7 @@ export default function EventList(props) {
}, },
'Alt+ArrowUp': () => { 'Alt+ArrowUp': () => {
if (cursor == null) setCursor(0); if (cursor == null) setCursor(0);
else if (cursor >= 0) setCursor(cursor - 1); else if (cursor > 0) setCursor(cursor - 1);
}, },
'Alt+KeyE': (event) => { 'Alt+KeyE': (event) => {
event.preventDefault(); event.preventDefault();
@@ -49,7 +49,7 @@ export default function EventList(props) {
return () => { return () => {
unsubscribe(); unsubscribe();
}; };
}, [cursor, events.length, eventsHandler]); }, [cursor, events, eventsHandler]);
// handle incoming messages // handle incoming messages
useEffect(() => { useEffect(() => {
@@ -62,7 +62,6 @@ export default function EventList(props) {
// Handle playstate // Handle playstate
socket.on('selected', (data) => { socket.on('selected', (data) => {
setSelected(data); setSelected(data);
console.log('debug cursor setted', data);
}); });
socket.on('next-id', (data) => { socket.on('next-id', (data) => {
setNext(data); setNext(data);
@@ -80,13 +79,20 @@ export default function EventList(props) {
if (cursorSettings !== 'locked' || selected == null) return; if (cursorSettings !== 'locked' || selected == null) return;
if (selected.index == null) return; if (selected.index == null) return;
setCursor(selected.index); let eventIndex = -1;
}, [selected, cursorSettings]); let gotoIndex = -1;
for (const e of events) {
gotoIndex++;
if (e.type === 'event') eventIndex++;
if (eventIndex === selected.index) break;
}
setCursor(gotoIndex);
}, [events, selected, cursorSettings]);
// attach scroll to cursor // attach scroll to cursor
useEffect(() => { useEffect(() => {
if (cursor == null || cursorRef.current == null) return; if (cursor == null || cursorRef.current == null) return;
console.log('debug cursor scrolling');
cursorRef.current.scrollIntoView({ cursorRef.current.scrollIntoView({
behavior: 'smooth', behavior: 'smooth',
@@ -119,8 +125,6 @@ export default function EventList(props) {
let cumulativeDelay = 0; let cumulativeDelay = 0;
let eventIndex = -1; let eventIndex = -1;
console.log('debug selected', selected);
return ( return (
<div className={style.eventContainer}> <div className={style.eventContainer}>
<DragDropContext onDragEnd={handleOnDragEnd}> <DragDropContext onDragEnd={handleOnDragEnd}>
@@ -132,7 +136,6 @@ export default function EventList(props) {
ref={provided.innerRef} ref={provided.innerRef}
> >
{events.map((e, index) => { {events.map((e, index) => {
let isCursor = cursor === index;
if (index === 0) { if (index === 0) {
cumulativeDelay = 0; cumulativeDelay = 0;
eventIndex = -1; eventIndex = -1;
@@ -147,9 +150,9 @@ export default function EventList(props) {
return ( return (
<div <div
ref={isCursor ? cursorRef : undefined} ref={cursor === index ? cursorRef : undefined}
key={e.id} key={e.id}
className={isCursor ? style.cursor : undefined} className={cursor === index ? style.cursor : undefined}
> >
<EventListItem <EventListItem
type={e.type} type={e.type}