All files index.js

90.48% Statements 19/21
77.78% Branches 7/9
100% Functions 6/6
100% Lines 18/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54        1x 1x     1x               3x 3x       16x   16x 16x   16x       2x   2x 2x     16x     1x     18x 11x   7x           5x    
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import { NativeModules, Platform } from 'react-native'
 
const { RNHomeIndicator } = NativeModules
const isIos = Platform.OS === 'ios'
 
 
const propTypes = {
    autoHidden: PropTypes.bool.isRequired,
}
 
export class HomeIndicator extends Component {
    static propsHistory = [];
 
    static popAndGetPreviousProps() {
        HomeIndicator.propsHistory.pop()
        return HomeIndicator.propsHistory[HomeIndicator.propsHistory.length - 1] || {}
    }
 
    componentDidMount() {
        Iif (!isIos) return
 
        const { autoHidden } = this.props
        HomeIndicator.propsHistory.push(this.props)
 
        updateNativeHomeIndicator({ autoHidden })
    }
 
    componentWillUnmount() {
        Iif (!isIos) return
 
        const { autoHidden } = HomeIndicator.popAndGetPreviousProps()
        updateNativeHomeIndicator({ autoHidden })
    }
 
    render() { return null }
}
 
HomeIndicator.propTypes = propTypes
 
function updateNativeHomeIndicator({ autoHidden = false }) {
    if (autoHidden) {
        RNHomeIndicator.autoHidden()
    } else {
        RNHomeIndicator.alwaysVisible()
    }
}
 
 
// keep this for backwards compatibility
const PrefersHomeIndicatorAutoHidden = () => <HomeIndicator autoHidden />
export default PrefersHomeIndicatorAutoHidden