/* eslint-disable object-curly-newline */
export default {
  /**
   * Set disks
   * @param state
   * @param disks
   */
  setDisks(state, disks) {
    state.disks = disks;
  },

  /**
   * Set clipboard
   * @param state
   * @param type
   * @param disk
   * @param directories
   * @param files
   */
  setClipboard(state, { type, disk, directories, files }) {
    state.clipboard.type = type;
    state.clipboard.disk = disk;
    state.clipboard.directories = directories;
    state.clipboard.files = files;
  },

  /**
   * Truncate clipboard
   * @param state
   * @param type
   * @param path
   */
  truncateClipboard(state, { type, path }) {
    const itemIndex = state.clipboard[type].indexOf(path);

    if (itemIndex !== -1) state.clipboard[type].splice(itemIndex, 1);
    if (!state.clipboard.directories.length && !state.clipboard.files.length) {
      state.clipboard.type = null;
    }
  },

  /**
   * Reset clipboard
   * @param state
   */
  resetClipboard(state) {
    state.clipboard.type = null;
    state.clipboard.disk = null;
    state.clipboard.directories = [];
    state.clipboard.files = [];
  },

  /**
   * Select manager (when shown 2 file manager windows)
   * @param state
   * @param managerName
   */
  setActiveManager(state, managerName) {
    state.activeManager = managerName;
  },

  /**
   * Set file callback
   * @param state
   * @param callback
   */
  setFileCallBack(state, callback) {
    state.fileCallback = callback;
  },

  /**
   * Screen mode toggle - ON/OFF full screen
   * @param state
   */
  screenToggle(state) {
    state.fullScreen = !state.fullScreen;
  },

  /**
   * Reset state
   * @param state
   */
  resetState(state) {
    state.activeManager = 'left';
    state.clipboard = {
      type: null,
      disk: null,
      directories: [],
      files: [],
    };
    state.disks = [];
    state.fileCallback = null;
    state.fullScreen = false;
  },
};