UNPKG

react-native-unit-components

Version:

Unit React Native components

60 lines (54 loc) 3.11 kB
import { UNVersioningStrategyType, UNComponentsWebVersioningStrategy } from '../types/shared'; import { UNComponentsSDKConstants } from '../unitComponentsSdkManager/UnitComponentsSdk.constants'; export const getWebSdkVersionString = (webVersioningStrategy: UNComponentsWebVersioningStrategy) => { 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: UNComponentsWebVersioningStrategy) => { 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: UNComponentsWebVersioningStrategy) => { const recommendedWebVersionArray = getVersionArray(UNComponentsSDKConstants.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: UNComponentsWebVersioningStrategy) => { if (currentWebVersioningStrategy.type === UNVersioningStrategyType.latest) { return; } if (currentWebVersioningStrategy.major > UNComponentsSDKConstants.webSDKRecommendedStrategy.major) { console.log(`The current web sdk version is ${getWebSdkVersionString(currentWebVersioningStrategy)} which is higher than the latest supported version ${getWebSdkVersionString(UNComponentsSDKConstants.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(UNComponentsSDKConstants.webSDKRecommendedStrategy)}. Please consider updating to the latest version of the web sdk.`); } };