All files / src/components Body.tsx

0% Statements 0/7
0% Branches 0/10
0% Functions 0/4
0% Lines 0/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65                                                                                                                                 
import React from 'react';
import {ProgressSpinner} from "primereact/progressspinner";
import NewActivity from "../containers/NewActivity";
import ActivityList from "../containers/ActivityList";
 
 
/**
 * the {@link Header} properties
 */
type Props = {
    loggedUserName: () => void;
    username: string;
}
 
type BodyState = {
    loggedUser: boolean
}
 
export class Body extends React.Component<Props, BodyState> {
 
    constructor(props: Props) {
        super(props);
        this.state = {
            loggedUser: false
        }
    }
 
    componentDidMount() {
        if (!this.state.loggedUser) {
            this.props.loggedUserName();
        }
    }
 
    /**
     * Lifecycle, used for rendering the errors.
     */
    componentDidUpdate(prevProps: Readonly<Props>, prevState: Readonly<BodyState>, snapshot?: any) {
        if (this.props?.username && (prevProps.username !== this.props?.username)) {
            this.setState({loggedUser: true});
        }
    }
 
    render() {
        return (
            <div>
                {!this.state.loggedUser &&
                <ProgressSpinner
                    style={{width: '50px', height: '50px'}}
                    strokeWidth="8"
                    fill="var(--surface-ground)"
                    animationDuration=".5s"/>
                }
                {this.state.loggedUser &&
                <div className="md:w-6 md:m-auto p-2">
                    <NewActivity/>
                    <ActivityList/>
                </div>
                }
            </div>);
 
    }
 
}