From f9273ffe07d61b8a3191e24f75fd0aa6c3398ffb Mon Sep 17 00:00:00 2001 From: NikolaBorislavovHristov Date: Wed, 11 Sep 2019 18:03:33 +0300 Subject: [PATCH] useRouteActive custom hook implemented --- src/common/index.js | 2 ++ src/common/useRouteActive.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 src/common/useRouteActive.js 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;