fix: buttons on friend request item

This commit is contained in:
Zamitto 2024-07-10 22:04:28 -03:00
parent 6f70b529a2
commit 22b66149b3
4 changed files with 143 additions and 154 deletions

View file

@ -25,13 +25,13 @@ export const UserAddFriendsModal = ({
const { sendFriendRequest, updateFriendRequestState, friendRequests } = const { sendFriendRequest, updateFriendRequestState, friendRequests } =
useUserDetails(); useUserDetails();
const { showSuccessToast, showErrorToast } = useToast(); const { showErrorToast } = useToast();
const handleClickAddFriend = () => { const handleClickAddFriend = () => {
setIsAddingFriend(true); setIsAddingFriend(true);
sendFriendRequest(friendCode) sendFriendRequest(friendCode)
.then(() => { .then(() => {
showSuccessToast(t("friend_request_sent")); setFriendCode("");
}) })
.catch(() => { .catch(() => {
showErrorToast("Não foi possível enviar o pedido de amizade"); showErrorToast("Não foi possível enviar o pedido de amizade");
@ -41,64 +41,41 @@ export const UserAddFriendsModal = ({
}); });
}; };
const handleClickFriend = (userId: string) => { const handleClickRequest = (userId: string) => {
//onClose(); resetAndClose();
//navigate(`/user/${userId}`); navigate(`/user/${userId}`);
}; };
const handleClickSeeProfile = () => { const handleClickSeeProfile = () => {
onClose(); resetAndClose();
navigate(`/user/${friendCode}`); navigate(`/user/${friendCode}`);
}; };
const handleClickCancelFriendRequest = ( const handleClickCancelFriendRequest = (userId: string) => {
event: React.MouseEvent, updateFriendRequestState(userId, "CANCEL").catch(() => {
userId: string
) => {
updateFriendRequestState(userId, "CANCEL")
.then(() => {
console.log("sucesso");
})
.catch(() => {
showErrorToast("Falha ao cancelar convite"); showErrorToast("Falha ao cancelar convite");
}); });
}; };
const handleClickAcceptFriendRequest = ( const handleClickAcceptFriendRequest = (userId: string) => {
event: React.MouseEvent,
userId: string
) => {
updateFriendRequestState(userId, "ACCEPTED").catch(() => { updateFriendRequestState(userId, "ACCEPTED").catch(() => {
showErrorToast("Falha ao aceitar convite"); showErrorToast("Falha ao aceitar convite");
}); });
}; };
const handleClickRefuseFriendRequest = ( const handleClickRefuseFriendRequest = (userId: string) => {
event: React.MouseEvent,
userId: string
) => {
event.preventDefault();
updateFriendRequestState(userId, "REFUSED").catch(() => { updateFriendRequestState(userId, "REFUSED").catch(() => {
showErrorToast("Falha ao recusar convite"); showErrorToast("Falha ao recusar convite");
}); });
}; };
const resetModal = () => { const resetAndClose = () => {
setFriendCode(""); setFriendCode("");
};
const cleanFormAndClose = () => {
resetModal();
onClose(); onClose();
}; };
return ( return (
<> <Modal visible={visible} title={t("add_friends")} onClose={resetAndClose}>
<Modal
visible={visible}
title={t("add_friends")}
onClose={cleanFormAndClose}
>
<div <div
style={{ style={{
display: "flex", display: "flex",
@ -161,13 +138,12 @@ export const UserAddFriendsModal = ({
onClickAcceptRequest={handleClickAcceptFriendRequest} onClickAcceptRequest={handleClickAcceptFriendRequest}
onClickCancelRequest={handleClickCancelFriendRequest} onClickCancelRequest={handleClickCancelFriendRequest}
onClickRefuseRequest={handleClickRefuseFriendRequest} onClickRefuseRequest={handleClickRefuseFriendRequest}
onClickRequest={handleClickFriend} onClickRequest={handleClickRequest}
/> />
); );
})} })}
</div> </div>
</div> </div>
</Modal> </Modal>
</>
); );
}; };

View file

@ -375,7 +375,7 @@ export function UserContent({
<button <button
key={friend.id} key={friend.id}
className={cn( className={cn(
styles.friendListItem, styles.friendListContainer,
styles.profileContentBox styles.profileContentBox
)} )}
onClick={() => handleOnClickFriend(friend.id)} onClick={() => handleOnClickFriend(friend.id)}

View file

@ -11,9 +11,9 @@ export interface UserFriendRequestProps {
profileImageUrl: string | null; profileImageUrl: string | null;
displayName: string; displayName: string;
isRequestSent: boolean; isRequestSent: boolean;
onClickCancelRequest: (event: React.MouseEvent, userId: string) => void; onClickCancelRequest: (userId: string) => void;
onClickAcceptRequest: (event: React.MouseEvent, userId: string) => void; onClickAcceptRequest: (userId: string) => void;
onClickRefuseRequest: (event: React.MouseEvent, userId: string) => void; onClickRefuseRequest: (userId: string) => void;
onClickRequest: (userId: string) => void; onClickRequest: (userId: string) => void;
} }
@ -28,9 +28,10 @@ export const UserFriendRequest = ({
onClickRequest, onClickRequest,
}: UserFriendRequestProps) => { }: UserFriendRequestProps) => {
return ( return (
<div className={cn(styles.friendListContainer, styles.profileContentBox)}>
<button <button
type="button" type="button"
className={cn(styles.friendListItem, styles.profileContentBox)} className={styles.friendListButton}
onClick={() => onClickRequest(userId)} onClick={() => onClickRequest(userId)}
> >
<div className={styles.friendAvatarContainer}> <div className={styles.friendAvatarContainer}>
@ -56,10 +57,13 @@ export const UserFriendRequest = ({
<p className={styles.friendListDisplayName}>{displayName}</p> <p className={styles.friendListDisplayName}>{displayName}</p>
<small>{isRequestSent ? "Pedido enviado" : "Pedido recebido"}</small> <small>{isRequestSent ? "Pedido enviado" : "Pedido recebido"}</small>
</div> </div>
</button>
<div style={{ position: "absolute", right: "8px" }}>
{isRequestSent ? ( {isRequestSent ? (
<button <button
className={styles.cancelRequestButton} className={styles.cancelRequestButton}
onClick={(e) => onClickCancelRequest(e, userId)} onClick={() => onClickCancelRequest(userId)}
> >
<XCircleIcon size={28} /> <XCircleIcon size={28} />
</button> </button>
@ -67,18 +71,19 @@ export const UserFriendRequest = ({
<> <>
<button <button
className={styles.acceptRequestButton} className={styles.acceptRequestButton}
onClick={(e) => onClickAcceptRequest(e, userId)} onClick={() => onClickAcceptRequest(userId)}
> >
<CheckCircleIcon size={28} /> <CheckCircleIcon size={28} />
</button> </button>
<button <button
className={styles.cancelRequestButton} className={styles.cancelRequestButton}
onClick={(e) => onClickRefuseRequest(e, userId)} onClick={() => onClickRefuseRequest(userId)}
> >
<XCircleIcon size={28} /> <XCircleIcon size={28} />
</button> </button>
</> </>
)} )}
</button> </div>
</div>
); );
}; };

View file

@ -178,21 +178,29 @@ export const gameListItem = style({
}, },
}); });
export const friendListItem = style({ export const friendListContainer = style({
color: vars.color.body,
display: "flex",
flexDirection: "row",
gap: `${SPACING_UNIT + SPACING_UNIT / 2}px`,
width: "100%", width: "100%",
height: "54px", height: "54px",
padding: "0 8px",
transition: "all ease 0.2s", transition: "all ease 0.2s",
cursor: "pointer", position: "relative",
":hover": { ":hover": {
backgroundColor: "rgba(255, 255, 255, 0.15)", backgroundColor: "rgba(255, 255, 255, 0.15)",
}, },
}); });
export const friendListButton = style({
display: "flex",
alignItems: "center",
position: "absolute",
cursor: "pointer",
height: "100%",
width: "100%",
flexDirection: "row",
color: vars.color.body,
gap: `${SPACING_UNIT + SPACING_UNIT / 2}px`,
padding: "0 8px",
});
export const gameInformation = style({ export const gameInformation = style({
display: "flex", display: "flex",
flexDirection: "column", flexDirection: "column",