@vincentt-sdks/campaign-sdk
Version:
Campaign SDK by Vincentt
308 lines (307 loc) • 13.5 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { libConfig } from '../../config';
import { claimCoupon as claimCouponApi, createNewEntry, createNewFormEntry, createNewUser, createSession as createSessionApi, drawNewCoupon, getAllEntries, getCurrentUser, updateEntry as updateEntryApi, updateUser as updateUserApi, uploadNewImage, } from '../../services';
import { Logger } from '../../utils/logger';
export class CampaignSDK {
static initialize(opts) {
CampaignSDK.instance = new CampaignSDK(opts);
return CampaignSDK.instance;
}
static getInstance() {
if (!CampaignSDK.instance) {
throw new Error('Campaigns SDK not initialized. Please setup campaigns by calling `CampaignSDK.initialize` method first');
}
return CampaignSDK.instance;
}
constructor(options) {
this.options = options;
this.storageKeyPrefix = libConfig.storageKeyPrefix;
const { verbose, logPrefix, apiKey, campaignId } = this.options;
this.apiKey = apiKey;
this.campaignId = campaignId;
this.logger = new Logger({ verbose, prefix: logPrefix });
this.logger.log('Campaign initialized, Campaign ID:', this.options.campaignId);
}
createWebUser() {
return __awaiter(this, void 0, void 0, function* () {
try {
const user = yield createNewUser({
apiKey: this.apiKey,
campaignId: this.campaignId,
type: 'web',
name: 'Web User',
});
this.logger.log('user', user);
localStorage.setItem(`${this.storageKeyPrefix}accessToken`, user.auth.accessToken);
localStorage.setItem(`${this.storageKeyPrefix}refreshToken`, user.auth.refreshToken);
return user;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
createExternalUser(_a) {
return __awaiter(this, arguments, void 0, function* ({ name, type, externalUserId, }) {
try {
const user = yield createNewUser({
apiKey: this.apiKey,
campaignId: this.campaignId,
externalUserId,
type,
name,
});
this.logger.log('user', user);
localStorage.setItem(`${this.storageKeyPrefix}accessToken`, user.auth.accessToken);
localStorage.setItem(`${this.storageKeyPrefix}refreshToken`, user.auth.refreshToken);
return user;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
getUser() {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = localStorage.getItem(`${this.storageKeyPrefix}accessToken`) || '';
const refreshToken = localStorage.getItem(`${this.storageKeyPrefix}refreshToken`) || '';
if (!accessToken || !refreshToken) {
return null;
}
try {
const user = yield getCurrentUser(accessToken, refreshToken, this.apiKey);
this.logger.log('user', user);
return user;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
updateUser(params) {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = localStorage.getItem(`${this.storageKeyPrefix}accessToken`) || '';
const refreshToken = localStorage.getItem(`${this.storageKeyPrefix}refreshToken`) || '';
try {
const user = yield updateUserApi(accessToken, refreshToken, this.apiKey, params);
this.logger.log('user', user);
return user;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
createEntry(params) {
return __awaiter(this, void 0, void 0, function* () {
if (!this.session) {
throw new Error('Session not found. Please create a session before creating an entry');
}
const accessToken = localStorage.getItem(`${this.storageKeyPrefix}accessToken`) || '';
const refreshToken = localStorage.getItem(`${this.storageKeyPrefix}refreshToken`) || '';
try {
const entry = yield createNewEntry(accessToken, refreshToken, this.apiKey, Object.assign(Object.assign({}, params), { sessionId: this.session.id }));
this.logger.log('entry', entry);
return entry;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
fetchEntiesByCurrentUser(params) {
return __awaiter(this, void 0, void 0, function* () {
let fetchPage = params ? params.page : libConfig.defaultPage;
let fetchPageSize = params ? params.pageSize : libConfig.defaultPageSize;
const accessToken = localStorage.getItem(`${this.storageKeyPrefix}accessToken`) || '';
const refreshToken = localStorage.getItem(`${this.storageKeyPrefix}refreshToken`) || '';
try {
const entries = yield getAllEntries(accessToken, refreshToken, this.apiKey, {
page: fetchPage,
pageSize: fetchPageSize,
});
this.logger.log('entries', entries);
return entries;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
updateEntry(params) {
return __awaiter(this, void 0, void 0, function* () {
if (!this.session) {
throw new Error('Session not found. Please create a session before creating an entry');
}
const accessToken = localStorage.getItem(`${this.storageKeyPrefix}accessToken`) || '';
const refreshToken = localStorage.getItem(`${this.storageKeyPrefix}refreshToken`) || '';
try {
const entry = yield updateEntryApi(accessToken, refreshToken, this.apiKey, params.id, Object.assign(Object.assign({}, params), { sessionId: this.session.id }));
this.logger.log('entry', entry);
return entry;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
createFormEntry(params) {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = localStorage.getItem(`${this.storageKeyPrefix}accessToken`) || '';
const refreshToken = localStorage.getItem(`${this.storageKeyPrefix}refreshToken`) || '';
try {
const entry = yield createNewFormEntry(accessToken, refreshToken, this.apiKey, params);
this.logger.log('entry', entry);
return entry;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
uploadImage(params) {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = localStorage.getItem(`${this.storageKeyPrefix}accessToken`) || '';
const refreshToken = localStorage.getItem(`${this.storageKeyPrefix}refreshToken`) || '';
try {
const uploadedImage = yield uploadNewImage(accessToken, refreshToken, this.apiKey, params);
this.logger.log('uploadedImage', uploadedImage);
return uploadedImage;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
drawCoupon() {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = localStorage.getItem(`${this.storageKeyPrefix}accessToken`) || '';
const refreshToken = localStorage.getItem(`${this.storageKeyPrefix}refreshToken`) || '';
try {
const coupon = yield drawNewCoupon(accessToken, refreshToken, this.apiKey, {
campaignId: this.campaignId,
});
this.logger.log('coupon', coupon);
return coupon;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
createSession() {
return __awaiter(this, void 0, void 0, function* () {
const accessToken = localStorage.getItem(`${this.storageKeyPrefix}accessToken`) || '';
const refreshToken = localStorage.getItem(`${this.storageKeyPrefix}refreshToken`) || '';
try {
const session = yield createSessionApi(accessToken, refreshToken, this.apiKey);
this.session = session;
return session;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
claimCoupon(params) {
return __awaiter(this, void 0, void 0, function* () {
var _a;
if (!this.session) {
throw new Error('Session not found. Please create a session before claiming a coupon');
}
const accessToken = localStorage.getItem(`${this.storageKeyPrefix}accessToken`) || '';
const refreshToken = localStorage.getItem(`${this.storageKeyPrefix}refreshToken`) || '';
try {
const result = yield claimCouponApi(accessToken, refreshToken, this.apiKey, Object.assign(Object.assign({}, params), { sessionId: (_a = this.session) === null || _a === void 0 ? void 0 : _a.id }));
this.logger.log('result', result);
return result;
}
catch (err) {
this.logger.error(err);
throw err;
}
});
}
}
/**
* Exposed function for making requests to public api routes
*/
export const createWebUser = () => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const user = yield campaign.createWebUser();
return user;
});
export const createExternalUser = (params) => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const user = yield campaign.createExternalUser(params);
return user;
});
export const getUser = () => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const user = yield campaign.getUser();
return user;
});
export const updateUser = (params) => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const user = yield campaign.updateUser(params);
return user;
});
export const createEntry = (params) => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const entry = yield campaign.createEntry(params);
return entry;
});
export const updateEntry = (params) => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const entry = yield campaign.updateEntry(params);
return entry;
});
export const fetchEntriesByCurrentUser = (params) => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const entries = yield campaign.fetchEntiesByCurrentUser(params);
return entries;
});
export const createFormEntry = (params) => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const entry = yield campaign.createFormEntry(params);
return entry;
});
export const uploadImage = (params) => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const uploadedImage = yield campaign.uploadImage(params);
return uploadedImage;
});
export const drawCoupon = () => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const entry = yield campaign.drawCoupon();
return entry;
});
export const createSession = () => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const session = yield campaign.createSession();
return session;
});
export const claimCoupon = (params) => __awaiter(void 0, void 0, void 0, function* () {
const campaign = CampaignSDK.getInstance();
const result = yield campaign.claimCoupon(params);
return result;
});