;
if (!loaderData || isError(loaderData)) {
return Error
;
@@ -28,14 +25,19 @@ export function Profile({ self }: IProfileProps) {
{loaderData.user.fullName}
{loaderData.user.fullName}
-
-
-
+ {self && (
+
+
+
+ )}
{sortedPosts &&
sortedPosts.map((p) => {
diff --git a/client/src/api/Person.ts b/client/src/api/Person.ts
index 3135234..0cf5b72 100644
--- a/client/src/api/Person.ts
+++ b/client/src/api/Person.ts
@@ -16,3 +16,9 @@ export async function signup(
export async function getSelf(): Promise {
return fetchJSONAuth("/person", "GET", PersonToResp);
}
+
+export async function getPersonByUsername(
+ username: string,
+): Promise {
+ return fetchJSONAuth("/person/" + username, "GET", PersonToResp);
+}
diff --git a/client/src/loaders.ts b/client/src/loaders.ts
index ba52d69..7837ef5 100644
--- a/client/src/loaders.ts
+++ b/client/src/loaders.ts
@@ -1,4 +1,4 @@
-import { getSelf } from "./api/Person";
+import { getPersonByUsername, getSelf } from "./api/Person";
import { deleteToken, getToken } from "./api/utils";
import { redirect } from "react-router-dom";
import { isError } from "./api/dto";
@@ -24,9 +24,15 @@ export async function homeLoader() {
return await getCheckUserSelf();
}
-export async function profileSelfLoader() {
- const user = await getCheckUserSelf();
- if (user instanceof Response) {
+export async function profileLoader({
+ params,
+}: {
+ params: { username?: string };
+}) {
+ const user = params.username
+ ? await getPersonByUsername(params.username)
+ : await getCheckUserSelf();
+ if (!user || user instanceof Response || isError(user)) {
return user;
}