import * as R from "ramda"; import { NetInfoState } from "@react-native-community/netinfo"; import { platformSelect } from "@applicaster/zapp-react-native-utils/reactUtils"; import { isOnline as isOnlineUtils } from "@applicaster/quick-brick-core/App/NetworkStatusProvider/utils"; import { Platform } from "react-native"; type ConnectionInfo = NetInfoState & { deviceStatus: NetStatus }; type Return = { online: Nullable; deviceOnline: Nullable; }; const parseConnectionInfoForDefault = ( connectionInfo: ConnectionInfo ): Return => { const deviceOnline = connectionInfo?.deviceStatus?.online; const online = deviceOnline || isOnlineUtils(connectionInfo); return { online, deviceOnline }; }; const isTrue = R.equals(true); const isAllTrue = R.all(isTrue); const parseConnectionInfoForSamsung = ( connectionInfo: ConnectionInfo ): Return => { const { isConnected, isInternetReachable } = connectionInfo; const online = R.pathOr(true, ["deviceStatus", "online"], connectionInfo); const networkStatusProps = [isConnected, online]; const osVersion = Platform.Version as string; const platformOS = Platform.OS as QuickBrickPlatforms; const parsedOsVersion = parseFloat(osVersion); if (!(platformOS === "samsung_tv" && parsedOsVersion <= 5.0)) { networkStatusProps.push(isInternetReachable); } const isOnline = isAllTrue(networkStatusProps); return { online: isOnline, deviceOnline: isOnline }; }; export const parseConnectionInfo: typeof parseConnectionInfoForDefault = platformSelect({ samsung_tv: parseConnectionInfoForSamsung, default: parseConnectionInfoForDefault, });