aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/assets/player/peertube-player-local-storage.ts
diff options
context:
space:
mode:
authorkontrollanten <6680299+kontrollanten@users.noreply.github.com>2021-03-31 11:26:32 +0200
committerGitHub <noreply@github.com>2021-03-31 11:26:32 +0200
commit58b9ce3080c12678e8c1c28c08da09d6ea60011d (patch)
tree10e501ba791e67febd47b397729ba5debb81a85c /client/src/assets/player/peertube-player-local-storage.ts
parentd794137057fc5fcea10ddd29f82e79ee2412fea4 (diff)
downloadPeerTube-58b9ce3080c12678e8c1c28c08da09d6ea60011d.tar.gz
PeerTube-58b9ce3080c12678e8c1c28c08da09d6ea60011d.tar.zst
PeerTube-58b9ce3080c12678e8c1c28c08da09d6ea60011d.zip
Resume videos for non-logged in users (#3885)
* client: resume videos for non-logged in users closes #3866 * fix build for embeded * Update client/src/app/app.component.ts * fix review comments
Diffstat (limited to 'client/src/assets/player/peertube-player-local-storage.ts')
-rw-r--r--client/src/assets/player/peertube-player-local-storage.ts50
1 files changed, 49 insertions, 1 deletions
diff --git a/client/src/assets/player/peertube-player-local-storage.ts b/client/src/assets/player/peertube-player-local-storage.ts
index 75ccfe618..cf2cfb472 100644
--- a/client/src/assets/player/peertube-player-local-storage.ts
+++ b/client/src/assets/player/peertube-player-local-storage.ts
@@ -68,6 +68,51 @@ function getStoredLastSubtitle () {
68 return getLocalStorage('last-subtitle') 68 return getLocalStorage('last-subtitle')
69} 69}
70 70
71function saveVideoWatchHistory(videoUUID: string, duration: number) {
72 return setLocalStorage(`video-watch-history`, JSON.stringify({
73 ...getStoredVideoWatchHistory(),
74 [videoUUID]: {
75 duration,
76 date: `${(new Date()).toISOString()}`
77 }
78 }))
79}
80
81function getStoredVideoWatchHistory(videoUUID?: string) {
82 let data
83
84 try {
85 data = JSON.parse(getLocalStorage('video-watch-history'))
86 } catch (error) {
87 console.error('Cannot parse video watch history from local storage: ', error)
88 }
89
90 data = data || {}
91
92 if (videoUUID) return data[videoUUID]
93
94 return data
95}
96
97function cleanupVideoWatch() {
98 const data = getStoredVideoWatchHistory()
99
100 const newData = Object.keys(data).reduce((acc, videoUUID) => {
101 const date = Date.parse(data[videoUUID].date)
102
103 const diff = Math.ceil(((new Date()).getTime() - date) / (1000 * 3600 * 24))
104
105 if (diff > 30) return acc
106
107 return {
108 ...acc,
109 [videoUUID]: data[videoUUID]
110 }
111 }, {})
112
113 setLocalStorage('video-watch-history', JSON.stringify(newData))
114}
115
71// --------------------------------------------------------------------------- 116// ---------------------------------------------------------------------------
72 117
73export { 118export {
@@ -81,7 +126,10 @@ export {
81 saveAverageBandwidth, 126 saveAverageBandwidth,
82 getAverageBandwidthInStore, 127 getAverageBandwidthInStore,
83 saveLastSubtitle, 128 saveLastSubtitle,
84 getStoredLastSubtitle 129 getStoredLastSubtitle,
130 saveVideoWatchHistory,
131 getStoredVideoWatchHistory,
132 cleanupVideoWatch
85} 133}
86 134
87// --------------------------------------------------------------------------- 135// ---------------------------------------------------------------------------