fdgt-apis/api

View on GitHub
src/data-mocks/resubscription.js

Summary

Maintainability
A
3 hrs
Test Coverage
F
45%
// Local imports
import { DOLLARBUCK_CORRELATIONS } from 'data/DOLLARBUCK_CORRELATIONS'
import { incrementStat } from 'helpers/updateStat'





// Local constants
const { HOST } = process.env





export const defaults = {
    months: 3,
    prime: false,
    tier: 1,
}

/**
 * `resubscription` events are fired when a when a user continues their existing, non-gifted subscription.
 *
 * @alias `resubscription`
 *
 * @param {string} color - The color of the user's name in chat.
 * @param {string} messageid - The ID of the message.
 * @param {number} months=3 The number of months the user has been subscribed to the channel.
 * @param {boolean} prime=false Whether this is a Prime subscription.
 * @param {number} tier=1 - The tier of the subscription being extended.
 * @param {string} timestamp - The millisecond timestamp when the message was sent.
 * @param {string} userid - The ID of the user sending the message.
 * @param {string} username - The username of the user sending the message.
 *
 * @example @lang off <caption>Fires a `resubscription` event</caption>
 * resubscription
 *
 * @example @lang off <caption>Simulates a Prime `resubscription` event</caption>
 * resubscription --prime
 *
 * @example @lang off <caption>Simulates a Tier 3 `resubscription` event</caption>
 * resubscription --tier 3
 */
export const render = (args = {}) => {
    const {
        channel,
        channelid,
        color,
        messageid,
        months,
        prime,
        tier,
        timestamp,
        userid,
        username,
    } = {
        ...defaults,
        ...args,
    }

    const plan = prime ? 'Prime' : (1000 * tier)
    const planName = prime ? 'Prime' : `Tier ${tier}`

    incrementStat('events/resub')
    incrementStat('dollarbucksSaved', DOLLARBUCK_CORRELATIONS['subscription'][tier])

    return {
        'badge-info': [
            `subscriber/${months}`,
            'premium/1'
        ],
        badges: [
            `subscriber/${months}`,
            'premium/1'
        ],
        color: color,
        'display-name': username,
        emotes: null,
        flags: null,
        id: messageid,
        login: username,
        mod: 0,
        'msg-id': 'resub',
        'msg-param-cumulative-months': months,
        'msg-param-months': 0,
        'msg-param-should-share-streak': 0,
        'msg-param-sub-plan-name': planName,
        'msg-param-sub-plan': plan,
        'room-id': channelid,
        subscriber: 1,
        'system-msg': `${username} subscribed at ${planName}. They've subscribed for ${months} months!`,
        'tmi-sent-ts': timestamp,
        'user-id': userid,
        'user-type': null,
        message: `${HOST} USERNOTICE #${channel}`,
    }
}