Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions src/SmallcaseGateway.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import { NativeModules, Platform } from 'react-native';
import { NativeModules } from 'react-native';
import { ENV } from './constants';
import { safeObject, platformSpecificColorHex } from './util';
import {
safeObject,
platformSpecificColorHex,
sanitizeBrokerList,
} from './util';
import { version } from '../package.json';
const { SmallcaseGateway: SmallcaseGatewayNative } = NativeModules;

Expand Down Expand Up @@ -64,7 +68,7 @@ const setConfigEnvironment = async (envConfig) => {

const safeIsLeprechaun = Boolean(isLeprechaun);
const safeIsAmoEnabled = Boolean(isAmoEnabled);
const safeBrokerList = Array.isArray(brokerList) ? brokerList : [];
const safeBrokerList = sanitizeBrokerList(brokerList);
const safeGatewayName = typeof gatewayName === 'string' ? gatewayName : '';
const safeEnvName =
typeof environmentName === 'string' ? environmentName : ENV.PROD;
Expand All @@ -91,7 +95,7 @@ const setConfigEnvironment = async (envConfig) => {
const init = async (sdkToken, externalMeta) => {
const safeToken = typeof sdkToken === 'string' ? sdkToken : '';
const safeExternalMeta = externalMeta && typeof externalMeta === 'object' ? externalMeta : null;

return SmallcaseGatewayNative.init(safeToken, safeExternalMeta);
};

Expand All @@ -107,10 +111,11 @@ const triggerTransaction = async (transactionId, utmParams, brokerList) => {
const safeUtm = safeObject(utmParams);
const safeId = typeof transactionId === 'string' ? transactionId : '';

const safeBrokerList =
Array.isArray(brokerList) && brokerList.length
? brokerList
: defaultBrokerList;
let safeBrokerList = sanitizeBrokerList(brokerList);

if (safeBrokerList.length === 0) {
safeBrokerList = defaultBrokerList;
}

return SmallcaseGatewayNative.triggerTransaction(
safeId,
Expand Down
11 changes: 11 additions & 0 deletions src/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,14 @@ export function platformSpecificColorHex(hex) {
}
return hex
}

/** sanitize the input broker array to make sure its an array and only has string values */
export function sanitizeBrokerList(arr) {
if (!Array.isArray(arr) || arr.length === 0) {
return [];
}

return arr.filter((val) => {
return typeof val === 'string' && val.trim() !== '';
});
}