UNPKG

guilded.ts

Version:

A powerful NPM module that allows you to easily interact with the Guilded API.

95 lines 3.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ListItemManager = void 0; const BaseManager_1 = require("./BaseManager"); const ListItem_1 = require("../structures/listItem/ListItem"); const collection_1 = require("@discordjs/collection"); /** * The manager of items that belong to a list channel. * @example new ListItemManager(channel); */ class ListItemManager extends BaseManager_1.BaseManager { channel; /** @param channel The list channel the items belong to. */ constructor(channel) { super(channel.client, channel.client.options.maxListItemCache); this.channel = channel; } fetch(arg1, arg2) { if (typeof arg1 === 'string' || arg1 instanceof ListItem_1.ListItem) return this.fetchSingle(arg1, arg2); return this.fetchMany(arg1); } /** @ignore */ async fetchSingle(listItem, options) { listItem = listItem instanceof ListItem_1.ListItem ? listItem.id : listItem; const cached = this.cache.get(listItem); if (cached && !options?.force) return cached; const raw = await this.client.api.listItems.fetch(this.channel.id, listItem); return new ListItem_1.ListItem(this.channel, raw, options?.cache); } /** @ignore */ async fetchMany(options) { const raw = await this.client.api.listItems.fetch(this.channel.id); const items = new collection_1.Collection(); for (const data of raw) { const item = new ListItem_1.ListItem(this.channel, data, options?.cache); items.set(item.id, item); } return items; } /** * Add a item to the list channel. * @param message The message of the item. * @param note The note of the item. * @returns The added item. * @example items.add('Hello World!'); */ async add(message, note) { const raw = await this.client.api.listItems.create(this.channel.id, message, note); return new ListItem_1.ListItem(this.channel, raw); } /** * Edit a item in the list channel. * @param listItem The item to edit. * @param message The message of the item. * @param note The note of the item. * @returns The edited item. * @example items.edit(item, 'Hello World!'); */ async edit(listItem, message, note) { listItem = listItem instanceof ListItem_1.ListItem ? listItem.id : listItem; const raw = await this.client.api.listItems.edit(this.channel.id, listItem, message, note); return new ListItem_1.ListItem(this.channel, raw); } /** * Remove a item in the list channel. * @param listItem The item to remove. * @example items.remove(item); */ remove(listItem) { listItem = listItem instanceof ListItem_1.ListItem ? listItem.id : listItem; return this.client.api.listItems.delete(this.channel.id, listItem); } /** * Complete a item in the list channel. * @param listItem The item to complete. * @example items.complete(item); */ complete(listItem) { listItem = listItem instanceof ListItem_1.ListItem ? listItem.id : listItem; return this.client.api.listItems.complete(this.channel.id, listItem); } /** * Uncomplete a item in the list channel. * @param listItem The item to uncomplete. * @example items.uncomplete(item); */ uncomplete(listItem) { listItem = listItem instanceof ListItem_1.ListItem ? listItem.id : listItem; return this.client.api.listItems.uncomplete(this.channel.id, listItem); } } exports.ListItemManager = ListItemManager; //# sourceMappingURL=ListItemManager.js.map