X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Badmin%2Fplugins%2Fplugin-list-installed%2Fplugin-list-installed.component.ts;h=968abcbe5854c1d1119c37268789f32eb4675425;hb=15a7eafb892441957ba7dd6fcbf556086fe5b2b3;hp=1ffd001c6e52a7c24f093d8ebc33374c75b10f2b;hpb=66357162f8e1227495f09bd4f68446aad7071c6d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+admin/plugins/plugin-list-installed/plugin-list-installed.component.ts b/client/src/app/+admin/plugins/plugin-list-installed/plugin-list-installed.component.ts index 1ffd001c6..968abcbe5 100644 --- a/client/src/app/+admin/plugins/plugin-list-installed/plugin-list-installed.component.ts +++ b/client/src/app/+admin/plugins/plugin-list-installed/plugin-list-installed.component.ts @@ -4,9 +4,8 @@ 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 { PluginService } from '@app/core/plugins/plugin.service' -import { compareSemVer } from '@shared/core-utils/miscs/miscs' -import { PeerTubePlugin } from '@shared/models/plugins/peertube-plugin.model' -import { PluginType } from '@shared/models/plugins/plugin.type' +import { compareSemVer } from '@shared/core-utils' +import { PeerTubePlugin, PluginType } from '@shared/models' @Component({ selector: 'my-plugin-list-installed', @@ -31,8 +30,6 @@ export class PluginListInstalledComponent implements OnInit { plugins: PeerTubePlugin[] = [] updating: { [name: string]: boolean } = {} - PluginType = PluginType - onDataSubject = new Subject() constructor ( @@ -104,6 +101,10 @@ export class PluginListInstalledComponent implements OnInit { return !!this.updating[this.getUpdatingKey(plugin)] } + isTheme (plugin: PeerTubePlugin) { + return plugin.type === PluginType.THEME + } + async uninstall (plugin: PeerTubePlugin) { const res = await this.confirmService.confirm( $localize`Do you really want to uninstall ${plugin.name}?`, @@ -128,6 +129,16 @@ export class PluginListInstalledComponent implements OnInit { const updatingKey = this.getUpdatingKey(plugin) if (this.updating[updatingKey]) return + if (this.isMajorUpgrade(plugin)) { + const res = await this.confirmService.confirm( + $localize`This is a major plugin upgrade. Please go on the plugin homepage to check potential release notes.`, + $localize`Upgrade`, + $localize`Proceed upgrade` + ) + + if (res === false) return + } + this.updating[updatingKey] = true this.pluginApiService.update(plugin.name, plugin.type) @@ -149,7 +160,20 @@ export class PluginListInstalledComponent implements OnInit { return [ '/admin', 'plugins', 'show', this.pluginService.nameToNpmName(plugin.name, plugin.type) ] } + getPluginOrThemeHref (name: string) { + return this.pluginApiService.getPluginOrThemeHref(this.pluginType, name) + } + private getUpdatingKey (plugin: PeerTubePlugin) { return plugin.name + plugin.type } + + private isMajorUpgrade (plugin: PeerTubePlugin) { + if (!plugin.latestVersion) return false + + const latestMajor = plugin.latestVersion.split('.')[0] + const currentMajor = plugin.version.split('.')[0] + + return latestMajor > currentMajor + } }