inbrain-surveys
Version:
In-App monetization via surveys, powered by inBrain.ai.
187 lines • 7.17 kB
JavaScript
import { Platform, NativeModules, NativeEventEmitter, } from 'react-native';
import { assertIsColor, assertNotNullNorEmpty, wrapPromise } from './Utils';
import { mapRewards, mapSurveys } from './MappingUtils';
import { InBrainWallOption, } from './Models';
var InBrainSurveys = NativeModules.InBrainSurveys;
var inbrainEmitter = new NativeEventEmitter(InBrainSurveys);
// ----------------------- Setup InBrain -------------------------------
/**
* Initial inBrain SDK configuration.
* @param apiClientId The client ID provided in inBrain.ai dashboard
* @param apiSecret The client secret provided in inBrain.ai dashboard
* @param userId: The string value that uniquely identifies each user within your application. Can be provided later, using `setUserID` method
*/
var setInBrain = function (apiClientId, apiSecret, userId) {
validateClientData(apiClientId, apiSecret);
InBrainSurveys.setInBrain(apiClientId, apiSecret);
InBrainSurveys.setUserID(userId);
};
/**
* Set uniq identifier of user within your application. If value not set (or empty) - `deviceId` will be used
* @param userID The string value that uniquely identifies each user within your application
*/
var setUserID = function (userID) {
return InBrainSurveys.setUserID(userID);
};
/**
* Set the value to track user session. This value is provided via S2S Callbacks as SessionId.
* @param sessionId Session identifier
*/
var setSessionID = function (sessionId) {
return InBrainSurveys.setSessionID(sessionId);
};
/**
* Provide information about the user
* @param dataPoints User information
*/
var setDataOptions = function (dataPoints) {
return InBrainSurveys.setDataOptions(dataPoints);
};
/**
* Customize Status Bar to match your application style
* @param config Status Bar configuration
*/
var setStatusBarConfig = function (config) {
var _a, _b;
if (Platform.OS == 'ios') {
InBrainSurveys.setStatusBarLight((_a = config.lightStatusBar) !== null && _a !== void 0 ? _a : true);
}
else {
config.statusBarColor && assertIsColor(config.statusBarColor);
InBrainSurveys.setStatusBarConfig((_b = config.lightStatusBar) !== null && _b !== void 0 ? _b : false, config.statusBarColor);
}
};
/**
* Customize Navigation Bar to match your application style
* @param config Navigation Bar configuration
*/
var setNavigationBarConfig = function (config) {
var _a;
config.backgroundColor && assertIsColor(config.backgroundColor);
config.buttonsColor && assertIsColor(config.buttonsColor);
config.titleColor && assertIsColor(config.titleColor);
InBrainSurveys.setNavigationBarConfig(config.backgroundColor, config.buttonsColor, config.titleColor, config.title, (_a = config.hasShadow) !== null && _a !== void 0 ? _a : false);
};
/**
* Set the listener when the webview is dismissed or webview is dismissed from within the webview
* @param callback Callback to execute
*/
var setOnSurveysCloseLister = function (callback) {
return inbrainEmitter.addListener('OnSurveysClose', function (data) {
if (data === null || data === void 0 ? void 0 : data.rewards) {
data.rewards = mapRewards(data === null || data === void 0 ? void 0 : data.rewards);
}
callback(data);
});
};
/**
* Check if surveys are available to show
*/
var checkSurveysAvailable = function () {
return wrapPromise(function () { return InBrainSurveys.checkSurveysAvailable(); });
};
/**
* Opens the InBrain survey wall
* @param option Indicates which feature is available at the dashboard: Surveys, Offers, or both
*/
var openWall = function (option) {
if (option === void 0) { option = InBrainWallOption.surveys; }
return wrapPromise(function () { return InBrainSurveys.openWall(option); });
};
/**
* Get Native Surveys
* @param filter an optional parameter
*/
var getNativeSurveys = function (filter) {
return wrapPromise(function () {
return InBrainSurveys.getNativeSurveys(filter === null || filter === void 0 ? void 0 : filter.placementId, filter === null || filter === void 0 ? void 0 : filter.categoryIds, filter === null || filter === void 0 ? void 0 : filter.excludedCategoryIds).then(function (surveys) {
return mapSurveys(surveys);
});
});
};
/**
* Show a specific Native Survey. All the configs should be done `BEFORE` calling `showNativeSurvey()`.
* @param id the survey's identifier
* @param searchId a mandatory identifier
* @param offersEnabled Specifies whether to enable Offers feature at the dashboard or not
*/
var showNativeSurvey = function (id, searchId, offersEnabled) {
if (offersEnabled === void 0) { offersEnabled = false; }
return wrapPromise(function () {
return InBrainSurveys.showNativeSurvey(id, searchId, offersEnabled);
});
};
/**
* Get the rewards
*/
var getRewards = function () {
return wrapPromise(function () { return InBrainSurveys.getRewards(); });
};
/**
* Manually confirm a list of rewards
* @param rewards The rewards to confirm
*/
var confirmRewards = function (rewards) {
return wrapPromise(function () { return InBrainSurveys.confirmRewards(rewards); });
};
/**
* Get Currency Sale
*/
var getCurrencySale = function () {
return wrapPromise(function () { return InBrainSurveys.getCurrencySale(); });
};
// ----------------------- Deprecated -------------------------------
/**
* @deprecated Use openWall() instead
*/
var showSurveys = function () {
return wrapPromise(function () { return openWall(InBrainWallOption.surveys); });
};
// ----------------------- Unsupported -------------------------------
/**
* @unsupported Please, use setInBrain fucntion instead
*/
var init = function () { };
/**
* @unsupported Please, use setSessionID and setDataOptions instead
*/
var setSessionParameters = function () { };
// ------ Callbacks -----
/**
* @unsupported Please, use setOnSurveysCloseLister instead
*/
var setOnCloseListener = function () { };
/**
* @unsupported Please, use setOnSurveysCloseLister instead
*/
var setOnCloseListenerFromPage = function () { };
// ----------------------- Private -------------------------------
/**
* Validation for apiClientId and apiSecret.
*/
var validateClientData = function (apiClientId, apiSecret) {
assertNotNullNorEmpty("apiClientId", apiClientId);
assertNotNullNorEmpty("apiSecret", apiSecret);
};
export default {
setInBrain: setInBrain,
setUserID: setUserID,
setSessionID: setSessionID,
setDataOptions: setDataOptions,
setStatusBarConfig: setStatusBarConfig,
setNavigationBarConfig: setNavigationBarConfig,
setOnSurveysCloseLister: setOnSurveysCloseLister,
checkSurveysAvailable: checkSurveysAvailable,
showSurveys: showSurveys,
openWall: openWall,
getNativeSurveys: getNativeSurveys,
showNativeSurvey: showNativeSurvey,
getCurrencySale: getCurrencySale,
getRewards: getRewards,
confirmRewards: confirmRewards,
init: init,
setSessionParameters: setSessionParameters,
setOnCloseListener: setOnCloseListener,
setOnCloseListenerFromPage: setOnCloseListenerFromPage,
};
//# sourceMappingURL=InBrain.js.map