X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Badmin%2Fplugins%2Fplugin-search%2Fplugin-search.component.ts;h=1a6b4eba3ecf50c88aa7fdcc254c3ebf2291c096;hb=66357162f8e1227495f09bd4f68446aad7071c6d;hp=0058fa691d5fe9f251f1df453559288aa3148536;hpb=89c344dba4ae2fca39cf636c3c6f09f31a339493;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts b/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts index 0058fa691..1a6b4eba3 100644 --- a/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts +++ b/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts @@ -1,14 +1,11 @@ +import { Subject } from 'rxjs' +import { debounceTime, distinctUntilChanged } from 'rxjs/operators' import { Component, OnInit } from '@angular/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' -import { PluginApiService } from '@app/+admin/plugins/shared/plugin-api.service' -import { ComponentPagination, hasMoreItems } from '@app/shared/rest/component-pagination.model' import { ActivatedRoute, Router } from '@angular/router' +import { PluginApiService } from '@app/+admin/plugins/shared/plugin-api.service' +import { ComponentPagination, ConfirmService, hasMoreItems, Notifier } from '@app/core' import { PeerTubePluginIndex } from '@shared/models/plugins/peertube-plugin-index.model' -import { Subject } from 'rxjs' -import { debounceTime, distinctUntilChanged } from 'rxjs/operators' +import { PluginType } from '@shared/models/plugins/plugin.type' @Component({ selector: 'my-plugin-search', @@ -25,7 +22,8 @@ export class PluginSearchComponent implements OnInit { pagination: ComponentPagination = { currentPage: 1, - itemsPerPage: 10 + itemsPerPage: 10, + totalItems: null } sort = '-popularity' @@ -36,11 +34,11 @@ export class PluginSearchComponent implements OnInit { installing: { [name: string]: boolean } = {} pluginInstalled = false + onDataSubject = new Subject() + private searchSubject = new Subject() constructor ( - private server: ServerService, - private i18n: I18n, private pluginService: PluginApiService, private notifier: Notifier, private confirmService: ConfirmService, @@ -67,8 +65,10 @@ export class PluginSearchComponent implements OnInit { this.reloadPlugins() } - onSearchChange (search: string) { - this.searchSubject.next(search) + onSearchChange (event: Event) { + const target = event.target as HTMLInputElement + + this.searchSubject.next(target.value) } reloadPlugins () { @@ -90,9 +90,16 @@ export class PluginSearchComponent implements OnInit { 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 = $localize`The plugin index is not available. Please retry later.` + this.notifier.error(message) + } ) } @@ -112,8 +119,8 @@ export class PluginSearchComponent implements OnInit { if (this.installing[plugin.npmName]) return const res = await this.confirmService.confirm( - this.i18n('Please only install plugins or themes you trust, since they can execute any code on your instance.'), - this.i18n('Install {{pluginName}}?', { pluginName: plugin.name }) + $localize`Please only install plugins or themes you trust, since they can execute any code on your instance.`, + $localize`Install ${plugin.name}?` ) if (res === false) return @@ -125,7 +132,7 @@ export class PluginSearchComponent implements OnInit { this.installing[plugin.npmName] = false this.pluginInstalled = true - this.notifier.success(this.i18n('{{pluginName}} installed.', { pluginName: plugin.name })) + this.notifier.success($localize`${plugin.name} installed.`) plugin.installed = true },