Merge branch 'release/2.1.0' into develop
[oweals/peertube.git] / client / src / app / shared / images / global-icon.component.ts
index a13b7d8e05bb00bf3259e63e5d4b7cbbebba754b..b6e641228ad8e727f130d0f670196747e5c02685 100644 (file)
@@ -1,4 +1,5 @@
 import { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit } from '@angular/core'
+import { HooksService } from '@app/core/plugins/hooks.service'
 
 const icons = {
   'add': require('!!raw-loader?!../../../assets/images/global/add.svg'),
@@ -9,6 +10,7 @@ const icons = {
   'sparkle': require('!!raw-loader?!../../../assets/images/global/sparkle.svg'),
   'alert': require('!!raw-loader?!../../../assets/images/global/alert.svg'),
   'cloud-error': require('!!raw-loader?!../../../assets/images/global/cloud-error.svg'),
+  'clock': require('!!raw-loader?!../../../assets/images/global/clock.svg'),
   'user-add': require('!!raw-loader?!../../../assets/images/global/user-add.svg'),
   'no': require('!!raw-loader?!../../../assets/images/global/no.svg'),
   'cloud-download': require('!!raw-loader?!../../../assets/images/global/cloud-download.svg'),
@@ -25,6 +27,8 @@ const icons = {
   'cross': require('!!raw-loader?!../../../assets/images/global/cross.svg'),
   'validate': require('!!raw-loader?!../../../assets/images/global/validate.svg'),
   'tick': require('!!raw-loader?!../../../assets/images/global/tick.svg'),
+  'repeat': require('!!raw-loader?!../../../assets/images/global/repeat.svg'),
+  'inbox-full': require('!!raw-loader?!../../../assets/images/global/inbox-full.svg'),
   'dislike': require('!!raw-loader?!../../../assets/images/video/dislike.svg'),
   'support': require('!!raw-loader?!../../../assets/images/video/support.svg'),
   'like': require('!!raw-loader?!../../../assets/images/video/like.svg'),
@@ -60,11 +64,23 @@ export type GlobalIconName = keyof typeof icons
 export class GlobalIconComponent implements OnInit {
   @Input() iconName: GlobalIconName
 
-  constructor (private el: ElementRef) {}
+  constructor (
+    private el: ElementRef,
+    private hooks: HooksService
+  ) { }
 
-  ngOnInit () {
-    const nativeElement = this.el.nativeElement
+  async ngOnInit () {
+    const nativeElement = this.el.nativeElement as HTMLElement
+    nativeElement.innerHTML = await this.hooks.wrapFun(
+      this.getSVGContent.bind(this),
+      { name: this.iconName },
+      'common',
+      'filter:internal.common.svg-icons.get-content.params',
+      'filter:internal.common.svg-icons.get-content.result'
+    )
+  }
 
-    nativeElement.innerHTML = icons[this.iconName]
+  private getSVGContent (options: { name: string }) {
+    return icons[options.name]
   }
 }