import * as React from "react"; import { Component } from "react"; import { graphql, withFragmentContainer, withLocalStateContainer, } from "talk-framework/lib/relay"; import { SignOutMutation, withSignOutMutation } from "talk-framework/mutations"; import { UserBoxContainer_me as MeData } from "talk-stream/__generated__/UserBoxContainer_me.graphql"; import { UserBoxContainerLocal as Local } from "talk-stream/__generated__/UserBoxContainerLocal.graphql"; import UserBoxUnauthenticated from "talk-stream/components/UserBoxUnauthenticated"; import { SetAuthPopupStateMutation, ShowAuthPopupMutation, withSetAuthPopupStateMutation, withShowAuthPopupMutation, } from "talk-stream/mutations"; import { Popup } from "talk-ui/components"; import UserBoxAuthenticated from "../components/UserBoxAuthenticated"; interface InnerProps { local: Local; me: MeData | null; showAuthPopup: ShowAuthPopupMutation; setAuthPopupState: SetAuthPopupStateMutation; signOut: SignOutMutation; } export class UserBoxContainer extends Component { private handleFocus = () => this.props.setAuthPopupState({ focus: true }); private handleBlur = () => this.props.setAuthPopupState({ focus: false }); private handleClose = () => this.props.setAuthPopupState({ open: false }); private handleSignIn = () => this.props.showAuthPopup({ view: "SIGN_IN" }); private handleRegister = () => this.props.showAuthPopup({ view: "SIGN_UP" }); public render() { const { local: { authPopup: { open, focus, view }, }, me, signOut, } = this.props; if (me) { return ( ); } return ( <> ); } } const enhanced = withSignOutMutation( withSetAuthPopupStateMutation( withShowAuthPopupMutation( withLocalStateContainer( graphql` fragment UserBoxContainerLocal on Local { authPopup { open focus view } } ` )( withFragmentContainer({ me: graphql` fragment UserBoxContainer_me on User { username } `, })(UserBoxContainer) ) ) ) ); export default enhanced;