export async function pickProjectNameAndVisibility()

in src/desktop/gitlab/clone/pick_project_name_and_visibility.ts [39:77]


export async function pickProjectNameAndVisibility(
  namespace: NamespacePickerItem,
  uri: vscode.Uri,
) {
  const [initialName] = uri.path.split('/').reverse();

  const visibilityPicker = vscode.window.createQuickPick<NameAndVisibilityPickerItem>();
  visibilityPicker.placeholder = 'Project path';
  visibilityPicker.keepScrollPosition = true;
  visibilityPicker.value = initialName;
  visibilityPicker.matchOnDescription = true;
  visibilityPicker.items = getVisibilityPickerItems(namespace, visibilityPicker.value);

  // The currently selected item index should be preserved when the items change.
  let activeIndex = 0;
  let skipNextEvent = false;
  visibilityPicker.onDidChangeActive(a => {
    if (skipNextEvent) return;

    const [active] = a;
    const newIndex = visibilityPicker.items.indexOf(active);
    if (newIndex >= 0) {
      activeIndex = newIndex;
    } else {
      // None of the items contain the textbox query, which means the list
      // is still in the process of being updated. Ignore all incoming events
      // until the list has finished updating.
      skipNextEvent = true;
    }
  });
  visibilityPicker.onDidChangeValue(v => {
    visibilityPicker.items = getVisibilityPickerItems(namespace, v);
    visibilityPicker.activeItems = [visibilityPicker.items[activeIndex]];

    skipNextEvent = false;
  });

  return showQuickPick(visibilityPicker);
}