Created
December 14, 2020 05:20
-
-
Save steven4354/42b0e10ec6785cb7e22229ce05b46eec to your computer and use it in GitHub Desktop.
Refmonkey JS functions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { setCookie, getCookie, getRef } from './refHandler' | |
import { postRequest, getRequest } from './request' | |
export default class RefMonkey { | |
static client(token) { | |
const refCode = getRef() | |
if (refCode) { | |
setCookie('ref', refCode, 60) | |
//register as link click | |
postRequest(token, `/click?ref_code=${refCode}`) | |
} | |
return getClient(token) | |
} | |
} | |
//TODO HANDLE USE CASES WHERE AN ERROR OCCURS OR THE SERVER RETURNS AN ERROR | |
//todo get a referrals data | |
//todo get an advocates data | |
function getClient(accessToken) { | |
/** | |
* add a referral to an advocate | |
* | |
* //todo automatically detect the refcode | |
* //todo figure out how to get the referral | |
* //probably when refmonkey gets init you store the ref in a cookie,as well as the accesstoken so that refmonkey should only be initiated in the entry file | |
* @param {*} identifier | |
* @param {*} refCode | |
*/ | |
async function advocate(identifier) { | |
return await postRequest(accessToken, `/advocate?identifier=${identifier}`) | |
} | |
async function user(identifier, name) { | |
let refCode | |
if (getRef()) { | |
refCode = getRef() | |
} else { | |
refCode = getCookie('ref') | |
} | |
if (refCode) { | |
return await postRequest(accessToken, `/user?identifier=${identifier}&ref_code=${refCode}&name=${name}`) | |
} else { | |
return { success: false } | |
} | |
} | |
async function purchase(identifier, price, advocateReward, disableMultipleRewards = false) { | |
let refCode | |
if (getRef()) { | |
refCode = getRef() | |
} else { | |
refCode = getCookie('ref') | |
} | |
const advocateRewardParams = advocateReward ? `&advocate_reward=${advocateReward}` : '' | |
const refCodeParams = refCode ? `&ref_code=${refCode}` : '' | |
const disableMultipleRewardsParams = refCode ? `&disable_multiple_rewards=${disableMultipleRewards}` : '' | |
const priceValue = `&price=${price}` | |
let priceParams = price ? priceValue : '' | |
if (price === 0) { | |
priceParams = priceValue | |
} | |
return await postRequest(accessToken, `/purchase?identifier=${identifier}${advocateRewardParams}${priceParams}${refCodeParams}${disableMultipleRewardsParams}`) | |
} | |
async function reversePurchase(identifier) { | |
let refCode | |
if (getRef()) { | |
refCode = getRef() | |
} else { | |
refCode = getCookie('ref') | |
} | |
return await postRequest(accessToken, `/purchase/reverse?identifier=${identifier}`) | |
} | |
async function redeemReward(identifier, type) { | |
if (type === 'advocate') { | |
return await rewardAdvocate(identifier) | |
} else { | |
return await rewardReferral(identifier) | |
} | |
} | |
async function rewardAdvocate(identifier) { | |
return await postRequest(accessToken, `/reward/advocate?identifier=${identifier}`) | |
} | |
async function rewardReferral(identifier) { | |
return await postRequest(accessToken, `/reward/referral?identifier=${identifier}`) | |
} | |
/** | |
* get the referrals of an advocate | |
* | |
* @param {*} identifier | |
* @param {*} callback | |
* | |
*/ | |
async function getReferrals(identifier, callback) { | |
const response = await getRequest(accessToken, `/referral/list?identifier=${identifier}`) | |
if (callback) { | |
callback(response.success, response.referrals) | |
} | |
return response | |
} | |
async function getPendingRewards(type, identifier, callback) { | |
const response = await getRequest(accessToken, `/reward/pending?type=${type}&identifier=${identifier}`) | |
if (callback) { | |
callback(response.success, response.pendingRewards) | |
} | |
return response | |
} | |
/** | |
* | |
* get the referral code of an advocate | |
* @param {*} identifier | |
* @param {*} callback | |
* | |
*/ | |
async function getRefCode(identifier, callback) { | |
const response = await getRequest(accessToken, `/advocate/code?identifier=${identifier}`) | |
if (callback) { | |
callback(response.success, response.data) | |
} | |
return response | |
} | |
/** | |
* | |
* get the email of an advocate | |
* @param {*} identifier | |
* @param {*} callback | |
* | |
*/ | |
async function getAdvocateEmail(identifier, callback) { | |
const response = await getRequest(accessToken, `/advocate-email?identifier=${identifier}`) | |
if (callback) { | |
callback(response.success, response.data) | |
} | |
return response | |
} | |
/** | |
* | |
* get the referral link of an advocate | |
* @param {*} identifier | |
* @param {*} url | |
* @param {*} callback | |
* | |
*/ | |
async function getUrlFor(identifier, callback) { | |
const response = await getRequest(accessToken, `/advocate/code?identifier=${identifier}`) | |
if (callback) { | |
callback(response.success, response.data) | |
} | |
return response | |
} | |
return { | |
user, | |
getReferrals, | |
getRefCode, | |
getUrlFor, | |
purchase, | |
redeemReward, | |
getPendingRewards, | |
reversePurchase, | |
getAdvocateEmail, | |
advocate | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment