diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json
index 24ba8f0f..dc1bb1d7 100644
--- a/src/locales/en/translation.json
+++ b/src/locales/en/translation.json
@@ -258,6 +258,7 @@
"accept_request": "Accept request",
"ignore_request": "Ignore request",
"cancel_request": "Cancel request",
- "undo_friendship": "Undo friendship"
+ "undo_friendship": "Undo friendship",
+ "request_accepted": "Request accepted"
}
}
diff --git a/src/locales/pt/translation.json b/src/locales/pt/translation.json
index ce4efd58..c95ae82f 100644
--- a/src/locales/pt/translation.json
+++ b/src/locales/pt/translation.json
@@ -258,6 +258,7 @@
"accept_request": "Aceitar pedido",
"ignore_request": "Ignorar pedido",
"cancel_request": "Cancelar pedido",
- "undo_friendship": "Desfazer amizade"
+ "undo_friendship": "Desfazer amizade",
+ "request_accepted": "Pedido de amizade aceito"
}
}
diff --git a/src/renderer/index.html b/src/renderer/index.html
index 52276268..543b85a9 100644
--- a/src/renderer/index.html
+++ b/src/renderer/index.html
@@ -6,7 +6,7 @@
Hydra
diff --git a/src/renderer/src/components/sidebar/sidebar-profile.tsx b/src/renderer/src/components/sidebar/sidebar-profile.tsx
index b16c2c28..81736e37 100644
--- a/src/renderer/src/components/sidebar/sidebar-profile.tsx
+++ b/src/renderer/src/components/sidebar/sidebar-profile.tsx
@@ -21,7 +21,7 @@ export function SidebarProfile() {
useEffect(() => {
setReceivedRequests(
- receivedRequests.filter((request) => request.type === "RECEIVED")
+ friendRequests.filter((request) => request.type === "RECEIVED")
);
}, [friendRequests]);
diff --git a/src/renderer/src/hooks/use-user-details.ts b/src/renderer/src/hooks/use-user-details.ts
index 401f4684..38f6a8f3 100644
--- a/src/renderer/src/hooks/use-user-details.ts
+++ b/src/renderer/src/hooks/use-user-details.ts
@@ -85,9 +85,13 @@ export function useUserDetails() {
[updateUserDetails]
);
- const fetchFriendRequests = useCallback(async () => {
- const friendRequests = await window.electron.getFriendRequests();
- dispatch(setFriendRequests(friendRequests));
+ const fetchFriendRequests = useCallback(() => {
+ return window.electron
+ .getFriendRequests()
+ .then((friendRequests) => {
+ dispatch(setFriendRequests(friendRequests));
+ })
+ .catch(() => {});
}, [dispatch]);
const showFriendsModal = useCallback(
diff --git a/src/renderer/src/pages/shared-modals/user-friend-modal/user-friend-modal-add-friend.tsx b/src/renderer/src/pages/shared-modals/user-friend-modal/user-friend-modal-add-friend.tsx
index f71d4790..0725674e 100644
--- a/src/renderer/src/pages/shared-modals/user-friend-modal/user-friend-modal-add-friend.tsx
+++ b/src/renderer/src/pages/shared-modals/user-friend-modal/user-friend-modal-add-friend.tsx
@@ -23,7 +23,7 @@ export const UserFriendModalAddFriend = ({
const { sendFriendRequest, updateFriendRequestState, friendRequests } =
useUserDetails();
- const { showErrorToast } = useToast();
+ const { showSuccessToast, showErrorToast } = useToast();
const handleClickAddFriend = () => {
setIsAddingFriend(true);
@@ -58,19 +58,23 @@ export const UserFriendModalAddFriend = ({
const handleCancelFriendRequest = (userId: string) => {
updateFriendRequestState(userId, "CANCEL").catch(() => {
- showErrorToast("Falha ao cancelar convite");
+ showErrorToast(t("try_again"));
});
};
const handleAcceptFriendRequest = (userId: string) => {
- updateFriendRequestState(userId, "ACCEPTED").catch(() => {
- showErrorToast("Falha ao aceitar convite");
- });
+ updateFriendRequestState(userId, "ACCEPTED")
+ .then(() => {
+ showSuccessToast(t("request_accepted"));
+ })
+ .catch(() => {
+ showErrorToast(t("try_again"));
+ });
};
const handleRefuseFriendRequest = (userId: string) => {
updateFriendRequestState(userId, "REFUSED").catch(() => {
- showErrorToast("Falha ao recusar convite");
+ showErrorToast(t("try_again"));
});
};
diff --git a/src/renderer/src/pages/user/user-content.tsx b/src/renderer/src/pages/user/user-content.tsx
index 9fb1c8b5..228fdbd9 100644
--- a/src/renderer/src/pages/user/user-content.tsx
+++ b/src/renderer/src/pages/user/user-content.tsx
@@ -1,4 +1,4 @@
-import { UserGame, UserProfile } from "@types";
+import { UserGame, UserProfile, UserRelation } from "@types";
import cn from "classnames";
import * as styles from "./user.css";
import { SPACING_UNIT, vars } from "@renderer/theme.css";
@@ -45,8 +45,8 @@ export function UserContent({
const {
userDetails,
profileBackground,
- friendRequests,
signOut,
+ sendFriendRequest,
fetchFriendRequests,
showFriendsModal,
updateFriendRequestState,
@@ -124,22 +124,47 @@ export function UserContent({
}
}, [profileBackground, isMe]);
+ const handleUndoFriendship = (userRelation: UserRelation) => {
+ const userId =
+ userRelation.AId === userProfile.id ? userRelation.BId : userRelation.AId;
+
+ updateFriendRequestState(userId, "CANCEL")
+ .then(updateUserProfile)
+ .catch(() => {
+ showErrorToast(t("try_again"));
+ });
+ };
+
+ const handleSendFriendRequest = () => {
+ sendFriendRequest(userProfile.id)
+ .then(updateUserProfile)
+ .catch(() => {
+ showErrorToast(t("try_again"));
+ });
+ };
+
const handleCancelFriendRequest = (userId: string) => {
- updateFriendRequestState(userId, "CANCEL").catch(() => {
- showErrorToast("Falha ao cancelar convite");
- });
+ updateFriendRequestState(userId, "CANCEL")
+ .then(updateUserProfile)
+ .catch(() => {
+ showErrorToast(t("try_again"));
+ });
};
const handleAcceptFriendRequest = (userId: string) => {
- updateFriendRequestState(userId, "ACCEPTED").catch(() => {
- showErrorToast("Falha ao aceitar convite");
- });
+ updateFriendRequestState(userId, "ACCEPTED")
+ .then(updateUserProfile)
+ .catch(() => {
+ showErrorToast(t("try_again"));
+ });
};
const handleRefuseFriendRequest = (userId: string) => {
- updateFriendRequestState(userId, "REFUSED").catch(() => {
- showErrorToast("Falha ao recusar convite");
- });
+ updateFriendRequestState(userId, "REFUSED")
+ .then(updateUserProfile)
+ .catch(() => {
+ showErrorToast(t("try_again"));
+ });
};
const getProfileActions = () => {
@@ -157,14 +182,10 @@ export function UserContent({
);
}
- const friendRequest = friendRequests.find(
- (request) => request.id == userProfile.id
- );
-
- if (!friendRequest) {
+ if (userProfile.relation == null) {
return (
<>
-