import { Component, OnInit } from '@angular/core'
-import { Notifier } from '@app/core'
+import { Notifier, ServerService } from '@app/core'
import { ConfirmService } from '../../../core'
import { I18n } from '@ngx-translate/i18n-polyfill'
import { PluginType } from '@shared/models/plugins/plugin.type'
pagination: ComponentPagination = {
currentPage: 1,
- itemsPerPage: 10
+ itemsPerPage: 10,
+ totalItems: null
}
sort = '-popularity'
plugins: PeerTubePluginIndex[] = []
installing: { [name: string]: boolean } = {}
+ pluginInstalled = false
+
+ onDataSubject = new Subject<any[]>()
private searchSubject = new Subject<string>()
constructor (
+ private server: ServerService,
private i18n: I18n,
private pluginService: PluginApiService,
private notifier: Notifier,
this.reloadPlugins()
}
- onSearchChange (search: string) {
- this.searchSubject.next(search)
+ onSearchChange (event: Event) {
+ const target = event.target as HTMLInputElement
+
+ this.searchSubject.next(target.value)
}
reloadPlugins () {
this.plugins = this.plugins.concat(res.data)
this.pagination.totalItems = res.total
+
+ this.onDataSubject.next(res.data)
},
- err => this.notifier.error(err.message)
+ err => {
+ console.error(err)
+
+ const message = this.i18n('The plugin index is not available. Please retry later.')
+ this.notifier.error(message)
+ }
)
}
.subscribe(
() => {
this.installing[plugin.npmName] = false
+ this.pluginInstalled = true
this.notifier.success(this.i18n('{{pluginName}} installed.', { pluginName: plugin.name }))