import { GestureResponderEvent } from 'react-native'; import { IReduxState } from '../../../app/types'; import { isTestModeEnabled } from '../functions'; /** * Describes the {@link TestHint}'s properties. * * A test hint is meant to resemble the lack of the ability to execute * JavaScript by the mobile torture tests. They are used to expose some of * the app's internal state that is not always expressed in a feasible manner by * the UI. */ export type TestHintProps = { /** * The indicator which determines whether the test mode is enabled. * {@link TestHint} Components are rendered only if this flag is set to * {@code true}. */ _testModeEnabled: boolean; /** * The test hint's identifier string. Must be unique in the app instance * scope. */ id: string; /** * The optional "on press" handler which can be used to bind a click handler * to a {@link TestHint}. */ onPress?: (e?: GestureResponderEvent) => void; /** * The test hint's (text) value which is to be consumed by the tests. */ value: string; }; /** * Maps (parts of) the redux state to {@link TestHint}'s React {@code Component} * props. * * @param {Object} state - The redux store/state. * @private * @returns {{ * _testModeEnabled: boolean * }} */ export function _mapStateToProps(state: IReduxState) { return { /** * The indicator which determines whether the test mode is enabled. * * @protected * @type {boolean} */ _testModeEnabled: isTestModeEnabled(state) }; }