react-native-unit-components
Version:
Unit React Native components
60 lines (54 loc) • 2.99 kB
text/typescript
import { UNVersioningStrategyType, UNWebVersioningStrategy } from '../types/shared';
import { UNSDKConstants } from '../unitSdkManager/UnitSdk.constants';
export const getWebSdkVersionString = (webVersioningStrategy: UNWebVersioningStrategy) => {
switch (webVersioningStrategy.type) {
case UNVersioningStrategyType.latest:
return 'latest';
case UNVersioningStrategyType.exact:
return `${webVersioningStrategy.major}.${webVersioningStrategy.minor}.${webVersioningStrategy.patch}`;
case UNVersioningStrategyType.upToNextMinor:
return `${webVersioningStrategy.major}.${webVersioningStrategy.minor}`;
case UNVersioningStrategyType.upToNextMajor:
return `${webVersioningStrategy.major}`;
}
};
export const getVersionArray = (webVersioningStrategy: UNWebVersioningStrategy) => {
switch (webVersioningStrategy.type) {
case UNVersioningStrategyType.latest:
return [null, null, null];
case UNVersioningStrategyType.exact:
return [webVersioningStrategy.major, webVersioningStrategy.minor, webVersioningStrategy.patch];
case UNVersioningStrategyType.upToNextMinor:
return [webVersioningStrategy.major, webVersioningStrategy.minor, null];
case UNVersioningStrategyType.upToNextMajor:
return [webVersioningStrategy.major, null, null];
}
};
export const isBehindRecommendedStrategy = (currentWebVersioningStrategy: UNWebVersioningStrategy) => {
const recommendedWebVersionArray = getVersionArray(UNSDKConstants.webSDKRecommendedStrategy);
const currentWebVersionArray = getVersionArray(currentWebVersioningStrategy);
for (let i = 0; i < 3; i++) {
let currentVersion = currentWebVersionArray[i];
let recommendedVersion = recommendedWebVersionArray[i];
if (currentVersion === null || recommendedVersion === null) {
return false;
}
currentVersion = currentVersion as number;
recommendedVersion = recommendedVersion as number;
if (currentVersion !== recommendedVersion) {
return currentVersion < recommendedVersion;
}
}
return false;
};
export const warnClientIfNeeded = (currentWebVersioningStrategy: UNWebVersioningStrategy) => {
if (currentWebVersioningStrategy.type === UNVersioningStrategyType.latest) {
return;
}
if (currentWebVersioningStrategy.major > UNSDKConstants.webSDKRecommendedStrategy.major) {
console.log(`The current web sdk version is ${getWebSdkVersionString(currentWebVersioningStrategy)} which is higher than the latest supported version ${getWebSdkVersionString(UNSDKConstants.webSDKRecommendedStrategy)}. Please update the latest version of the web sdk.`);
}
if (isBehindRecommendedStrategy(currentWebVersioningStrategy)) {
console.log(`The current web sdk version is ${getWebSdkVersionString(currentWebVersioningStrategy)} which is older than the latest supported version ${getWebSdkVersionString(UNSDKConstants.webSDKRecommendedStrategy)}. Please consider updating to the latest version of the web sdk.`);
}
};