diff --git a/src/common/index.js b/src/common/index.js index de0e448a6..da25f6ca4 100644 --- a/src/common/index.js +++ b/src/common/index.js @@ -16,6 +16,7 @@ const routesRegexp = require('./routesRegexp'); const useBinaryState = require('./useBinaryState'); const useFullscreen = require('./useFullscreen'); const useLocationHash = require('./useLocationHash'); +const useRouteActive = require('./useRouteActive'); const useTabIndex = require('./useTabIndex'); module.exports = { @@ -37,5 +38,6 @@ module.exports = { useBinaryState, useFullscreen, useLocationHash, + useRouteActive, useTabIndex }; diff --git a/src/common/useRouteActive.js b/src/common/useRouteActive.js new file mode 100644 index 000000000..7ac28512b --- /dev/null +++ b/src/common/useRouteActive.js @@ -0,0 +1,14 @@ +const React = require('react'); +const UrlUtils = require('url'); +const useLocationHash = require('stremio/common/useLocationHash'); + +const useRouteActive = (routeRegexp) => { + const locationHash = useLocationHash(); + const active = React.useMemo(() => { + const { pathname: locationPathname } = UrlUtils.parse(locationHash.slice(1)); + return !!locationPathname.match(routeRegexp); + }, [locationHash, routeRegexp]); + return active; +}; + +module.exports = useRouteActive;