return undefined
}
-function getStoredWebTorrentEnabled (): boolean {
+function getStoredP2PEnabled (): boolean {
const value = getLocalStorage('webtorrent_enabled')
if (value !== null && value !== undefined) return value === 'true'
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,
saveAverageBandwidth,
getAverageBandwidthInStore,
saveLastSubtitle,
- getStoredLastSubtitle
+ getStoredLastSubtitle,
+ saveVideoWatchHistory,
+ getStoredVideoWatchHistory,
+ cleanupVideoWatch
}
// ---------------------------------------------------------------------------