You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							98 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
	
	
							98 lines
						
					
					
						
							2.7 KiB
						
					
					
				"use strict";
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", {
 | 
						|
  value: true
 | 
						|
});
 | 
						|
exports.default = exports.EditAction = void 0;
 | 
						|
 | 
						|
var _notFoundError = _interopRequireDefault(require("../../utils/errors/not-found-error"));
 | 
						|
 | 
						|
var _populator = _interopRequireDefault(require("../../utils/populator/populator"));
 | 
						|
 | 
						|
var _paramConverter = require("../../../utils/param-converter");
 | 
						|
 | 
						|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 | 
						|
 | 
						|
/**
 | 
						|
 * @implements Action
 | 
						|
 * @category Actions
 | 
						|
 * @module EditAction
 | 
						|
 * @description
 | 
						|
 * Shows form for updating existing record
 | 
						|
 * @private
 | 
						|
 *
 | 
						|
 * @classdesc
 | 
						|
 * Uses {@link EditAction} component to render form
 | 
						|
 */
 | 
						|
const EditAction = {
 | 
						|
  name: 'edit',
 | 
						|
  isVisible: true,
 | 
						|
  actionType: 'record',
 | 
						|
  icon: 'Edit',
 | 
						|
  showInDrawer: false,
 | 
						|
 | 
						|
  /**
 | 
						|
   * Responsible for updating existing record.
 | 
						|
   *
 | 
						|
   * To invoke this action use {@link ApiClient#recordAction}
 | 
						|
   *
 | 
						|
   * @return  {RecordActionResponse}  populated record
 | 
						|
   * @implements Action#handler
 | 
						|
   * @memberof module:EditAction
 | 
						|
   */
 | 
						|
  handler: async (request, response, context) => {
 | 
						|
    var _populatedRecord$base;
 | 
						|
 | 
						|
    const {
 | 
						|
      record,
 | 
						|
      resource,
 | 
						|
      currentAdmin,
 | 
						|
      h,
 | 
						|
      translateMessage
 | 
						|
    } = context;
 | 
						|
 | 
						|
    if (!record) {
 | 
						|
      throw new _notFoundError.default([`Record of given id ("${request.params.recordId}") could not be found`].join('\n'), 'Action#handler');
 | 
						|
    }
 | 
						|
 | 
						|
    if (request.method === 'get') {
 | 
						|
      return {
 | 
						|
        record: record.toJSON(currentAdmin)
 | 
						|
      };
 | 
						|
    }
 | 
						|
 | 
						|
    const params = _paramConverter.paramConverter.prepareParams(request.payload ?? {}, resource);
 | 
						|
 | 
						|
    const newRecord = await record.update(params);
 | 
						|
    const [populatedRecord] = await (0, _populator.default)([newRecord]); // eslint-disable-next-line no-param-reassign
 | 
						|
 | 
						|
    context.record = populatedRecord;
 | 
						|
 | 
						|
    if (record.isValid()) {
 | 
						|
      var _resource$_decorated;
 | 
						|
 | 
						|
      return {
 | 
						|
        redirectUrl: h.resourceUrl({
 | 
						|
          resourceId: ((_resource$_decorated = resource._decorated) === null || _resource$_decorated === void 0 ? void 0 : _resource$_decorated.id()) || resource.id()
 | 
						|
        }),
 | 
						|
        notice: {
 | 
						|
          message: translateMessage('successfullyUpdated', resource.id()),
 | 
						|
          type: 'success'
 | 
						|
        },
 | 
						|
        record: populatedRecord.toJSON(currentAdmin)
 | 
						|
      };
 | 
						|
    }
 | 
						|
 | 
						|
    const baseMessage = ((_populatedRecord$base = populatedRecord.baseError) === null || _populatedRecord$base === void 0 ? void 0 : _populatedRecord$base.message) || translateMessage('thereWereValidationErrors', resource.id());
 | 
						|
    return {
 | 
						|
      record: populatedRecord.toJSON(currentAdmin),
 | 
						|
      notice: {
 | 
						|
        message: baseMessage,
 | 
						|
        type: 'error'
 | 
						|
      }
 | 
						|
    };
 | 
						|
  }
 | 
						|
};
 | 
						|
exports.EditAction = EditAction;
 | 
						|
var _default = EditAction;
 | 
						|
exports.default = _default; |