@necord/pagination
Version:
A lightweight Pagination module for Necord
122 lines (121 loc) • 6.71 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.NecordPaginationController = void 0;
const common_1 = require("@nestjs/common");
const necord_pagination_service_1 = require("./necord-pagination.service");
const necord_1 = require("necord");
const exceptions_1 = require("./exceptions");
const discord_js_1 = require("discord.js");
const necord_pagination_module_definition_1 = require("./necord-pagination.module-definition");
let NecordPaginationController = class NecordPaginationController {
constructor(paginationService, options) {
this.paginationService = paginationService;
this.options = options;
}
onTraversal(_a, name_1) {
return __awaiter(this, arguments, void 0, function* ([interaction], name) {
var _b, _c;
const pageBuilder = this.paginationService.get(name);
const modalOptions = Object.assign({
title: 'Traversal',
label: `Page (1 - ${pageBuilder.maxPages})`,
placeholder: 'Enter page number'
}, (_c = (_b = this.options) === null || _b === void 0 ? void 0 : _b.modal) !== null && _c !== void 0 ? _c : {});
if (!pageBuilder)
throw new exceptions_1.PaginationNotFoundException();
if (!(yield pageBuilder.filter(interaction)))
throw new exceptions_1.PaginationForbiddenException('You are not allowed to use this button');
const pageInput = new discord_js_1.TextInputBuilder()
.setLabel(modalOptions.label)
.setCustomId('page')
.setPlaceholder(modalOptions.placeholder)
.setMinLength(1)
.setMaxLength(String(pageBuilder.maxPages).length)
.setStyle(discord_js_1.TextInputStyle.Short)
.setRequired(true);
const row = new discord_js_1.ActionRowBuilder().addComponents(pageInput);
const modal = new discord_js_1.ModalBuilder()
.setCustomId(`necord-pagination-modal/${name}`)
.setTitle(modalOptions.title)
.setComponents(row);
return interaction.showModal(modal);
});
}
onNextPage(_a, name_1, page_1) {
return __awaiter(this, arguments, void 0, function* ([interaction], name, page) {
const pageBuilder = this.paginationService.get(name);
if (!pageBuilder)
throw new exceptions_1.PaginationNotFoundException();
if (!(yield pageBuilder.filter(interaction)))
throw new exceptions_1.PaginationForbiddenException('You are not allowed to use this button');
const pageOptions = yield pageBuilder.build(+page);
return interaction.update(pageOptions);
});
}
onTraversalModal(_a, name_1) {
return __awaiter(this, arguments, void 0, function* ([interaction], name) {
const pageBuilder = this.paginationService.get(name);
const page = +interaction.fields.getTextInputValue('page');
if (!interaction.isFromMessage())
return;
if (!pageBuilder)
throw new exceptions_1.PaginationNotFoundException();
if (!(yield pageBuilder.filter(interaction)))
throw new exceptions_1.PaginationForbiddenException('You are not allowed to use this button');
const pageOptions = yield pageBuilder.build(page);
return interaction.update(pageOptions);
});
}
};
exports.NecordPaginationController = NecordPaginationController;
__decorate([
(0, necord_1.Button)('necord-pagination/:name/traversal'),
__param(0, (0, necord_1.Context)()),
__param(1, (0, necord_1.ComponentParam)('name')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Array, String]),
__metadata("design:returntype", Promise)
], NecordPaginationController.prototype, "onTraversal", null);
__decorate([
(0, necord_1.Button)('necord-pagination/:name/:page'),
__param(0, (0, necord_1.Context)()),
__param(1, (0, necord_1.ComponentParam)('name')),
__param(2, (0, necord_1.ComponentParam)('page')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Array, String, String]),
__metadata("design:returntype", Promise)
], NecordPaginationController.prototype, "onNextPage", null);
__decorate([
(0, necord_1.Modal)('necord-pagination-modal/:name'),
__param(0, (0, necord_1.Context)()),
__param(1, (0, necord_1.ModalParam)('name')),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Array, String]),
__metadata("design:returntype", Promise)
], NecordPaginationController.prototype, "onTraversalModal", null);
exports.NecordPaginationController = NecordPaginationController = __decorate([
(0, common_1.Injectable)(),
__param(1, (0, common_1.Inject)(necord_pagination_module_definition_1.MODULE_OPTIONS_TOKEN)),
__metadata("design:paramtypes", [necord_pagination_service_1.NecordPaginationService, Object])
], NecordPaginationController);