UNPKG

twitch-graphql

Version:
94 lines (84 loc) 3.16 kB
import { createModule, gql } from 'graphql-modules' import { getLatestSub } from '../subscriptions/GetLatestSub' import { ApiClient } from 'twitch' import { getSubs } from '../subscriptions/GetSubs' import { getCurrentSubCount } from '../subscriptions/SubCount' import { getRandomSub } from '../subscriptions/GetRandomSub' import RefreshToken from '../helpers/RefreshToken' export const SubscriberResolvers = { Query: { async latestSub( _parent: {}, args: {}, { user_id, secret, refresh_token }: GraphQLModules.ModuleContext ) { const authProvider = await RefreshToken(user_id, secret, refresh_token) const twitchClient = new ApiClient({ authProvider, preAuth: true }) const myId = (await twitchClient.getTokenInfo()).userId return await getLatestSub(myId, twitchClient) }, async randomSub( _parent: {}, args: {}, { user_id, secret, refresh_token }: Partial<GraphQLModules.ModuleContext> ) { const authProvider = await RefreshToken(user_id, secret, refresh_token) const twitchClient = new ApiClient({ authProvider, preAuth: true }) const myId = (await twitchClient.getTokenInfo()).userId return await getRandomSub(myId, twitchClient) }, async allSubs( _parent: {}, args: {}, { user_id, secret, refresh_token }: Partial<GraphQLModules.ModuleContext> ) { const authProvider = await RefreshToken(user_id, secret, refresh_token) const twitchClient = new ApiClient({ authProvider, preAuth: true }) const myId = (await twitchClient.getTokenInfo()).userId return await getSubs(myId, twitchClient) }, async subCount( _parent: {}, args: {}, { user_id, secret, refresh_token }: Partial<GraphQLModules.ModuleContext> ) { const authProvider = await RefreshToken(user_id, secret, refresh_token) const twitchClient = new ApiClient({ authProvider, preAuth: true }) const myId = (await twitchClient.getTokenInfo()).userId return await getCurrentSubCount(myId, twitchClient) }, async getSubscriberByDisplayName( _parent: {}, args: { displayName: string }, { user_id, secret, refresh_token }: Partial<GraphQLModules.ModuleContext> ) { const authProvider = await RefreshToken(user_id, secret, refresh_token) const twitchClient = new ApiClient({ authProvider, preAuth: true }) const myId = (await twitchClient.getTokenInfo()).userId const allSubs = await getSubs(myId, twitchClient) return allSubs.find((sub) => sub.userDisplayName === args?.displayName) }, }, } export const SubscriberSchema = gql` extend type Query { latestSub: Subscriber! randomSub: Subscriber! allSubs: [Subscriber]! subCount: Int! getSubscriberByDisplayName(displayName: String!): Subscriber } type Subscriber { cumulativeMonths: Int! tier: Int! userDisplayName: String! userId: String! isGift: Boolean! } ` export const SubscriberModule = createModule({ id: `subscriber-module`, dirname: __dirname, typeDefs: SubscriberSchema, resolvers: SubscriberResolvers, })