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