[READ-ONLY] Mirror of https://github.com/probablykasper/ferrum. Music library app for Mac, Linux and Windows ferrum.kasper.space
electron linux macos music music-library music-player napi windows
0

Configure Feed

Select the types of activity you want to include in your feed.

Fix play time timestamp not updated after pausing

Kasper (Apr 11, 2023, 11:59 PM +0200) 1187fde1 505d2153

+10 -15
+1
CHANGELOG.md
··· 2 2 3 3 ## Next 4 4 - Fix play time sometimes double counted 5 + - Fix play time timestamp not updated after pausing 5 6 - Fix button click transition 6 7 7 8 ## 0.16.7 - 2023 Apr 6
+9 -15
src/lib/player.ts
··· 97 97 await ipcRenderer.invoke('showMessageBox', false, { type: 'error', message, detail }) 98 98 }) 99 99 100 - let startTime = 0 101 - let playStartTime: number | null = null 100 + let startTime = Date.now() 102 101 function getPlayTime() { 103 - if (playStartTime === null) { 104 - return 0 105 - } else { 106 - return Date.now() - playStartTime 107 - } 102 + return Date.now() - (startTime ?? Date.now()) 108 103 } 109 104 110 105 function startPlayback() { 111 106 audio.play() 112 - playStartTime = Date.now() 113 107 paused.set(false) 108 + startTime = Date.now() 114 109 if (mediaSession) mediaSession.playbackState = 'playing' 115 110 } 116 111 ··· 144 139 } 145 140 146 141 /** Saves play time if needed */ 147 - function savePlayTime() { 142 + function resetAndSavePlayTime() { 148 143 const currentId = queue.getCurrent()?.id 149 144 if (getPlayTime() >= 1000 && currentId) { 150 145 methods.addPlayTime(currentId, startTime, getPlayTime()) 151 146 } 147 + startTime = Date.now() 152 148 } 153 149 154 150 function pausePlayback() { 155 151 waitingToPlay = false 156 152 audio.pause() 157 153 paused.set(true) 158 - savePlayTime() 159 - playStartTime = null 154 + resetAndSavePlayTime() 160 155 if (mediaSession) mediaSession.playbackState = 'paused' 161 156 } 162 157 ··· 191 186 waitingToPlay = false 192 187 audio.pause() 193 188 paused.set(true) 194 - savePlayTime() 195 - playStartTime = null 189 + resetAndSavePlayTime() 196 190 stopped.set(true) 197 191 seek(0) 198 192 if (mediaSession) { ··· 221 215 } else { 222 216 methods.addPlay(currentId) 223 217 } 224 - savePlayTime() 218 + resetAndSavePlayTime() 225 219 queueNext() 226 220 const newCurrentId = queue.getCurrent()?.id 227 221 if (newCurrentId) { ··· 234 228 export function previous() { 235 229 const currentId = queue.getCurrent()?.id 236 230 if (currentId) { 237 - savePlayTime() 231 + resetAndSavePlayTime() 238 232 queuePrev() 239 233 const newCurrentId = queue.getCurrent()?.id 240 234 if (newCurrentId) {