Skip to content

Commit

Permalink
feat: move logic to EntitlementManager
Browse files Browse the repository at this point in the history
  • Loading branch information
almeidx committed May 1, 2024
1 parent 0de148d commit bb623d3
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 2 deletions.
13 changes: 13 additions & 0 deletions packages/discord.js/src/managers/EntitlementManager.js
Expand Up @@ -124,6 +124,19 @@ class EntitlementManager extends CachedManager {

await this.client.rest.delete(Routes.entitlement(this.client.application.id, resolved));
}

/**
* Marks an entitlement as consumed
* <info>Only available for One-Time Purchase consumable SKUs.</info>
* @param {EntitlementResolvable} entitlement The entitlement to consume
* @returns {Promise<void>}
*/
async consume(entitlement) {
const resolved = this.resolveId(entitlement);
if (!resolved) throw new DiscordjsTypeError(ErrorCodes.InvalidType, 'entitlement', 'EntitlementResolvable');

await this.client.rest.post(Routes.consumeEntitlement(this.client.application.id, resolved));
}
}

exports.EntitlementManager = EntitlementManager;
3 changes: 1 addition & 2 deletions packages/discord.js/src/structures/Entitlement.js
@@ -1,6 +1,5 @@
'use strict';

const { Routes } = require('discord-api-types/v10');
const Base = require('./Base');

/**
Expand Down Expand Up @@ -177,7 +176,7 @@ class Entitlement extends Base {
* @returns {Promise<void>}
*/
async consume() {
await this.client.rest.post(Routes.consumeEntitlement(this.applicationId, this.id));
await this.client.application.entitlements.consume(this);
}
}

Expand Down
1 change: 1 addition & 0 deletions packages/discord.js/typings/index.d.ts
Expand Up @@ -4143,6 +4143,7 @@ export class EntitlementManager extends CachedManager<Snowflake, Entitlement, En
public fetch(options?: FetchEntitlementsOptions): Promise<Collection<Snowflake, Entitlement>>;
public createTest(options: GuildEntitlementCreateOptions | UserEntitlementCreateOptions): Promise<Entitlement>;
public deleteTest(entitlement: EntitlementResolvable): Promise<void>;
public consume(entitlement: EntitlementResolvable): Promise<void>;
}

export interface FetchGuildApplicationCommandFetchOptions extends Omit<FetchApplicationCommandOptions, 'guildId'> {}
Expand Down
2 changes: 2 additions & 0 deletions packages/discord.js/typings/index.test-d.ts
Expand Up @@ -2494,6 +2494,8 @@ declare const sku: SKU;

await application.entitlements.deleteTest(entitlement);

await application.entitlements.consume(entitlement);

expectType<boolean>(entitlement.isActive());

if (entitlement.isUserSubscription()) {
Expand Down

0 comments on commit bb623d3

Please sign in to comment.