import { useRouter, NextRouter } from 'next/router'
import { useState, useEffect } from 'react'
import { loginUserByJwt, refreshConnections } from '../../../redux/auth/service'
import { Container } from '@material-ui/core'
import { selectAuthState } from '../../../redux/auth/selector'
import { bindActionCreators, Dispatch } from 'redux'
import { connect } from 'react-redux'
type Props = {
auth: any
router: NextRouter
loginUserByJwt: typeof loginUserByJwt,
refreshConnections: typeof refreshConnections
}
const mapStateToProps = (state: any) => {
return {
auth: selectAuthState(state)
}
}
const mapDispatchToProps = (dispatch: Dispatch) => ({
loginUserByJwt: bindActionCreators(loginUserByJwt, dispatch),
refreshConnections: bindActionCreators(refreshConnections, dispatch)
})
const FacebookCallback = (props: Props) => {
const { auth, loginUserByJwt, refreshConnections, router } = props
const initialState = { error: '', token: '' }
const [state, setState] = useState(initialState)
useEffect(() => {
const error = router.query.errror as string
const token = router.query.token as string
const type = router.query.type as string
if (!error) {
if (type === 'connection') {
const user = auth.get('user')
refreshConnections(user.id)
} else {
loginUserByJwt(token, '/', '/')
}
}
setState({ ...state, error, token })
}, [])
return state.error && state.error !== '' ? (
Facebook authentication failed.
{state.error}
) : (
Authenticating...
)
}
const FacebookHomeWrapper = (props: any) =>
export default connect(mapStateToProps, mapDispatchToProps)(FacebookHomeWrapper)