X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fassets%2Fplayer%2Fpeertube-player-local-storage.ts;h=cf2cfb472e6b4bbdf80e41e1eecd810847f5ea40;hb=58b9ce3080c12678e8c1c28c08da09d6ea60011d;hp=f6c5c5419fd5120124d3a294602989e56495b04f;hpb=b6a1dd4d1b3b0032f8b968e72cbd074f646e8827;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/assets/player/peertube-player-local-storage.ts b/client/src/assets/player/peertube-player-local-storage.ts index f6c5c5419..cf2cfb472 100644 --- a/client/src/assets/player/peertube-player-local-storage.ts +++ b/client/src/assets/player/peertube-player-local-storage.ts @@ -10,7 +10,7 @@ function getStoredVolume () { return undefined } -function getStoredWebTorrentEnabled (): boolean { +function getStoredP2PEnabled (): boolean { const value = getLocalStorage('webtorrent_enabled') if (value !== null && value !== undefined) return value === 'true' @@ -68,11 +68,56 @@ function getStoredLastSubtitle () { return getLocalStorage('last-subtitle') } +function saveVideoWatchHistory(videoUUID: string, duration: number) { + return setLocalStorage(`video-watch-history`, JSON.stringify({ + ...getStoredVideoWatchHistory(), + [videoUUID]: { + duration, + date: `${(new Date()).toISOString()}` + } + })) +} + +function getStoredVideoWatchHistory(videoUUID?: string) { + let data + + try { + data = JSON.parse(getLocalStorage('video-watch-history')) + } catch (error) { + console.error('Cannot parse video watch history from local storage: ', error) + } + + data = data || {} + + if (videoUUID) return data[videoUUID] + + return data +} + +function cleanupVideoWatch() { + const data = getStoredVideoWatchHistory() + + const newData = Object.keys(data).reduce((acc, videoUUID) => { + const date = Date.parse(data[videoUUID].date) + + const diff = Math.ceil(((new Date()).getTime() - date) / (1000 * 3600 * 24)) + + if (diff > 30) return acc + + return { + ...acc, + [videoUUID]: data[videoUUID] + } + }, {}) + + setLocalStorage('video-watch-history', JSON.stringify(newData)) +} + // --------------------------------------------------------------------------- export { getStoredVolume, - getStoredWebTorrentEnabled, + getStoredP2PEnabled, getStoredMute, getStoredTheater, saveVolumeInStore, @@ -81,7 +126,10 @@ export { saveAverageBandwidth, getAverageBandwidthInStore, saveLastSubtitle, - getStoredLastSubtitle + getStoredLastSubtitle, + saveVideoWatchHistory, + getStoredVideoWatchHistory, + cleanupVideoWatch } // ---------------------------------------------------------------------------