27 lines
1.2 KiB
TypeScript
27 lines
1.2 KiB
TypeScript
import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode";
|
|
import { act } from "../../extension";
|
|
import { Setting } from "../../settingsManager";
|
|
import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem";
|
|
import SettingTreeItem from "./setting";
|
|
|
|
export default class SecretsTreeItem extends TreeItem implements GithubLocalActionsTreeItem {
|
|
static contextValue = 'githubLocalActions.secrets';
|
|
|
|
constructor(public workspaceFolder: WorkspaceFolder, secrets: Setting[]) {
|
|
super('Secrets', TreeItemCollapsibleState.Collapsed);
|
|
this.description = `${secrets.filter(secret => secret.selected).length}/${secrets.length}`;
|
|
this.contextValue = SecretsTreeItem.contextValue;
|
|
this.iconPath = new ThemeIcon('lock');
|
|
}
|
|
|
|
async getChildren(): Promise<GithubLocalActionsTreeItem[]> {
|
|
const items: GithubLocalActionsTreeItem[] = [];
|
|
|
|
const settings = await act.settingsManager.getSettings(this.workspaceFolder, false);
|
|
for (const secret of settings.secrets) {
|
|
items.push(SettingTreeItem.getSecretTreeItem(this.workspaceFolder, secret));
|
|
}
|
|
|
|
return items.sort((a, b) => a.label!.toString().localeCompare(b.label!.toString()));
|
|
}
|
|
} |