62 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {
 | 
						|
    AdminStatus,
 | 
						|
    AdminStatusCard,
 | 
						|
} from "@goauthentik/admin/admin-overview/cards/AdminStatusCard";
 | 
						|
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
 | 
						|
 | 
						|
import { msg, str } from "@lit/localize";
 | 
						|
import { TemplateResult, html } from "lit";
 | 
						|
import { customElement } from "lit/decorators.js";
 | 
						|
 | 
						|
import { AdminApi, Version } from "@goauthentik/api";
 | 
						|
 | 
						|
@customElement("ak-admin-status-version")
 | 
						|
export class VersionStatusCard extends AdminStatusCard<Version> {
 | 
						|
    icon = "pf-icon pf-icon-bundle";
 | 
						|
 | 
						|
    getPrimaryValue(): Promise<Version> {
 | 
						|
        return new AdminApi(DEFAULT_CONFIG).adminVersionRetrieve();
 | 
						|
    }
 | 
						|
 | 
						|
    getStatus(value: Version): Promise<AdminStatus> {
 | 
						|
        if (value.buildHash) {
 | 
						|
            return Promise.resolve<AdminStatus>({
 | 
						|
                icon: "fa fa-check-circle pf-m-success",
 | 
						|
                message: html`${msg(str`Based on ${value.versionCurrent}`)}`,
 | 
						|
            });
 | 
						|
        }
 | 
						|
        if (value.outdated) {
 | 
						|
            return Promise.resolve<AdminStatus>({
 | 
						|
                icon: "fa fa-exclamation-triangle pf-m-warning",
 | 
						|
                message: html`${msg(str`${value.versionLatest} is available!`)}`,
 | 
						|
            });
 | 
						|
        }
 | 
						|
        if (value.versionLatestValid) {
 | 
						|
            return Promise.resolve<AdminStatus>({
 | 
						|
                icon: "fa fa-check-circle pf-m-success",
 | 
						|
                message: html`${msg("Up-to-date!")}`,
 | 
						|
            });
 | 
						|
        }
 | 
						|
        return Promise.resolve<AdminStatus>({
 | 
						|
            icon: "fa fa-question-circle",
 | 
						|
            message: html`${msg("Latest version unknown")}`,
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    renderHeader(): TemplateResult {
 | 
						|
        return html`${msg("Version")}`;
 | 
						|
    }
 | 
						|
 | 
						|
    renderValue(): TemplateResult {
 | 
						|
        let text = this.value?.versionCurrent;
 | 
						|
        const versionFamily = this.value?.versionCurrent.split(".");
 | 
						|
        versionFamily?.pop();
 | 
						|
        let link = `https://goauthentik.io/docs/releases/${versionFamily?.join(".")}`;
 | 
						|
        if (this.value?.buildHash) {
 | 
						|
            text = this.value.buildHash?.substring(0, 7);
 | 
						|
            link = `https://github.com/goauthentik/authentik/commit/${this.value.buildHash}`;
 | 
						|
        }
 | 
						|
        return html`<a rel="noopener noreferrer" href=${link} target="_blank">${text}</a>`;
 | 
						|
    }
 | 
						|
}
 |