X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fassets%2Fplayer%2Fpeertube-player-local-storage.ts;h=64040abf1d5ae4736bf71144fc99e757e68744de;hb=3229664051dc974383fdf8b84cbf0c3796fc6c24;hp=3ac5fe58a4c9f3636ce87e4ac3760805d686bf34;hpb=6d8c8ea73a774c3568e6d28a4cbebcf7979d5c2a;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 3ac5fe58a..64040abf1 100644 --- a/client/src/assets/player/peertube-player-local-storage.ts +++ b/client/src/assets/player/peertube-player-local-storage.ts @@ -1,3 +1,5 @@ +import { logger } from '@root-helpers/logger' + function getStoredVolume () { const value = getLocalStorage('volume') if (value !== null && value !== undefined) { @@ -10,13 +12,6 @@ function getStoredVolume () { return undefined } -function getStoredWebTorrentEnabled (): boolean { - const value = getLocalStorage('webtorrent_enabled') - if (value !== null && value !== undefined) return value === 'true' - - return false -} - function getStoredMute () { const value = getLocalStorage('mute') if (value !== null && value !== undefined) return value === 'true' @@ -28,7 +23,7 @@ function getStoredTheater () { const value = getLocalStorage('theater-enabled') if (value !== null && value !== undefined) return value === 'true' - return undefined + return false } function saveVolumeInStore (value: number) { @@ -44,6 +39,7 @@ function saveTheaterInStore (enabled: boolean) { } function saveAverageBandwidth (value: number) { + /** used to choose the most fitting resolution */ return setLocalStorage('average-bandwidth', value.toString()) } @@ -59,18 +55,80 @@ function getAverageBandwidthInStore () { return undefined } +function saveLastSubtitle (language: string) { + return setLocalStorage('last-subtitle', language) +} + +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 { + const value = getLocalStorage('video-watch-history') + if (!value) return {} + + data = JSON.parse(value) + } catch (error) { + logger.error('Cannot parse video watch history from local storage/', error) + } + + data = data || {} + + if (videoUUID) return data[videoUUID] + + return data +} + +function cleanupVideoWatch () { + const data = getStoredVideoWatchHistory() + if (!data) return + + 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, getStoredMute, getStoredTheater, saveVolumeInStore, saveMuteInStore, saveTheaterInStore, saveAverageBandwidth, - getAverageBandwidthInStore + getAverageBandwidthInStore, + saveLastSubtitle, + getStoredLastSubtitle, + saveVideoWatchHistory, + getStoredVideoWatchHistory, + cleanupVideoWatch } // ---------------------------------------------------------------------------