X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Fpages%2FUser.js;fp=resources%2Fjs%2Fcomponents%2Fpages%2FUser.js;h=8dfdba45311aa410a0fbd0a858f3278bf4182912;hb=920f11ddfeb2175e4e1556886773dcd044c6085b;hp=0000000000000000000000000000000000000000;hpb=7016f4b28fa1324269ae9e2a8aad28dd562927d4;p=alttp.git diff --git a/resources/js/components/pages/User.js b/resources/js/components/pages/User.js new file mode 100644 index 0000000..8dfdba4 --- /dev/null +++ b/resources/js/components/pages/User.js @@ -0,0 +1,66 @@ +import axios from 'axios'; +import React, { useEffect, useState } from 'react'; +import { useParams } from 'react-router-dom'; + +import ErrorBoundary from '../common/ErrorBoundary'; +import ErrorMessage from '../common/ErrorMessage'; +import Loading from '../common/Loading'; +import NotFound from '../pages/NotFound'; +import Profile from '../users/Profile'; + +const User = () => { + const params = useParams(); + const { id } = params; + + const [error, setError] = useState(null); + const [loading, setLoading] = useState(true); + const [user, setUser] = useState(null); + + useEffect(() => { + setLoading(true); + axios + .get(`/api/users/${id}`) + .then(response => { + setError(null); + setLoading(false); + setUser(response.data); + }) + .catch(error => { + setError(error); + setLoading(false); + setUser(null); + }); + }, [id]); + + useEffect(() => { + const cb = (e) => { + if (e.user) { + setUser(user => e.user.id === user.id ? { ...user, ...e.user } : user); + } + }; + window.Echo.channel('App.Control') + .listen('UserChanged', cb); + return () => { + window.Echo.channel('App.Control') + .stopListening('UserChanged', cb); + }; + }, []); + + if (loading) { + return ; + } + + if (error) { + return ; + } + + if (!user) { + return ; + } + + return + + ; +}; + +export default User;