export default function usage()

in public/video-ui/src/reducers/usageReducer.js [3:50]


export default function usage(state = blankUsageData, action) {
  switch (action.type) {
    case 'VIDEO_USAGE_GET_RECEIVE': {
      return action.usages || {};
    }
    case 'VIDEO_PAGE_CREATE_POST_RECEIVE': {
      // TODO avoid mutation... but how on such a deep property?!
      // usages are sorted creation date DESC, new usage goes to the top
      state.data.preview.video = [action.newPage, ...state.data.preview.video];

      return Object.assign({}, state, {
        totalUsages: state.totalUsages + 1,
        totalVideoPages: state.totalVideoPages + 1
      });
    }
    case 'VIDEO_PAGE_UPDATE_POST_RECEIVE': {
      const usages = state.data;

      return Object.keys(usages).reduce(
        (all, publishState) => {
          const updated = usages[publishState].video.map(usage => {
            return Object.assign({}, usage, {
              webTitle: action.newTitle
            });
          });

          // TODO avoid mutation... but how on such a deep property?!
          all.data[publishState] = {
            video: updated,
            other: usages[publishState].other
          };

          return all;
        },
        Object.assign({}, blankUsageData, {
          totalUsages: state.totalUsages,
          totalVideoPages: state.totalVideoPages
        })
      );
    }
    case 'USAGE_UPDATE_BLANK': {
      return Object.assign({}, state, blankUsageData);
    }
    default: {
      return state;
    }
  }
}