strapi-plugin-prev-next-button
Version:
Prev/Next buttons in Edit view
37 lines (36 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../utils");
exports.default = ({ strapi }) => ({
async getPrevNextItems(uid, id) {
var _a, _b, _c;
const { findConfiguration } = strapi.plugin('content-manager').service('content-types');
const { settings } = await findConfiguration(strapi.contentType(uid));
const { mainField, defaultSortBy, defaultSortOrder } = settings;
const currentEntry = await ((_a = strapi.entityService) === null || _a === void 0 ? void 0 : _a.findOne(uid, id, { fields: [defaultSortBy] }));
if (currentEntry) {
const sortByValue = currentEntry[defaultSortBy];
const fields = ['id', mainField];
const isAsc = defaultSortOrder.toLowerCase() === 'asc';
const [descLessThan, ascGreaterThan] = await Promise.all([
(_b = strapi.entityService) === null || _b === void 0 ? void 0 : _b.findMany(uid, {
fields,
filters: { [defaultSortBy]: { $lt: sortByValue } },
sort: { [defaultSortBy]: 'desc' },
limit: 1,
}),
(_c = strapi.entityService) === null || _c === void 0 ? void 0 : _c.findMany(uid, {
fields,
filters: { [defaultSortBy]: { $gt: sortByValue } },
sort: { [defaultSortBy]: 'asc' },
limit: 1,
}),
]);
return {
prev: (0, utils_1.transformEntry)(isAsc ? descLessThan : ascGreaterThan, mainField),
next: (0, utils_1.transformEntry)(isAsc ? ascGreaterThan : descLessThan, mainField),
};
}
return { prev: null, next: null };
},
});