diff --git a/web/resources/js/pages/User.js b/web/resources/js/pages/User.js
index 1c1ec35..91f8897 100644
--- a/web/resources/js/pages/User.js
+++ b/web/resources/js/pages/User.js
@@ -19,8 +19,10 @@ var protocol = Config.Protocol;
const User = (props) => {
+ const [validity, setValidity] = useState({error: false, message: ``, inputs: []});
const [state, setState] = useState(true);
const [user, setUser] = useState();
+ const [isFriend, setFriend] = useState(false);
const metaUser = props.user;
const userId = useParams().id;
const history = useHistory();
@@ -29,34 +31,78 @@ const User = (props) => {
const body = new FormData();
body.append('userId', userId);
body.append('decision', `fetchedUser`);
- axios.post(`${protocol}apis.${url}/fetch/user`, body).then(async(data)=>{
+ axios.get(`${protocol}apis.${url}/fetch/user/${userId}`, body).then(async(data)=>{
const res = data.data;
if (!res) {history.push(`/`);}
SetTitle(`${res.data.username}`);
+ setFriend(res.data.isFriend);
await setUser(res.data);
return;
});
}
+ const addFriend = async (decision) => {
+ const body = new FormData();
+ body.append('decision', decision);
+ setState(true);
+ axios.post(`${protocol}apis.${url}/api/add/user/${userId}`, body).then(async(data)=>{
+ const res = data.data;
+ if (res.badInputs.length >= 1) {
+ setValidity({error: true, message:res.message, inputs: res.badInputs});
+ setTimeout(()=>{setValidity({...validity, error: false, inputs: res.badInputs});}, 4000);
+ setFeedState({...feedState, loading: false});
+ setState(false);
+ return;
+ }
+ await setFriend(res.data);
+ setState(false);
+ return;
+ });
+ }
+
useEffect(async()=>{
await fetchUser();
setState(false);
}, []);
return (
- !user
+ !user || state
?
:
+ {validity.error?
+
+ : null}
{user.username}
- [Avatar.]
+
+
+
+ {
+ !metaUser? null :
+ userId == metaUser.id?
This is you!
:
+ isFriend && isFriend == `pending`?
+
+ : isFriend && isFriend == `needToAccept`?
+
+ : isFriend?
+
+ :
+
+ }
+
+
+ "{user.about? user.about : `${user.username} doesn't have an about section!`}" - {user.username}
-
"{user.about? user.about : `${user.username} doesn't have an about section!`}" - {user.username}
+
Something else idk.
);
diff --git a/web/resources/sass/Graphictoria.scss b/web/resources/sass/Graphictoria.scss
index d97af7a..e53dc2d 100644
--- a/web/resources/sass/Graphictoria.scss
+++ b/web/resources/sass/Graphictoria.scss
@@ -45,6 +45,16 @@ $web-font-path: "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,w
background-repeat: no-repeat;
}
+.a {
+ color: inherit !important;
+ text-decoration: none !important;
+}
+
+.a:hover {
+ color: inherit !important;
+ text-decoration: none !important;
+}
+
// Loader
.gtoria-loader-center {
diff --git a/web/routes/apis.php b/web/routes/apis.php
index 638eb68..cd8e6ce 100644
--- a/web/routes/apis.php
+++ b/web/routes/apis.php
@@ -34,6 +34,8 @@ Route::post('/v1/user/login', 'AuthController@Login');
Route::post('/v1/user/logout', 'AuthController@Logout');
Route::get('/v1/user/settings', 'UserController@GetSettings');
+Route::get('/fetch/user/{id}', 'Controller@fetchUser');
+
Route::get('/banners/data', 'BannerController@getBanners');
Route::get('/games/metadata', 'GamesController@isAvailable');
@@ -56,6 +58,8 @@ Route::get('/fetch/posts/{id}', 'Controller@fetchPosts');
Route::get('/fetch/post/{id}', 'Controller@fetchPost');
+Route::post('/api/add/user/{id}', 'HomeController@addFriend');
+
Route::post('/api/create/forum', 'HomeController@createPost');
Route::post('/api/create/reply/{id}', 'HomeController@createReply');