UNPKG

@vincentt-sdks/campaign-sdk

Version:

Campaign SDK by Vincentt

308 lines (307 loc) 13.5 kB
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; });