instabug-reactnative
Version:
React Native plugin for integrating the Instabug SDK
102 lines (101 loc) • 4.12 kB
JavaScript
import { Platform } from 'react-native';
import { NativeEvents, NativeSurveys, emitter } from '../native/NativeSurveys';
/**
* Sets whether surveys are enabled or not.
* If you disable surveys on the SDK but still have active surveys on your Instabug dashboard,
* those surveys are still going to be sent to the device, but are not going to be
* shown automatically.
* To manually display any available surveys, call `Instabug.showSurveyIfAvailable()`.
* Defaults to `true`.
* @param isEnabled A boolean to set whether Instabug Surveys is enabled or disabled.
*/
export const setEnabled = (isEnabled) => {
NativeSurveys.setEnabled(isEnabled);
};
/**
* Shows one of the surveys that were not shown before, that also have conditions
* that match the current device/user.
* Does nothing if there are no available surveys or if a survey has already been shown
* in the current session.
*/
export const showSurveyIfAvailable = () => {
NativeSurveys.showSurveysIfAvailable();
};
/**
* Returns an array containing the available surveys.
*/
export const getAvailableSurveys = async () => {
const surveys = await NativeSurveys.getAvailableSurveys();
return surveys;
};
/**
* Sets whether auto surveys showing are enabled or not.
* @param autoShowingSurveysEnabled A boolean to indicate whether the
* surveys auto showing are enabled or not.
*/
export const setAutoShowingEnabled = (autoShowingSurveysEnabled) => {
NativeSurveys.setAutoShowingEnabled(autoShowingSurveysEnabled);
};
/**
* Sets a block of code to be executed just before the survey's UI is presented.
* This block is executed on the UI thread. Could be used for performing any UI changes before
* the survey's UI is shown.
* @param onShowHandler - A block of code that gets executed before
* presenting the survey's UI.
*/
export const setOnShowHandler = (onShowHandler) => {
emitter.addListener(NativeEvents.WILL_SHOW_SURVEY_HANDLER, onShowHandler);
NativeSurveys.setOnShowHandler(onShowHandler);
};
/**
* Sets a block of code to be executed right after the survey's UI is dismissed.
* This block is executed on the UI thread. Could be used for performing any UI
* changes after the survey's UI is dismissed.
* @param onDismissHandler - A block of code that gets executed after
* the survey's UI is dismissed.
*/
export const setOnDismissHandler = (onDismissHandler) => {
emitter.addListener(NativeEvents.DID_DISMISS_SURVEY_HANDLER, onDismissHandler);
NativeSurveys.setOnDismissHandler(onDismissHandler);
};
/**
* Shows survey with a specific token.
* Does nothing if there are no available surveys with that specific token.
* Answered and cancelled surveys won't show up again.
* @param surveyToken - A String with a survey token.
*
*/
export const showSurvey = (surveyToken) => {
NativeSurveys.showSurvey(surveyToken);
};
/**
* Returns true if the survey with a specific token was answered before.
* Will return false if the token does not exist or if the survey was not answered before.
* @param surveyToken - A String with a survey token.
* the survey has been responded to or not.
*
*/
export const hasRespondedToSurvey = async (surveyToken) => {
const hasResponded = await NativeSurveys.hasRespondedToSurvey(surveyToken);
return hasResponded;
};
/**
* Setting an option for all the surveys to show a welcome screen before
* the user starts taking the survey.
* @param shouldShowWelcomeScreen A boolean for setting whether the
* welcome screen should show.
*/
export const setShouldShowWelcomeScreen = (shouldShowWelcomeScreen) => {
NativeSurveys.setShouldShowWelcomeScreen(shouldShowWelcomeScreen);
};
/**
* iOS Only
* Sets url for the published iOS app on AppStore, You can redirect
* NPS Surveys or AppRating Surveys to AppStore to let users rate your app on AppStore itself.
* @param appStoreURL A String url for the published iOS app on AppStore
*/
export const setAppStoreURL = (appStoreURL) => {
if (Platform.OS === 'ios') {
NativeSurveys.setAppStoreURL(appStoreURL);
}
};