From 7a451aa67ca6002544c535f610680bf800ac2368 Mon Sep 17 00:00:00 2001 From: alexbcberio Date: Thu, 6 Jan 2022 02:05:23 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Create=20helpers=20to=20manage=20re?= =?UTF-8?q?wards=20status?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/helpers/twitch.ts | 66 ++++++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 4 deletions(-) diff --git a/src/backend/helpers/twitch.ts b/src/backend/helpers/twitch.ts index d7c811f..e991d1a 100644 --- a/src/backend/helpers/twitch.ts +++ b/src/backend/helpers/twitch.ts @@ -1,15 +1,17 @@ import { AccessToken, RefreshingAuthProvider } from "@twurple/auth"; +import { + ApiClient, + HelixCreateCustomRewardData, + UserIdResolvable +} from "@twurple/api"; import { getTokenData, saveTokenData } from "./tokenData"; -import { ApiClient } from "@twurple/api"; import { ClientCredentials } from "../../interfaces/ClientCredentials"; const LOG_PREFIX = "[Twitch] "; let refreshAuthProvider: RefreshingAuthProvider; -export { getAuthProvider, getApiClient, getUsernameFromId }; - function getClientCredentials(): ClientCredentials { if (!process.env.TWITCH_CLIENT_ID || !process.env.TWITCH_CLIENT_SECRET) { console.error( @@ -59,7 +61,7 @@ async function getApiClient(): Promise { async function getUsernameFromId(userId: number): Promise { const apiClient = await getApiClient(); - const user = await apiClient.helix.users.getUserById(userId); + const user = await apiClient.users.getUserById(userId); if (!user) { return null; @@ -67,3 +69,59 @@ async function getUsernameFromId(userId: number): Promise { return user.displayName; } + +async function createReward( + channel: UserIdResolvable, + data: HelixCreateCustomRewardData +) { + const apiClient = await getApiClient(); + + await apiClient.channelPoints.createCustomReward(channel, data); +} + +async function completeRewards( + channel: UserIdResolvable, + rewardId: string, + redemptionIds: Array | string +) { + if (!Array.isArray(redemptionIds)) { + redemptionIds = [redemptionIds]; + } + + const apiClient = await getApiClient(); + + await apiClient.channelPoints.updateRedemptionStatusByIds( + channel, + rewardId, + redemptionIds, + "FULFILLED" + ); +} + +async function cancelRewards( + channel: UserIdResolvable, + rewardId: string, + redemptionIds: Array | string +) { + if (!Array.isArray(redemptionIds)) { + redemptionIds = [redemptionIds]; + } + + const apiClient = await getApiClient(); + + await apiClient.channelPoints.updateRedemptionStatusByIds( + channel, + rewardId, + redemptionIds, + "CANCELED" + ); +} + +export { + getAuthProvider, + getApiClient, + getUsernameFromId, + completeRewards, + cancelRewards, + createReward +};