@parcl-finance/product-sdk
Version:
TypeScript SDK for interacting with Parcl's product APIs
125 lines • 4.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Points = void 0;
const utils_1 = require("./utils");
const httpClient_1 = require("./httpClient");
class Points {
baseUrl;
headers;
client;
constructor(baseUrl, accessToken) {
const headers = {};
if (accessToken !== undefined) {
headers["Authorization"] = "Bearer " + accessToken;
}
this.headers = headers;
this.baseUrl = baseUrl.concat("/points");
this.client = new httpClient_1.HttpClient(this.baseUrl, this.headers);
}
async getLeaderboard(refresh) {
const { leaderboard, count, lastUpdatedAt } = await this.client.get({
path: "/leaderboard",
params: { refresh },
});
return { leaderboard: (0, utils_1.formatPointsLeaderboard)(leaderboard), count, lastUpdatedAt };
}
async getLeaderboardWithUserInfo(user, refresh) {
const { info } = await this.client.get({
path: `/leaderboard/user/${user}`,
params: {
refresh,
},
});
return {
leaderboard: (0, utils_1.formatPointsLeaderboard)(info.leaderboard),
userRow: (0, utils_1.formatPointsLeaderboardPosition)(info.userRow),
surroundingCtx: {
aboveRow: info.surroundingCtx.aboveRow === null || info.surroundingCtx.aboveRow === undefined
? undefined
: (0, utils_1.formatPointsLeaderboardPosition)(info.surroundingCtx.aboveRow),
belowRow: info.surroundingCtx.belowRow === null || info.surroundingCtx.belowRow === undefined
? undefined
: (0, utils_1.formatPointsLeaderboardPosition)(info.surroundingCtx.belowRow),
},
count: info.count,
lastUpdatedAt: info.lastUpdatedAt,
};
}
async getUserPointsBalances(user) {
const { balances } = await this.client.get({
path: "/balances",
params: {
user,
},
});
return balances;
}
async getUserPointsBalance(user) {
const { balance } = await this.client.get({
path: "/balance",
params: {
user,
},
});
return balance;
}
async isRegistered({ user, isForPerpetualPoints }) {
const { isParticipating } = await this.client.get({
path: "/participate",
params: {
user,
isForPerpetualPoints,
},
});
return isParticipating;
}
async register({ user, isForPerpetualPoints }, accessToken) {
const { isParticipating } = await this.client.post({
path: "/participate",
params: { user, isForPerpetualPoints },
accessToken,
});
return isParticipating;
}
async generateReferralCode(user, referralCode, accessToken) {
if (referralCode.length > 20) {
throw new Error("The referral code cannot be longer than 20 characters");
}
const { referralsUser } = await this.client.post({
path: "referrals/generate-code",
params: { user },
body: { referralCode },
accessToken,
});
return (0, utils_1.formatReferralsUser)(referralsUser);
}
async useReferralCode(user, referralCode, accessToken) {
if (referralCode.length > 20) {
throw new Error("Referral codes cannot be longer than 20 characters");
}
const { referralsUser } = await this.client.post({
path: "referrals/use-code",
params: { user },
body: { referralCode },
accessToken,
});
return (0, utils_1.formatReferralsUser)(referralsUser);
}
async getReferralsUserInfo(user, accessToken) {
const { referralsUser } = await this.client.get({
path: "referrals/user-info",
params: { user },
accessToken,
});
return (0, utils_1.formatReferralsUserUi)(referralsUser);
}
async getUserReferredByCode(user) {
const { code } = await this.client.get({
path: "referrals/user-referred-by",
params: { user },
});
return code ?? undefined;
}
}
exports.Points = Points;
//# sourceMappingURL=points.js.map