Commit a0fbaee1 authored by Tomas Vik (OOO back on 2026-08-31)'s avatar Tomas Vik (OOO back on 2026-08-31) 🌴
Browse files

feat(sidebar): show welcome view if there are no tokens set

parent 36fd8f83
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -246,10 +246,18 @@
        },
        {
          "id": "currentBranchInfo",
          "name": "For current branch"
          "name": "For current branch",
          "when": "gitlab:validState"
        }
      ]
    },
    "viewsWelcome": [
      {
        "view": "issuesAndMrs",
        "contents": "Welcome to the GitLab Workflow extension!\nThis extension needs an access token with the 'api' and 'read_user' scopes.\n- GitLab.com users: [create a token on GitLab.com](https://gitlab.com/profile/personal_access_tokens).\n- Users on self-managed instances: in GitLab, click your avatar in the top right corner and select 'Preferences.' In the left sidebar, select 'Access Tokens,' then select 'Add a personal access token.'\nAfter you create a token, select 'Set Personal Access Token':\n[Set Personal Access Token](command:gl.setToken)\nTo learn more, read [the setup information](https://gitlab.com/gitlab-org/gitlab-vscode-extension#setup) for this extension.",
        "when": "gitlab:noToken"
      }
    ],
    "configuration": {
      "title": "GitLab Workflow (GitLab VSCode Extension)",
      "properties": {
+2 −1
Original line number Diff line number Diff line
const { Uri } = require('../test_utils/uri');
const { EventEmitter } = require('../test_utils/event_emitter');

module.exports = {
  TreeItem: function TreeItem(label, collapsibleState) {
@@ -7,7 +8,7 @@ module.exports = {
  ThemeIcon: function ThemeIcon(id) {
    return { id };
  },
  EventEmitter: jest.fn(),
  EventEmitter,
  TreeItemCollapsibleState: {
    Collapsed: 'collapsed',
  },
+6 −1
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ import { MrItemModel } from './items/mr_item_model';
import { IssueItem } from './items/issue_item';
import { ExternalUrlItem } from './items/external_url_item';
import { GitLabProject } from '../gitlab/gitlab_project';
import { extensionState } from '../extension_state';

dayjs.extend(relativeTime);

@@ -22,6 +23,10 @@ class DataProvider implements vscode.TreeDataProvider<ItemModel | vscode.TreeIte

  private disposableChildren: vscode.Disposable[] = [];

  constructor() {
    extensionState.onDidChangeValid(this.refresh, this);
  }

  // eslint-disable-next-line class-methods-use-this
  async createPipelineItem(pipeline: RestPipeline | null, project: GitLabProject) {
    if (!pipeline) {
@@ -71,7 +76,7 @@ class DataProvider implements vscode.TreeDataProvider<ItemModel | vscode.TreeIte
    this.disposableChildren.forEach(s => s.dispose());
    this.disposableChildren = [];
    const workspaceFolder = await getCurrentWorkspaceFolder();
    if (!workspaceFolder) {
    if (!extensionState.isValid() || !workspaceFolder) {
      return [];
    }
    try {
+8 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ import { ItemModel } from './items/item_model';
import { CONFIG_CUSTOM_QUERIES, CONFIG_NAMESPACE } from '../constants';
import { logError } from '../log';
import { ErrorItem } from './items/error_item';
import { extensionState } from '../extension_state';

export class DataProvider implements vscode.TreeDataProvider<ItemModel | vscode.TreeItem> {
  private eventEmitter = new vscode.EventEmitter<void>();
@@ -16,11 +17,18 @@ export class DataProvider implements vscode.TreeDataProvider<ItemModel | vscode.

  onDidChangeTreeData = this.eventEmitter.event;

  constructor() {
    extensionState.onDidChangeValid(this.refresh, this);
  }

  async getChildren(el: ItemModel | undefined): Promise<ItemModel[] | vscode.TreeItem[]> {
    if (el) return el.getChildren();

    this.children.forEach(ch => ch.dispose());
    this.children = [];
    if (!extensionState.isValid()) {
      return [];
    }
    let workspaces: GitLabWorkspace[] = [];
    try {
      workspaces = await gitLabService.getAllGitlabWorkspaces();
+2 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ const openers = require('./openers');
const tokenInput = require('./token_input');
const { tokenService } = require('./services/token_service');
const tokenServiceWrapper = require('./token_service_wrapper');
const { extensionState } = require('./extension_state');
const pipelineActionsPicker = require('./pipeline_actions_picker');
const searchInput = require('./search_input');
const { createSnippet } = require('./commands/create_snippet');
@@ -111,6 +112,7 @@ const activate = context => {
  webviewController.addDeps(context);
  tokenService.init(context);
  tokenServiceWrapper.init(context);
  extensionState.init(tokenService);
  registerCiCompletion(context);
  context.subscriptions.push(GitExtensionWrapper.registerToGitExtension());
};
Loading