Customize select
[oweals/peertube.git] / client / src / app / shared / misc / utils.ts
1 // Thanks: https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript
2
3 import { AuthService } from '../../core/auth'
4
5 function getParameterByName (name: string, url: string) {
6   if (!url) url = window.location.href
7   name = name.replace(/[\[\]]/g, '\\$&')
8
9   const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)')
10   const results = regex.exec(url)
11
12   if (!results) return null
13   if (!results[2]) return ''
14
15   return decodeURIComponent(results[2].replace(/\+/g, ' '))
16 }
17
18 function viewportHeight () {
19   return Math.max(document.documentElement.clientHeight, window.innerHeight || 0)
20 }
21
22 function populateAsyncUserVideoChannels (authService: AuthService, channel: any[]) {
23   return new Promise(res => {
24     authService.userInformationLoaded
25       .subscribe(
26         () => {
27           const user = authService.getUser()
28           if (!user) return
29
30           const videoChannels = user.videoChannels
31           if (Array.isArray(videoChannels) === false) return
32
33           videoChannels.forEach(c => channel.push({ id: c.id, label: c.name }))
34
35           return res()
36         }
37       )
38   })
39 }
40
41 export {
42   viewportHeight,
43   getParameterByName,
44   populateAsyncUserVideoChannels
45 }