feat: adjustments

This commit is contained in:
Zamitto 2024-10-19 01:01:14 -03:00
parent 6c6d13e387
commit 584f725eda
2 changed files with 105 additions and 45 deletions

View file

@ -33,11 +33,12 @@ interface AchievementListProps {
otherUser: UserInfo | null; otherUser: UserInfo | null;
} }
interface AchievementPanelProps { interface AchievementSummaryProps {
user: UserInfo; user: UserInfo;
isComparison?: boolean;
} }
function AchievementPanel({ user }: AchievementPanelProps) { function AchievementSummary({ user, isComparison }: AchievementSummaryProps) {
const { userDetails, hasActiveSubscription } = useUserDetails(); const { userDetails, hasActiveSubscription } = useUserDetails();
const userTotalAchievementCount = user.achievements.length; const userTotalAchievementCount = user.achievements.length;
@ -61,8 +62,55 @@ function AchievementPanel({ user }: AchievementPanelProps) {
); );
}; };
if (userDetails?.id == user.userId && !hasActiveSubscription) { if (
return <></>; isComparison &&
userDetails?.id == user.userId &&
!hasActiveSubscription
) {
return (
<div
style={{
display: "flex",
gap: `${SPACING_UNIT * 2}px`,
alignItems: "center",
position: "relative",
padding: `${SPACING_UNIT}px`,
}}
>
<div
style={{
position: "absolute",
zIndex: 2,
inset: 0,
width: "100%",
height: "100%",
background: "rgba(0, 0, 0, 0.7)",
display: "flex",
alignItems: "center",
flexDirection: "row",
gap: `${SPACING_UNIT}px`,
borderRadius: "4px",
justifyContent: "center",
}}
>
<LockIcon size={24} />
<h3>Assine o HYDRA CLOUD para comparar suas conquistas!!!!</h3>
</div>
<div
style={{
display: "flex",
gap: `${SPACING_UNIT * 2}px`,
alignItems: "center",
height: "62px",
position: "relative",
filter: "blur(4px)",
}}
>
{getProfileImage(user)}
<h1 style={{ marginBottom: "8px" }}>{user.displayName}</h1>
</div>
</div>
);
} }
return ( return (
@ -71,6 +119,7 @@ function AchievementPanel({ user }: AchievementPanelProps) {
display: "flex", display: "flex",
gap: `${SPACING_UNIT * 2}px`, gap: `${SPACING_UNIT * 2}px`,
alignItems: "center", alignItems: "center",
padding: `${SPACING_UNIT}px`,
}} }}
> >
{getProfileImage(user)} {getProfileImage(user)}
@ -126,7 +175,7 @@ function AchievementList({ user, otherUser }: AchievementListProps) {
const { t } = useTranslation("achievement"); const { t } = useTranslation("achievement");
const { formatDateTime } = useDate(); const { formatDateTime } = useDate();
const { userDetails } = useUserDetails(); const { hasActiveSubscription } = useUserDetails();
if (!otherUserAchievements || otherUserAchievements.length === 0) { if (!otherUserAchievements || otherUserAchievements.length === 0) {
return ( return (
@ -167,7 +216,12 @@ function AchievementList({ user, otherUser }: AchievementListProps) {
<li <li
key={index} key={index}
className={styles.listItem} className={styles.listItem}
style={{ display: "grid", gridTemplateColumns: "3fr 1fr 1fr" }} style={{
display: "grid",
gridTemplateColumns: hasActiveSubscription
? "3fr 1fr 1fr"
: "3fr 2fr",
}}
> >
<div <div
style={{ style={{
@ -191,6 +245,33 @@ function AchievementList({ user, otherUser }: AchievementListProps) {
</div> </div>
</div> </div>
{hasActiveSubscription ? (
achievements[index].unlocked ? (
<div
style={{
whiteSpace: "nowrap",
display: "flex",
flexDirection: "row",
gap: `${SPACING_UNIT}px`,
justifyContent: "center",
}}
>
<CheckCircleIcon />
<small>{formatDateTime(achievements[index].unlockTime!)}</small>
</div>
) : (
<div
style={{
display: "flex",
padding: `${SPACING_UNIT}px`,
justifyContent: "center",
}}
>
<LockIcon />
</div>
)
) : null}
{otherUserAchievement.unlocked ? ( {otherUserAchievement.unlocked ? (
<div <div
style={{ style={{
@ -215,31 +296,6 @@ function AchievementList({ user, otherUser }: AchievementListProps) {
<LockIcon /> <LockIcon />
</div> </div>
)} )}
{userDetails?.subscription && achievements[index].unlocked ? (
<div
style={{
whiteSpace: "nowrap",
display: "flex",
flexDirection: "row",
gap: `${SPACING_UNIT}px`,
justifyContent: "center",
}}
>
<CheckCircleIcon />
<small>{formatDateTime(achievements[index].unlockTime!)}</small>
</div>
) : (
<div
style={{
display: "flex",
padding: `${SPACING_UNIT}px`,
justifyContent: "center",
}}
>
<LockIcon />
</div>
)}
</li> </li>
))} ))}
</ul> </ul>
@ -270,7 +326,7 @@ export function AchievementsContent({ otherUser }: AchievementsContentProps) {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
const { userDetails } = useUserDetails(); const { userDetails, hasActiveSubscription } = useUserDetails();
useEffect(() => { useEffect(() => {
if (gameTitle) { if (gameTitle) {
@ -359,19 +415,20 @@ export function AchievementsContent({ otherUser }: AchievementsContentProps) {
display: "flex", display: "flex",
flexDirection: "column", flexDirection: "column",
width: "100%", width: "100%",
gap: `${SPACING_UNIT * 2}px`, gap: `${SPACING_UNIT}px`,
padding: `${SPACING_UNIT * 2}px`, padding: `${SPACING_UNIT}px`,
}} }}
> >
<AchievementPanel <AchievementSummary
user={{ user={{
...userDetails, ...userDetails,
userId: userDetails.id, userId: userDetails.id,
achievements: sortedAchievements, achievements: sortedAchievements,
}} }}
isComparison={otherUser !== null}
/> />
{otherUser && <AchievementPanel user={otherUser} />} {otherUser && <AchievementSummary user={otherUser} />}
</div> </div>
</div> </div>
@ -380,22 +437,26 @@ export function AchievementsContent({ otherUser }: AchievementsContentProps) {
<div <div
style={{ style={{
display: "grid", display: "grid",
gridTemplateColumns: "3fr 1fr 1fr", gridTemplateColumns: hasActiveSubscription
? "3fr 1fr 1fr"
: "3fr 2fr",
gap: `${SPACING_UNIT * 2}px`, gap: `${SPACING_UNIT * 2}px`,
padding: `${SPACING_UNIT}px ${SPACING_UNIT * 3}px`, padding: `${SPACING_UNIT}px ${SPACING_UNIT * 3}px`,
}} }}
> >
<div></div> <div></div>
{hasActiveSubscription && (
<div style={{ display: "flex", justifyContent: "center" }}>
{getProfileImage({
...userDetails,
userId: userDetails.id,
achievements: sortedAchievements,
})}
</div>
)}
<div style={{ display: "flex", justifyContent: "center" }}> <div style={{ display: "flex", justifyContent: "center" }}>
{getProfileImage(otherUser)} {getProfileImage(otherUser)}
</div> </div>
<div style={{ display: "flex", justifyContent: "center" }}>
{getProfileImage({
...userDetails,
userId: userDetails.id,
achievements: sortedAchievements,
})}
</div>
</div> </div>
</div> </div>
)} )}

View file

@ -52,7 +52,6 @@ export const heroImage = style({
export const heroContent = style({ export const heroContent = style({
padding: `${SPACING_UNIT * 2}px`, padding: `${SPACING_UNIT * 2}px`,
height: "100%",
width: "100%", width: "100%",
display: "flex", display: "flex",
justifyContent: "space-between", justifyContent: "space-between",