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.
		
		
		
		
		
			
		
			
				
					89 lines
				
				2.5 KiB
			
		
		
			
		
	
	
					89 lines
				
				2.5 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.default = exports.DeleteAction = void 0; | ||
|  | 
 | ||
|  | var _notFoundError = _interopRequireDefault(require("../../utils/errors/not-found-error")); | ||
|  | 
 | ||
|  | var _validationError = _interopRequireDefault(require("../../utils/errors/validation-error")); | ||
|  | 
 | ||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|  | 
 | ||
|  | /** | ||
|  |  * @implements Action | ||
|  |  * @category Actions | ||
|  |  * @module DeleteAction | ||
|  |  * @description | ||
|  |  * Removes given record from the database. Since it doesn't have a | ||
|  |  * component - it redirects right away after clicking its {@link ActionButton} | ||
|  |  * @private | ||
|  |  */ | ||
|  | const DeleteAction = { | ||
|  |   name: 'delete', | ||
|  |   isVisible: true, | ||
|  |   actionType: 'record', | ||
|  |   icon: 'TrashCan', | ||
|  |   guard: 'confirmDelete', | ||
|  |   component: false, | ||
|  |   variant: 'danger', | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Responsible for deleting existing record. | ||
|  |    * | ||
|  |    * To invoke this action use {@link ApiClient#recordAction} | ||
|  |    * | ||
|  |    * @return  {Promise<RecordActionResponse>} | ||
|  |    * @implements ActionHandler | ||
|  |    * @memberof module:DeleteAction | ||
|  |    */ | ||
|  |   handler: async (request, response, data) => { | ||
|  |     var _resource$_decorated; | ||
|  | 
 | ||
|  |     const { | ||
|  |       record, | ||
|  |       resource, | ||
|  |       currentAdmin, | ||
|  |       h, | ||
|  |       translateMessage | ||
|  |     } = data; | ||
|  | 
 | ||
|  |     if (!request.params.recordId || !record) { | ||
|  |       throw new _notFoundError.default(['You have to pass "recordId" to Delete Action'].join('\n'), 'Action#handler'); | ||
|  |     } | ||
|  | 
 | ||
|  |     try { | ||
|  |       await resource.delete(request.params.recordId); | ||
|  |     } catch (error) { | ||
|  |       if (error instanceof _validationError.default) { | ||
|  |         var _error$baseError; | ||
|  | 
 | ||
|  |         const baseMessage = ((_error$baseError = error.baseError) === null || _error$baseError === void 0 ? void 0 : _error$baseError.message) || translateMessage('thereWereValidationErrors', resource.id()); | ||
|  |         return { | ||
|  |           record: record.toJSON(currentAdmin), | ||
|  |           notice: { | ||
|  |             message: baseMessage, | ||
|  |             type: 'error' | ||
|  |           } | ||
|  |         }; | ||
|  |       } | ||
|  | 
 | ||
|  |       throw error; | ||
|  |     } | ||
|  | 
 | ||
|  |     return { | ||
|  |       record: record.toJSON(currentAdmin), | ||
|  |       redirectUrl: h.resourceUrl({ | ||
|  |         resourceId: ((_resource$_decorated = resource._decorated) === null || _resource$_decorated === void 0 ? void 0 : _resource$_decorated.id()) || resource.id() | ||
|  |       }), | ||
|  |       notice: { | ||
|  |         message: translateMessage('successfullyDeleted', resource.id()), | ||
|  |         type: 'success' | ||
|  |       } | ||
|  |     }; | ||
|  |   } | ||
|  | }; | ||
|  | exports.DeleteAction = DeleteAction; | ||
|  | var _default = DeleteAction; | ||
|  | exports.default = _default; |