import { Button, ButtonGroup, Collapse, Nav, Navbar, NavbarBrand, NavbarText, NavbarToggler, NavItem, NavLink } from 'reactstrap'; import {connect} from 'react-redux'; import React, {useRef, useEffect, useState} from 'react'; import {logout} from '../api'; import {notify} from 'react-notify-toast'; import {Timer} from './Timer'; export class TurniereNavigation extends React.Component { constructor(props) { super(props); this.toggle = this.toggle.bind(this); this.togglerRef = React.createRef(); this.state = { collapsed: true, isToggleVisible: true }; } componentDidMount() { const observer = new IntersectionObserver( ([entry]) => { this.setState({isToggleVisible: entry.isIntersecting}); }, {threshold: 0.1} ); if (this.togglerRef.current) { observer.observe(this.togglerRef.current); } this.observer = observer; } componentWillUnmount() { if (this.observer) { this.observer.disconnect(); } } toggle() { this.setState({collapsed: !this.state.collapsed}); } render() { const {tournament} = this.props; const {isToggleVisible} = this.state; return ( turnie.re {tournament && tournament.timerEnd && Spielzeit: } {isToggleVisible && HALLO WELT}
); } } function Navlink(props) { return ( {props.text} ); } class SmartNavLinks extends React.Component { render() { return (); } } class InvisibleLoginLogoutButtons extends React.Component { logout() { logout(() => notify.show('Du bist jetzt abgemeldet.', 'success', 2500)); } render() { const {isSignedIn, username} = this.props; if (isSignedIn) { return ( ); } else { return ( ); } } } const mapStateToUserinfo = state => { const {isSignedIn, username} = state.userinfo; return {isSignedIn, username}; }; const LoginLogoutButtons = connect(mapStateToUserinfo)(InvisibleLoginLogoutButtons); const NavLinks = connect(mapStateToUserinfo)(SmartNavLinks);