async reloadItem()

in client/src/components/pipelines/PipelinesLibrary.js [594:719]


  async reloadItem (key, expand, rootItems, reloadRoot = true) {
    if (!key) {
      return;
    }
    if (!rootItems) {
      rootItems = this.state.rootItems;
    }
    const item = getTreeItemByKey(key, rootItems);
    if (!item) {
      return;
    }
    switch (item.type) {
      case ItemTypes.folder:
      case ItemTypes.projectHistory:
        if (item.id === 'root') {
          if (reloadRoot) {
            await this.props.pipelinesLibrary.fetch();
          }
          const childExpandedKeys = getExpandedKeys(item.children);
          item.children = generateTreeData(
            this.props.pipelinesLibrary.value,
            {
              parent: item,
              expandedKeys: childExpandedKeys,
              filter: this.props.hiddenObjectsTreeFilter()
            }
          );
          item.isLeaf = item.children ? item.children.length === 0 : true;
        } else if (item.id === 'pipelines') {
          await this.props.pipelines.fetch();
        } else if (item.id === 'storages') {
          await this.props.dataStorages.fetch();
        } else {
          const reloadFolderRequest = this.props.folders.load(item.id);
          await reloadFolderRequest.fetchIfNeededOrWait();
          item.name = reloadFolderRequest.value.name;
          const childExpandedKeys = getExpandedKeys(item.children);
          item.children = generateTreeData(
            reloadFolderRequest.value,
            {
              parent: item,
              expandedKeys: childExpandedKeys,
              filter: this.props.hiddenObjectsTreeFilter()
            }
          );
          item.isLeaf = item.children.length === 0;
        }
        break;
      case ItemTypes.pipeline: {
        const pipelineRequest = this.props.pipelines.getPipeline(item.id);
        await pipelineRequest.fetchIfNeededOrWait();
        item.name = pipelineRequest.value.name;
        item.description = pipelineRequest.value.description;
        const versionsRequest = this.props.pipelines.versionsForPipeline(item.id);
        await versionsRequest.fetchIfNeededOrWait();
        item.children = generateTreeData(
          {versions: versionsRequest.value},
          {
            parent: item,
            filter: this.props.hiddenObjectsTreeFilter()
          }
        );
      }
        break;
      case ItemTypes.versionedStorage: {
        const pipelineRequest = this.props.pipelines.getPipeline(item.id);
        await pipelineRequest.fetchIfNeededOrWait();
        item.name = pipelineRequest.value.name;
        item.description = pipelineRequest.value.description;
      }
        break;
      case ItemTypes.configuration:
        const configurationRequest = this.props.configurations.getConfiguration(item.id);
        await configurationRequest.fetchIfNeededOrWait();
        item.name = configurationRequest.value.name;
        item.description = configurationRequest.value.description;
        break;
      case ItemTypes.storage:
        const dataStorageRequest = this.props.dataStorages.load(item.id);
        await dataStorageRequest.fetchIfNeededOrWait();
        item.name = dataStorageRequest.value.name;
        item.description = dataStorageRequest.value.description;
        break;
      case ItemTypes.metadataFolder:
      case ItemTypes.metadata:
        let parentFolder = item.parent;
        while (parentFolder && parentFolder.type !== ItemTypes.folder && parentFolder.parent) {
          parentFolder = parentFolder.parent;
        }
        if (parentFolder) {
          if (parentFolder.id === 'root') {
            if (reloadRoot) {
              await this.props.pipelinesLibrary.fetch();
            }
            const childExpandedKeys = getExpandedKeys(parentFolder.children);
            parentFolder.children = generateTreeData(
              this.props.pipelinesLibrary.value,
              {
                parent: parentFolder,
                expandedKeys: childExpandedKeys,
                filter: this.props.hiddenObjectsTreeFilter()
              }
            );
            parentFolder.isLeaf = parentFolder.children ? parentFolder.children.length === 0 : true;
          } else if (['pipelines', 'storages'].indexOf(parentFolder.id) === -1) {
            const reloadFolderRequest = this.props.folders.load(parentFolder.id);
            await reloadFolderRequest.fetchIfNeededOrWait();
            parentFolder.name = reloadFolderRequest.value.name;
            const childExpandedKeys = getExpandedKeys(parentFolder.children);
            parentFolder.children = generateTreeData(
              reloadFolderRequest.value,
              {
                parent: parentFolder,
                expandedKeys: childExpandedKeys,
                filter: this.props.hiddenObjectsTreeFilter()
              }
            );
            parentFolder.isLeaf = parentFolder.children.length === 0;
          }
        }
        break;
    }
    if (expand !== undefined) {
      expandItem(item, expand);
    }
  }