Better typings
[oweals/peertube.git] / client / src / assets / player / peertube-player-local-storage.ts
1 function getStoredVolume () {
2   const value = getLocalStorage('volume')
3   if (value !== null && value !== undefined) {
4     const valueNumber = parseFloat(value)
5     if (isNaN(valueNumber)) return undefined
6
7     return valueNumber
8   }
9
10   return undefined
11 }
12
13 function getStoredWebTorrentEnabled (): boolean {
14   const value = getLocalStorage('webtorrent_enabled')
15   if (value !== null && value !== undefined) return value === 'true'
16
17   return false
18 }
19
20 function getStoredMute () {
21   const value = getLocalStorage('mute')
22   if (value !== null && value !== undefined) return value === 'true'
23
24   return undefined
25 }
26
27 function getStoredTheater () {
28   const value = getLocalStorage('theater-enabled')
29   if (value !== null && value !== undefined) return value === 'true'
30
31   return undefined
32 }
33
34 function saveVolumeInStore (value: number) {
35   return setLocalStorage('volume', value.toString())
36 }
37
38 function saveMuteInStore (value: boolean) {
39   return setLocalStorage('mute', value.toString())
40 }
41
42 function saveTheaterInStore (enabled: boolean) {
43   return setLocalStorage('theater-enabled', enabled.toString())
44 }
45
46 function saveAverageBandwidth (value: number) {
47   return setLocalStorage('average-bandwidth', value.toString())
48 }
49
50 function getAverageBandwidthInStore () {
51   const value = getLocalStorage('average-bandwidth')
52   if (value !== null && value !== undefined) {
53     const valueNumber = parseInt(value, 10)
54     if (isNaN(valueNumber)) return undefined
55
56     return valueNumber
57   }
58
59   return undefined
60 }
61
62 // ---------------------------------------------------------------------------
63
64 export {
65   getStoredVolume,
66   getStoredWebTorrentEnabled,
67   getStoredMute,
68   getStoredTheater,
69   saveVolumeInStore,
70   saveMuteInStore,
71   saveTheaterInStore,
72   saveAverageBandwidth,
73   getAverageBandwidthInStore
74 }
75
76 // ---------------------------------------------------------------------------
77
78 const KEY_PREFIX = 'peertube-videojs-'
79
80 function getLocalStorage (key: string) {
81   try {
82     return localStorage.getItem(KEY_PREFIX + key)
83   } catch {
84     return undefined
85   }
86 }
87
88 function setLocalStorage (key: string, value: string) {
89   try {
90     localStorage.setItem(KEY_PREFIX + key, value)
91   } catch { /* empty */
92   }
93 }