import { createSelector } from '@reduxjs/toolkit'; import { useSelector } from 'react-redux'; import { OnionState } from '../ducks/onion'; import { SectionType } from '../ducks/section'; import { StateType } from '../reducer'; const getOnionPaths = (state: StateType): OnionState => state.onionPaths; const getOnionPathsCount = createSelector( getOnionPaths, (state: OnionState): SectionType => state.snodePaths.length ); const getFirstOnionPath = createSelector( getOnionPaths, (state: OnionState): Array<{ ip: string }> => state.snodePaths?.[0] || [] ); const getFirstOnionPathLength = createSelector( getFirstOnionPath, (state: Array<{ ip: string }>): number => state.length || 0 ); const getIsOnline = createSelector(getOnionPaths, (state: OnionState): boolean => state.isOnline); export const useOnionPathsCount = () => { return useSelector(getOnionPathsCount); }; export const useIsOnline = () => { return useSelector(getIsOnline); }; export const useFirstOnionPathLength = () => { return useSelector(getFirstOnionPathLength); }; export const useFirstOnionPath = () => { return useSelector(getFirstOnionPath); };