diff --git a/src/renderer/src/hooks/use-user-details.ts b/src/renderer/src/hooks/use-user-details.ts index 50689aeb..649d24a4 100644 --- a/src/renderer/src/hooks/use-user-details.ts +++ b/src/renderer/src/hooks/use-user-details.ts @@ -70,7 +70,7 @@ export function useUserDetails() { subscription: userDetails?.subscription || null, }); }, - [updateUserDetails, userDetails?.username] + [updateUserDetails, userDetails?.username, userDetails?.subscription] ); const syncFriendRequests = useCallback(async () => { @@ -127,9 +127,9 @@ export function useUserDetails() { const blockUser = (userId: string) => window.electron.blockUser(userId); - const unblockUser = (userId: string) => { - return window.electron.unblockUser(userId); - }; + const unblockUser = (userId: string) => window.electron.unblockUser(userId); + + const hasActiveSubscription = userDetails?.subscription?.status === "active"; return { userDetails, @@ -139,6 +139,7 @@ export function useUserDetails() { friendRequetsModalTab, isFriendsModalVisible, friendModalUserId, + hasActiveSubscription, showFriendsModal, hideFriendsModal, fetchUserDetails, diff --git a/src/renderer/src/main.tsx b/src/renderer/src/main.tsx index bc3522ae..11003295 100644 --- a/src/renderer/src/main.tsx +++ b/src/renderer/src/main.tsx @@ -19,11 +19,10 @@ import { App } from "./app"; import { store } from "./store"; import resources from "@locales"; -import { AchievementNotification } from "./pages/achievement/notification/achievement-notification"; +import { AchievementNotification } from "./pages/achievements/notification/achievement-notification"; import "./workers"; import { RepacksContextProvider } from "./context"; -import { Achievement } from "./pages/achievement/achievements"; import { SuspenseWrapper } from "./components"; const Home = React.lazy(() => import("./pages/home/home")); @@ -35,6 +34,9 @@ const SearchResults = React.lazy(() => import("./pages/home/search-results")); const Settings = React.lazy(() => import("./pages/settings/settings")); const Catalogue = React.lazy(() => import("./pages/catalogue/catalogue")); const Profile = React.lazy(() => import("./pages/profile/profile")); +const Achievements = React.lazy( + () => import("./pages/achievements/achievements") +); Sentry.init({}); @@ -90,7 +92,10 @@ ReactDOM.createRoot(document.getElementById("root")!).render( path="/profile/:userId" element={} /> - + } + /> {({ isLoading, achievements }) => { diff --git a/src/renderer/src/pages/achievement/notification/achievement-notification.css.ts b/src/renderer/src/pages/achievements/notification/achievement-notification.css.ts similarity index 100% rename from src/renderer/src/pages/achievement/notification/achievement-notification.css.ts rename to src/renderer/src/pages/achievements/notification/achievement-notification.css.ts diff --git a/src/renderer/src/pages/achievement/notification/achievement-notification.tsx b/src/renderer/src/pages/achievements/notification/achievement-notification.tsx similarity index 100% rename from src/renderer/src/pages/achievement/notification/achievement-notification.tsx rename to src/renderer/src/pages/achievements/notification/achievement-notification.tsx diff --git a/src/renderer/src/pages/profile/edit-profile-modal/edit-profile-modal.tsx b/src/renderer/src/pages/profile/edit-profile-modal/edit-profile-modal.tsx index cad4ed9e..cc3ed69f 100644 --- a/src/renderer/src/pages/profile/edit-profile-modal/edit-profile-modal.tsx +++ b/src/renderer/src/pages/profile/edit-profile-modal/edit-profile-modal.tsx @@ -11,7 +11,7 @@ import { ModalProps, TextField, } from "@renderer/components"; -import { useAppSelector, useToast, useUserDetails } from "@renderer/hooks"; +import { useToast, useUserDetails } from "@renderer/hooks"; import { SPACING_UNIT } from "@renderer/theme.css"; import { yupResolver } from "@hookform/resolvers/yup"; @@ -51,8 +51,8 @@ export function EditProfileModal( const { getUserProfile } = useContext(userProfileContext); - const { userDetails } = useAppSelector((state) => state.userDetails); - const { fetchUserDetails } = useUserDetails(); + const { userDetails, fetchUserDetails, hasActiveSubscription } = + useUserDetails(); useEffect(() => { if (userDetails) { @@ -112,14 +112,18 @@ export function EditProfileModal( if (filePaths && filePaths.length > 0) { const path = filePaths[0]; - // const { imagePath } = await window.electron - // .processProfileImage(path) - // .catch(() => { - // showErrorToast(t("image_process_failure")); - // return { imagePath: null }; - // }); + if (!hasActiveSubscription) { + const { imagePath } = await window.electron + .processProfileImage(path) + .catch(() => { + showErrorToast(t("image_process_failure")); + return { imagePath: null }; + }); - onChange(path); + onChange(imagePath); + } else { + onChange(path); + } } }; diff --git a/src/renderer/src/pages/profile/upload-background-image-button/upload-background-image-button.tsx b/src/renderer/src/pages/profile/upload-background-image-button/upload-background-image-button.tsx index c777380c..ebb52df3 100644 --- a/src/renderer/src/pages/profile/upload-background-image-button/upload-background-image-button.tsx +++ b/src/renderer/src/pages/profile/upload-background-image-button/upload-background-image-button.tsx @@ -9,6 +9,7 @@ import { useToast, useUserDetails } from "@renderer/hooks"; export function UploadBackgroundImageButton() { const [isUploadingBackgroundImage, setIsUploadingBackgorundImage] = useState(false); + const { hasActiveSubscription } = useUserDetails(); const { isMe, setSelectedBackgroundImage } = useContext(userProfileContext); const { patchUser } = useUserDetails(); @@ -42,7 +43,7 @@ export function UploadBackgroundImageButton() { } }; - if (!isMe) return null; + if (!isMe || !hasActiveSubscription) return null; return (