Skip to content

Commit a1447c8

Browse files
authored
fix(loopyLoop): loop between markers when repeat-one is active (#3833)
1 parent 7226b58 commit a1447c8

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

Extensions/loopyLoop.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
let lastSkipSeek = 0;
6969
let lastSkippedZoneIdx = -1;
7070
let lastNextCall = 0;
71+
let lastEndLoopSeek = 0;
7172
let seekStartPendingUri = null;
7273
let lastStartEnforce = 0;
7374
let prevProgressPercent = -1;
@@ -298,9 +299,15 @@
298299
return;
299300
}
300301

301-
// Song end enforcement: advance to next track when playback reaches ]
302+
// Song end enforcement: at ], either loop back (repeat-one) or advance to next track
302303
if (end !== null && percent >= end) {
303-
if (ts - lastNextCall > 2000) {
304+
// Spicetify.Player.getRepeat(): 0 = off, 1 = repeat context, 2 = repeat track
305+
if (Spicetify.Player.getRepeat() === 2) {
306+
if (ts - lastEndLoopSeek > 500) {
307+
lastEndLoopSeek = ts;
308+
Spicetify.Player.seek(start ?? 0);
309+
}
310+
} else if (ts - lastNextCall > 2000) {
304311
lastNextCall = ts;
305312
seekStartPendingUri = Spicetify.Player.data?.item?.uri ?? null;
306313
Spicetify.Player.next();
@@ -338,6 +345,7 @@
338345
prevPressedAt = 0;
339346
lastStartEnforce = 0;
340347
lastNextCall = 0;
348+
lastEndLoopSeek = 0;
341349
lastSkipSeek = 0;
342350
lastSkippedZoneIdx = -1;
343351
});

0 commit comments

Comments
 (0)