diff --git a/src/common/NavBar/NavMenu/NavMenu.js b/src/common/NavBar/NavMenu/NavMenu.js index 2509185a2..40a846d9d 100644 --- a/src/common/NavBar/NavMenu/NavMenu.js +++ b/src/common/NavBar/NavMenu/NavMenu.js @@ -2,17 +2,19 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const Icon = require('stremio-icons/dom'); +const { useServices } = require('stremio/services'); const Button = require('stremio/common/Button'); const Popup = require('stremio/common/Popup'); const useBinaryState = require('stremio/common/useBinaryState'); const useFullscreen = require('stremio/common/useFullscreen'); -const useUser = require('stremio/common/useUser'); +const useProfile = require('./useProfile'); const styles = require('./styles'); const NavMenu = ({ className }) => { + const { core } = useServices(); + const profile = useProfile(); const [menuOpen, , closeMenu, toggleMenu] = useBinaryState(false); const [fullscreen, requestFullscreen, exitFullscreen] = useFullscreen(); - const [user, logout] = useUser(); const popupLabelOnClick = React.useCallback((event) => { if (!event.nativeEvent.togglePopupPrevented) { toggleMenu(); @@ -22,7 +24,12 @@ const NavMenu = ({ className }) => { event.nativeEvent.togglePopupPrevented = true; }, []); const logoutButtonOnClick = React.useCallback(() => { - logout(); + core.dispatch({ + action: 'Ctx', + args: { + action: 'Logout' + } + }); }, []); return ( {
-
{user === null ? 'Anonymous user' : user.email}
+
{profile.auth === null ? 'Anonymous user' : profile.auth.user.email}
-
diff --git a/src/common/NavBar/NavMenu/useProfile.js b/src/common/NavBar/NavMenu/useProfile.js new file mode 100644 index 000000000..943f1de17 --- /dev/null +++ b/src/common/NavBar/NavMenu/useProfile.js @@ -0,0 +1,23 @@ +const React = require('react'); +const { useServices } = require('stremio/services'); +const useModelState = require('stremio/common/useModelState'); + +const mapProfileState = (ctx) => { + return ctx.profile; +}; + +const useProfile = () => { + const { core } = useServices(); + const initProfileState = React.useCallback(() => { + const ctx = core.getState('ctx'); + return mapProfileState(ctx); + }, []); + const profile = useModelState({ + model: 'ctx', + init: initProfileState, + map: mapProfileState + }); + return profile; +}; + +module.exports = useProfile; diff --git a/src/common/index.js b/src/common/index.js index d42007c89..ef266e228 100644 --- a/src/common/index.js +++ b/src/common/index.js @@ -27,7 +27,6 @@ const useFullscreen = require('./useFullscreen'); const useInLibrary = require('./useInLibrary'); const useLiveRef = require('./useLiveRef'); const useModelState = require('./useModelState'); -const useUser = require('./useUser'); module.exports = { AddonDetailsModal, @@ -59,6 +58,5 @@ module.exports = { useFullscreen, useInLibrary, useLiveRef, - useModelState, - useUser + useModelState }; diff --git a/src/common/useUser.js b/src/common/useUser.js deleted file mode 100644 index 36ff01acd..000000000 --- a/src/common/useUser.js +++ /dev/null @@ -1,31 +0,0 @@ -const React = require('react'); -const { useServices } = require('stremio/services'); -const useModelState = require('stremio/common/useModelState'); - -const mapUserState = (ctx) => { - return ctx.content.auth ? ctx.content.auth.user : null; -}; - -const useUser = () => { - const { core } = useServices(); - const logout = React.useCallback(() => { - core.dispatch({ - action: 'UserOp', - args: { - userOp: 'Logout' - } - }); - }, []); - const initUserState = React.useCallback(() => { - const ctx = core.getState('ctx'); - return mapUserState(ctx); - }, []); - const user = useModelState({ - model: 'ctx', - map: mapUserState, - init: initUserState - }); - return [user, logout]; -}; - -module.exports = useUser;