From ebae0b00e7d5b700dac7075974d4bf145ca8aff7 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Sun, 24 Jul 2022 00:11:54 -0400 Subject: [PATCH] Handle login state in nav bar --- packages/fakeyou/src/v2/view/NewTopNavFc.tsx | 91 +++++++++++++++++--- 1 file changed, 78 insertions(+), 13 deletions(-) diff --git a/packages/fakeyou/src/v2/view/NewTopNavFc.tsx b/packages/fakeyou/src/v2/view/NewTopNavFc.tsx index 09fed6ce87..46ed43dd3d 100644 --- a/packages/fakeyou/src/v2/view/NewTopNavFc.tsx +++ b/packages/fakeyou/src/v2/view/NewTopNavFc.tsx @@ -1,6 +1,6 @@ import React, { useState } from "react"; import { SessionWrapper } from "@storyteller/components/src/session/SessionWrapper"; -import { Link } from "react-router-dom"; +import { Link, useHistory } from "react-router-dom"; import { MigrationTopNavSession } from "../../migration/MigrationTopNav_Session"; import { FrontendUrlConfig } from "../../common/FrontendUrlConfig"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; @@ -20,6 +20,8 @@ import { import { faPatreon } from "@fortawesome/free-brands-svg-icons"; import { t } from "i18next"; import { USE_REFRESH } from "../../Refresh"; +import { Logout } from "@storyteller/components/src/api/session/Logout"; +import { Gravatar } from "@storyteller/components/src/elements/Gravatar"; interface Props { sessionWrapper: SessionWrapper; @@ -28,6 +30,8 @@ interface Props { } function NewTopNavFc(props: Props) { + let history = useHistory(); + let myDataLink = "/signup"; if (props.sessionWrapper.isLoggedIn()) { @@ -231,6 +235,77 @@ function NewTopNavFc(props: Props) { ); } + const logoutHandler = async () => { + await Logout(); + props.querySessionCallback(); + history.push('/'); + } + + const loggedIn = props.sessionWrapper.isLoggedIn(); + + let userOrLoginButton = ( + <> + + Login + + + ); + + let signupOrLogOutButton = ( + <> + + + + + ); + + if (loggedIn) { + let displayName = props.sessionWrapper.getDisplayName(); + let gravatarHash = props.sessionWrapper.getEmailGravatarHash(); + let gravatar = ; + + if (displayName === undefined) { + displayName = 'My Account'; + } + + if (gravatarHash !== undefined) { + gravatar = + } + + let url = `/profile/${displayName}`; + userOrLoginButton = ( + <> + + {gravatar}  {displayName} + + + + ); + + signupOrLogOutButton = ( + <> + + + ); + } + return (
@@ -440,18 +515,8 @@ function NewTopNavFc(props: Props) {
- - Login - - - - + {userOrLoginButton} + {signupOrLogOutButton}
{/*