]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/helpers/utils.ts
add ng-select for templatable select options
[github/Chocobozzz/PeerTube.git] / client / src / app / helpers / utils.ts
index 879f697f473370399837fdd0eadaca6c4907a163..aa37fdd46b8dfd70bbcbcca66621bca66d561c1a 100644 (file)
@@ -16,7 +16,10 @@ function getParameterByName (name: string, url: string) {
   return decodeURIComponent(results[2].replace(/\+/g, ' '))
 }
 
-function populateAsyncUserVideoChannels (authService: AuthService, channel: { id: number, label: string, support?: string }[]) {
+function populateAsyncUserVideoChannels (
+  authService: AuthService,
+  channel: { id: number, label: string, support?: string, avatarPath?: string, recent?: boolean }[]
+) {
   return new Promise(res => {
     authService.userInformationLoaded
       .subscribe(
@@ -27,7 +30,12 @@ function populateAsyncUserVideoChannels (authService: AuthService, channel: { id
           const videoChannels = user.videoChannels
           if (Array.isArray(videoChannels) === false) return
 
-          videoChannels.forEach(c => channel.push({ id: c.id, label: c.displayName, support: c.support }))
+          videoChannels.forEach(c => channel.push({
+            id: c.id,
+            label: c.displayName,
+            support: c.support,
+            avatarPath: c.avatar?.path
+          }))
 
           return res()
         }
@@ -36,7 +44,10 @@ function populateAsyncUserVideoChannels (authService: AuthService, channel: { id
 }
 
 function getAbsoluteAPIUrl () {
-  let absoluteAPIUrl = environment.apiUrl
+  let absoluteAPIUrl = environment.hmr === true
+    ? 'http://localhost:9000'
+    : environment.apiUrl
+
   if (!absoluteAPIUrl) {
     // The API is on the same domain
     absoluteAPIUrl = window.location.origin
@@ -45,6 +56,16 @@ function getAbsoluteAPIUrl () {
   return absoluteAPIUrl
 }
 
+function getAbsoluteEmbedUrl () {
+  let absoluteEmbedUrl = environment.embedUrl
+  if (!absoluteEmbedUrl) {
+    // The Embed is on the same domain
+    absoluteEmbedUrl = window.location.origin
+  }
+
+  return absoluteEmbedUrl
+}
+
 const datePipe = new DatePipe('en')
 function dateToHuman (date: string) {
   return datePipe.transform(date, 'medium')
@@ -68,15 +89,6 @@ function immutableAssign <A, B> (target: A, source: B) {
   return Object.assign({}, target, source)
 }
 
-function objectToUrlEncoded (obj: any) {
-  const str: string[] = []
-  for (const key of Object.keys(obj)) {
-    str.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]))
-  }
-
-  return str.join('&')
-}
-
 // Thanks: https://gist.github.com/ghinda/8442a57f22099bdb2e34
 function objectToFormData (obj: any, form?: FormData, namespace?: string) {
   const fd = form || new FormData()
@@ -194,13 +206,13 @@ export {
   sortBy,
   durationToString,
   lineFeedToHtml,
-  objectToUrlEncoded,
   getParameterByName,
   populateAsyncUserVideoChannels,
   getAbsoluteAPIUrl,
   dateToHuman,
   immutableAssign,
   objectToFormData,
+  getAbsoluteEmbedUrl,
   objectLineFeedToHtml,
   removeElementFromArray,
   importModule,