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
"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; |