import React, { useState, useEffect } from 'react';
import { useLocation, Navigate } from "react-router-dom";
import { useModel } from '@/store';

export default (props) => {
  const { user, getCurrentUser } = useModel('user');
  const [userStatus, setUserStatus] = useState(user && user.id ? 1 : 0);

  useEffect(() => {
    if (!user || !user.id) {
      getCurrentUser().then(() => {
        setUserStatus(1);
      }).catch(() => {
        setUserStatus(-1);
      });
    }
  }, []);

  return userStatus === 0 ? null :
    userStatus === -1 ? <Navigate to="/login?back=true" /> : props.children;
}