diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json
index 3f1bcdcd..3481dcb4 100644
--- a/src/locales/en/translation.json
+++ b/src/locales/en/translation.json
@@ -250,6 +250,13 @@
"friend_request_sent": "Friend request sent",
"friends": "Friends",
"friends_list": "Friends list",
- "user_not_found": "User not found"
+ "user_not_found": "User not found",
+ "block_user": "Block user",
+ "add_friend": "Add friend",
+ "request_sent": "Request sent",
+ "request_received": "Request received",
+ "accept_request": "Accept request",
+ "ignore_request": "Ignore request",
+ "cancel_request": "Cancel request"
}
}
diff --git a/src/locales/pt/translation.json b/src/locales/pt/translation.json
index 568116f8..fc9fc5ec 100644
--- a/src/locales/pt/translation.json
+++ b/src/locales/pt/translation.json
@@ -250,6 +250,13 @@
"add": "Adicionar",
"sending": "Enviando",
"friends_list": "Lista de amigos",
- "user_not_found": "Usuário não encontrado"
+ "user_not_found": "Usuário não encontrado",
+ "block_user": "Bloquear",
+ "add_friend": "Adicionar amigo",
+ "request_sent": "Pedido enviado",
+ "request_received": "Pedido recebido",
+ "accept_request": "Aceitar pedido",
+ "ignore_request": "Ignorar pedido",
+ "cancel_request": "Cancelar pedido"
}
}
diff --git a/src/renderer/src/pages/shared-modals/user-friend-modal/user-friend-request.tsx b/src/renderer/src/pages/shared-modals/user-friend-modal/user-friend-request.tsx
index 022807d5..4dd0d1e5 100644
--- a/src/renderer/src/pages/shared-modals/user-friend-modal/user-friend-request.tsx
+++ b/src/renderer/src/pages/shared-modals/user-friend-modal/user-friend-request.tsx
@@ -6,6 +6,7 @@ import {
import * as styles from "./user-friend-modal.css";
import cn from "classnames";
import { SPACING_UNIT } from "@renderer/theme.css";
+import { useTranslation } from "react-i18next";
export interface UserFriendRequestProps {
userId: string;
@@ -28,6 +29,8 @@ export const UserFriendRequest = ({
onClickRefuseRequest,
onClickRequest,
}: UserFriendRequestProps) => {
+ const { t } = useTranslation("user_profile");
+
return (
@@ -72,6 +77,7 @@ export const UserFriendRequest = ({
@@ -80,12 +86,14 @@ export const UserFriendRequest = ({
diff --git a/src/renderer/src/pages/user/user-content.tsx b/src/renderer/src/pages/user/user-content.tsx
index c22aae4e..6d9401fb 100644
--- a/src/renderer/src/pages/user/user-content.tsx
+++ b/src/renderer/src/pages/user/user-content.tsx
@@ -17,7 +17,13 @@ import {
profileBackgroundFromProfileImage,
steamUrlBuilder,
} from "@renderer/helpers";
-import { PersonIcon, PlusIcon, TelescopeIcon } from "@primer/octicons-react";
+import {
+ CheckCircleIcon,
+ PersonIcon,
+ PlusIcon,
+ TelescopeIcon,
+ XCircleIcon,
+} from "@primer/octicons-react";
import { Button, Link } from "@renderer/components";
import { UserEditProfileModal } from "./user-edit-modal";
import { UserSignOutModal } from "./user-signout-modal";
@@ -39,6 +45,7 @@ export function UserContent({
const {
userDetails,
profileBackground,
+ friendRequests,
signOut,
updateFriendRequests,
showFriendsModal,
@@ -116,6 +123,71 @@ export function UserContent({
}
}, [profileBackground, isMe]);
+ const getProfileActions = () => {
+ if (isMe) {
+ return (
+ <>
+
+
+
+ >
+ );
+ }
+
+ const friendRequest = friendRequests.find(
+ (request) => request.id == userProfile.id
+ );
+
+ if (!friendRequest) {
+ return (
+ <>
+
+
+
+ >
+ );
+ }
+
+ if (friendRequest.type === "RECEIVED") {
+ return (
+ <>
+
+
+ >
+ );
+ }
+
+ return (
+
+ );
+ };
+
return (
<>
- {isMe && (
+
-
- <>
-
-
-
- >
-
+ {getProfileActions()}
- )}
+
diff --git a/src/renderer/src/pages/user/user.css.ts b/src/renderer/src/pages/user/user.css.ts
index 3df92ceb..f9b1b09a 100644
--- a/src/renderer/src/pages/user/user.css.ts
+++ b/src/renderer/src/pages/user/user.css.ts
@@ -279,3 +279,16 @@ export const profileBackground = style({
top: "0",
borderRadius: "4px",
});
+
+export const cancelRequestButton = style({
+ cursor: "pointer",
+ color: vars.color.body,
+ ":hover": {
+ color: vars.color.danger,
+ },
+});
+
+export const acceptRequestButton = style({
+ cursor: "pointer",
+ color: vars.color.success,
+});
diff --git a/src/types/index.ts b/src/types/index.ts
index 826c768f..1d91af62 100644
--- a/src/types/index.ts
+++ b/src/types/index.ts
@@ -293,6 +293,7 @@ export interface UserProfile {
id: string;
displayName: string;
profileImageUrl: string | null;
+ profileVisibility: "PUBLIC" | "PRIVATE" | "FRIEND";
totalPlayTimeInSeconds: number;
libraryGames: UserGame[];
recentGames: UserGame[];