/* eslint-disable no-param-reassign,no-restricted-syntax */
export default {
  /**
   * Clean the directories tree
   * @param state
   */
  cleanTree(state) {
    state.directories = [];
    state.counter = 1;
  },

  /**
   * Add directories to the tree
   * @param state
   * @param directories
   * @param parentId
   */
  addDirectories(state, { directories, parentId }) {
    directories.forEach((directory) => {
      // add properties to dir
      directory.id = state.counter;
      directory.parentId = parentId;
      directory.props.subdirectoriesLoaded = false;
      directory.props.showSubdirectories = false;

      state.counter += 1;

      state.directories.push(directory);
    });
  },

  /**
   * Replace directories
   * @param state
   * @param directories
   */
  replaceDirectories(state, directories) {
    state.directories = directories;
  },

  /**
   * Update directory properties
   * @param state
   * @param index
   * @param props
   */
  updateDirectoryProps(state, { index, props }) {
    for (const property in props) {
      if (Object.prototype.hasOwnProperty.call(props, property)) {
        state.directories[index].props[property] = props[property];
      }
    }
  },

  /**
   * Add to temp index array
   * @param state
   * @param index
   */
  addToTempArray(state, index) {
    state.tempIndexArray.push(index);
  },

  /**
   * Clear temp index array
   * @param state
   */
  clearTempArray(state) {
    state.tempIndexArray = [];
  },
};