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.
		
		
		
		
		
			
		
			
				
					80 lines
				
				2.2 KiB
			
		
		
			
		
	
	
					80 lines
				
				2.2 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.default = exports.BulkDeleteAction = void 0; | ||
|  | 
 | ||
|  | var _notFoundError = _interopRequireDefault(require("../../utils/errors/not-found-error")); | ||
|  | 
 | ||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|  | 
 | ||
|  | /** | ||
|  |  * @implements Action | ||
|  |  * @category Actions | ||
|  |  * @module BulkDeleteAction | ||
|  |  * @description | ||
|  |  * Removes given records from the database. | ||
|  |  * @private | ||
|  |  */ | ||
|  | const BulkDeleteAction = { | ||
|  |   name: 'bulkDelete', | ||
|  |   isVisible: true, | ||
|  |   actionType: 'bulk', | ||
|  |   icon: 'Delete', | ||
|  |   showInDrawer: true, | ||
|  |   variant: 'danger', | ||
|  | 
 | ||
|  |   /** | ||
|  |    * Responsible for deleting existing records. | ||
|  |    * | ||
|  |    * To invoke this action use {@link ApiClient#bulkAction} | ||
|  |    * with {actionName: _bulkDelete_} | ||
|  |    * | ||
|  |    * @return  {Promise<BulkActionResponse>} | ||
|  |    * @implements ActionHandler | ||
|  |    * @memberof module:BulkDeleteAction | ||
|  |    */ | ||
|  |   handler: async (request, response, context) => { | ||
|  |     const { | ||
|  |       records, | ||
|  |       resource, | ||
|  |       h, | ||
|  |       translateMessage | ||
|  |     } = context; | ||
|  | 
 | ||
|  |     if (!records || !records.length) { | ||
|  |       throw new _notFoundError.default('no records were selected.', 'Action#handler'); | ||
|  |     } | ||
|  | 
 | ||
|  |     if (request.method === 'get') { | ||
|  |       const recordsInJSON = records.map(record => record.toJSON(context.currentAdmin)); | ||
|  |       return { | ||
|  |         records: recordsInJSON | ||
|  |       }; | ||
|  |     } | ||
|  | 
 | ||
|  |     if (request.method === 'post') { | ||
|  |       var _resource$_decorated; | ||
|  | 
 | ||
|  |       await Promise.all(records.map(record => resource.delete(record.id()))); | ||
|  |       return { | ||
|  |         records: records.map(record => record.toJSON(context.currentAdmin)), | ||
|  |         notice: { | ||
|  |           message: translateMessage(records.length > 1 ? 'successfullyBulkDeleted_plural' : 'successfullyBulkDeleted', resource.id(), { | ||
|  |             count: records.length | ||
|  |           }), | ||
|  |           type: 'success' | ||
|  |         }, | ||
|  |         redirectUrl: h.resourceUrl({ | ||
|  |           resourceId: ((_resource$_decorated = resource._decorated) === null || _resource$_decorated === void 0 ? void 0 : _resource$_decorated.id()) || resource.id() | ||
|  |         }) | ||
|  |       }; | ||
|  |     } | ||
|  | 
 | ||
|  |     throw new Error('method should be either "post" or "get"'); | ||
|  |   } | ||
|  | }; | ||
|  | exports.BulkDeleteAction = BulkDeleteAction; | ||
|  | var _default = BulkDeleteAction; | ||
|  | exports.default = _default; |