@@ -216,7 +219,6 @@ export function ProfileContent() {
formatPlayTime,
numberFormatter,
t,
- truncatedGamesList,
usersAreFriends,
isMe,
navigate,
diff --git a/src/renderer/src/pages/profile/profile-hero/profile-hero.tsx b/src/renderer/src/pages/profile/profile-hero/profile-hero.tsx
index d001718a..14dca9d0 100644
--- a/src/renderer/src/pages/profile/profile-hero/profile-hero.tsx
+++ b/src/renderer/src/pages/profile/profile-hero/profile-hero.tsx
@@ -4,8 +4,10 @@ import * as styles from "./profile-hero.css";
import { useCallback, useContext, useMemo, useState } from "react";
import { userProfileContext } from "@renderer/context";
import {
+ BlockedIcon,
CheckCircleFillIcon,
PencilIcon,
+ PersonAddIcon,
PersonIcon,
SignOutIcon,
XCircleFillIcon,
@@ -13,7 +15,12 @@ import {
import { buildGameDetailsPath } from "@renderer/helpers";
import { Button, Link } from "@renderer/components";
import { useTranslation } from "react-i18next";
-import { useDate, useToast, useUserDetails } from "@renderer/hooks";
+import {
+ useAppSelector,
+ useDate,
+ useToast,
+ useUserDetails,
+} from "@renderer/hooks";
import { addSeconds } from "date-fns";
import { useNavigate } from "react-router-dom";
@@ -37,10 +44,11 @@ export function ProfileHero() {
blockUser,
} = useUserDetails();
+ const { gameRunning } = useAppSelector((state) => state.gameRunning);
+
const { isMe, heroBackground, getUserProfile } = context;
const userProfile = context.userProfile!;
- const { currentGame } = userProfile;
const { t } = useTranslation("user_profile");
const { formatDistance } = useDate();
@@ -63,17 +71,17 @@ export function ProfileHero() {
}, [navigate, signOut, showSuccessToast, t]);
const handleFriendAction = useCallback(
- (userId: string, action: FriendAction) => {
+ async (userId: string, action: FriendAction) => {
setIsPerformingAction(true);
try {
if (action === "UNDO_FRIENDSHIP") {
- undoFriendship(userId).then(getUserProfile);
+ await undoFriendship(userId).then(getUserProfile);
return;
}
if (action === "BLOCK") {
- blockUser(userId).then(() => {
+ await blockUser(userId).then(() => {
showSuccessToast(t("user_blocked_successfully"));
navigate(-1);
});
@@ -82,11 +90,11 @@ export function ProfileHero() {
}
if (action === "SEND") {
- sendFriendRequest(userProfile.id).then(getUserProfile);
+ await sendFriendRequest(userProfile.id).then(getUserProfile);
return;
}
- updateFriendRequestState(userId, action).then(getUserProfile);
+ await updateFriendRequestState(userId, action).then(getUserProfile);
} catch (err) {
showErrorToast(t("try_again"));
} finally {
@@ -140,6 +148,7 @@ export function ProfileHero() {
onClick={() => handleFriendAction(userProfile.id, "SEND")}
disabled={isPerformingAction}
>
+
{t("add_friend")}
@@ -148,6 +157,7 @@ export function ProfileHero() {
onClick={() => handleFriendAction(userProfile.id, "BLOCK")}
disabled={isPerformingAction}
>
+
{t("block_user")}
>
@@ -218,6 +228,20 @@ export function ProfileHero() {
}
}, [isMe]);
+ const currentGame = useMemo(() => {
+ if (isMe) {
+ if (gameRunning)
+ return {
+ ...gameRunning,
+ objectId: gameRunning.objectID,
+ sessionDurationInSeconds: gameRunning.sessionDurationInMillis / 1000,
+ };
+
+ return null;
+ }
+ return userProfile.currentGame;
+ }, [isMe, userProfile, gameRunning]);
+
return (
<>
{/*
-
-
diff --git a/src/renderer/src/pages/settings/settings.tsx b/src/renderer/src/pages/settings/settings.tsx
index 776e47ee..be7e9597 100644
--- a/src/renderer/src/pages/settings/settings.tsx
+++ b/src/renderer/src/pages/settings/settings.tsx
@@ -12,17 +12,25 @@ import {
SettingsContextProvider,
} from "@renderer/context";
import { SettingsPrivacy } from "./settings-privacy";
+import { useUserDetails } from "@renderer/hooks";
+import { useMemo } from "react";
export function Settings() {
const { t } = useTranslation("settings");
- const categories = [
- t("general"),
- t("behavior"),
- t("download_sources"),
- "Real-Debrid",
- t("privacy"),
- ];
+ const { userDetails } = useUserDetails();
+
+ const categories = useMemo(() => {
+ const categories = [
+ t("general"),
+ t("behavior"),
+ t("download_sources"),
+ "Real-Debrid",
+ ];
+
+ if (userDetails) return [...categories, t("privacy")];
+ return categories;
+ }, [userDetails, t]);
return (