Promise based gamification client for the browser and react native
Gamification client is simple library to minimize the complexity on front-end side
let gamification = require("gamification-boksy-lib");
let user = "boksy"; // userId
let BASE_URL = "http://example.com/api/Stage"; // userId
gamification.init(user,BASE_URL)
Events are predefined into constant so you can easily reuse them
gamification.sendEvent(gamification.EVENTS.INFO).then(res => {
console.log("res",res);
})
// or using await
let res = await gamification.sendEvent(gamification.EVENTS.INFO);
Events are predefined into constant so you can easily reuse them
readingSession {
timeSpend : seconds,
progress : %,
bookId : string,
userId : string
}
gamification.sendEbookSession(readingSession).then(res => {
console.log("res",res);
})
gamification.sendAudioBookSession(readingSession).then(res => {
console.log("res",res);
})
gamification.sendEbookFinished({userId,coins,bookId}).then(res => {
console.log("res",res);
})
// or using await
let res = await gamification.sendEvent(gamification.EVENTS.INFO);
data: {
userId: 'boksy',
level: '4',
points: 500,
achievements: [],
avatars: [],
trophies: [],
coins: 100
}
TEST
INFO // this is getting user info
READ_EBOOK
START_READING
CHANGED_AVATAR
EBOOK_5_MIN:
EBOOK_COMPLETE
AUDIOBOOK_5_MIN
AUDIOBOOK_COMPLETE
KNOWLEDGE_QUIZ_COMPLETE
FACTS_QUIZ_COMPLETE
This is promise based library so you can handle error like simple promise
gamification.sendEvent(gamification.EVENTS.INFO).then(res => {
console.log("res",res);
}).catch(err => throw err);
If you don't have multiple users at the same time and you don't want to do
init every time, you can crete gamificationSingleton.js file with this content
let gamification = require("gamification-boksy-lib");
let user = "boksy"; // your user id
gamification.init(user)
module.exports = gamification;
And then when you want to use it
let gamification= require("./gamificationSingleton");
gamification.sendEvent(gamification.EVENTS.INFO).then(res => {
console.log("res",res);
})
If your environment doesn't support ES6 Promises, you can polyfill.
ICS