rokumatsumoto/boyutluseyler

View on GitHub
app/javascript/connected_uploader/store/mutations.js

Summary

Maintainability
A
0 mins
Test Coverage
import * as types from './mutation_types';

export default {
  [types.DRAG_OVER](state) {
    state.hovering = true;
  },

  [types.DRAG_LEAVE](state) {
    state.hovering = false;
  },

  [types.ADD_FILE](state, fileInfo) {
    state.files = state.files.concat([
      {
        uniqueId: fileInfo.uniqueId,
        id: fileInfo.id,
        filename: fileInfo.filename,
        size: fileInfo.size,
        error: null,
        loaded: 0,
        loading: false,
        url: fileInfo.url,
        thumbUrl: fileInfo.thumbUrl,
      },
    ]);
  },

  [types.REMOVE_FILE](state, uniqueId) {
    state.files = state.files.filter(file => file.uniqueId !== uniqueId);
  },

  [types.UPDATE_FILE_LIST](state, fileList) {
    state.files = fileList;
  },

  [types.SET_FILE_STATUS](state, payload) {
    state.files = state.files.map(file => {
      if (file.uniqueId !== payload.uniqueId) {
        return file;
      }
      let updatedFile = file;
      switch (payload.actionName) {
        case 'ERROR_FILE':
          updatedFile = Object.assign(file, { error: payload.error }, { loading: false });
          break;
        case 'LOADING_FILE':
          updatedFile = Object.assign(file, { loading: true });
          break;
        case 'PROGRESS_FILE':
          updatedFile = Object.assign(file, { loaded: payload.loaded });
          break;
        case 'FILE_DONE':
          updatedFile = Object.assign(file, { loading: false }, { id: payload.id });
          break;
        default:
      }
      return updatedFile;
    });
  },
};