Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle Rewards Points Optimization and Fixes #1932

Merged
merged 6 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/common/Common.baseLogos.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ export const walletTrackerLogo =

export const shapeShiftLogo =
'data:image/jpeg;base64,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';

export const revokeLogo =
'data:image/jpeg;base64,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';
15 changes: 9 additions & 6 deletions src/modules/rewards/components/BonusActivitiesItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { FC } from 'react';

// hooks
import { Activity, useGetRewardsActivity } from 'queries';
import { Activity, StakeActivityResponse, UsersActivity } from 'queries';
import { useAccount } from 'hooks';

// components
Expand All @@ -17,6 +17,9 @@ export type BonusActivitiesItemProps = {
isLoadingItem: boolean;
setErrorMessage: (errorMessage: string) => void;
isLocked: boolean;
allUsersActivity: StakeActivityResponse;
isAllActivitiesLoading: boolean;
refetchActivity: () => void;
};

const BonusActivitiesItem: FC<BonusActivitiesItemProps> = ({
Expand All @@ -25,12 +28,12 @@ const BonusActivitiesItem: FC<BonusActivitiesItemProps> = ({
isLoadingItem,
setErrorMessage,
isLocked,
allUsersActivity,
isAllActivitiesLoading,
refetchActivity,
}) => {
const {
data: usersSingleActivity,
isLoading,
refetch: refetchActivity,
} = useGetRewardsActivity({ userId, activityId: activity.id }, { enabled: !!userId });
const usersSingleActivity = allUsersActivity?.[activity?.activityType] as UsersActivity;
const isLoading = isAllActivitiesLoading;

const { isWalletConnected } = useAccount();

Expand Down
27 changes: 26 additions & 1 deletion src/modules/rewards/components/BonusActivitiesSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@ import { FC, useState } from 'react';
import { css } from 'styled-components';

// hooks
import { useGetRewardsActivities, useGetUserRewardsDetails } from 'queries';
import {
StakeActivityResponse,
useGetRewardsActivities,
useGetRewardsActivity,
useGetUserRewardsDetails,
} from 'queries';
import { useAccount } from 'hooks';
import { useRewardsContext } from 'contexts/RewardsContext';

Expand Down Expand Up @@ -41,6 +46,23 @@ const BonusActivities: FC<BonusActivitiesSectionProps> = () => {

const { isLocked } = useRewardsContext();

// Combine all activities into a single array
const allActivities = [...bonusActivities];

// Extract the `activityType` from each activity and filter out any undefined values
const activityTypes = allActivities
.map((activity) => activity.activityType) // Extract `activityType`
.filter(Boolean); // Remove undefined/null values

const {
data: allUsersActivity,
isLoading: isAllActivitiesLoading,
refetch: refetchActivity,
} = useGetRewardsActivity(
{ userId: userDetails?.userId as string, activityTypes: activityTypes },
{ enabled: !!userDetails?.userId && activityTypes.length > 0 }
);

return (
<Box
display="flex"
Expand Down Expand Up @@ -82,6 +104,9 @@ const BonusActivities: FC<BonusActivitiesSectionProps> = () => {
isLoadingItem={isLoading}
setErrorMessage={setErrorMessage}
isLocked={isLocked}
allUsersActivity={allUsersActivity as StakeActivityResponse}
isAllActivitiesLoading={isAllActivitiesLoading}
refetchActivity={refetchActivity}
/>
))}
</Box>
Expand Down
17 changes: 11 additions & 6 deletions src/modules/rewards/components/DailyRewardsSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,19 @@ export type DailyRewardsSectionProps = {};
const DailyRewardsSection: FC<DailyRewardsSectionProps> = () => {
const [errorMessage, setErrorMessage] = useState('');

const { activeItem, activeDay, isActivityDisabled, isLoading, userDetails, dailyRewardsActivities, handleCheckIn } =
useDailyRewards();
const {
activeItem,
activeDay,
isActivityDisabled,
isLoading,
userDetails,
dailyRewardsActivities,
refetchSendActivities,
} = useDailyRewards();

const { isLocked } = useRewardsContext();

const isDailyRewardClaimed = useMemo(() => {
return isActivityDisabled && activeDay > 1 && userDetails;
}, [isActivityDisabled, activeDay, userDetails]);
const isDailyRewardClaimed = isActivityDisabled && activeDay > 1 && userDetails;

const displayDailyRewards = useMemo(() => {
return !isActivityDisabled && activeDay > 0 && activeItem && userDetails;
Expand Down Expand Up @@ -85,7 +90,7 @@ const DailyRewardsSection: FC<DailyRewardsSectionProps> = () => {
activityType={activeItem?.activityType as ActvityType}
userId={userDetails?.userId as string}
activityTypeId={activeItem?.id as string}
refetchActivity={() => handleCheckIn()}
refetchActivity={() => refetchSendActivities()}
setErrorMessage={setErrorMessage}
isLoadingActivity={false}
label="Check In"
Expand Down
34 changes: 33 additions & 1 deletion src/modules/rewards/components/RewardsActivitiesList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@ import { css } from 'styled-components';
import { Box, Lock, Text } from 'blocks';
import { useAccount } from 'hooks';
import { walletToCAIP10 } from 'helpers/w2w';
import { Activity, useGetRewardsActivities, useGetUserRewardsDetails } from 'queries';
import {
Activity,
StakeActivityResponse,
useGetRewardsActivities,
useGetRewardsActivity,
useGetUserRewardsDetails,
} from 'queries';
import { useRewardsContext } from 'contexts/RewardsContext';

import { RewardsActivitiesListItem } from './RewardsActivitiesListItem';
Expand Down Expand Up @@ -43,6 +49,23 @@ const RewardsActivitiesList: FC<RewardActivitiesProps> = () => {

const { isLocked } = useRewardsContext();

// Combine all activities into a single array
const allActivities = [...socialActivities, ...platformRewardActivities, ...channelSubscriptionActivities];

// Extract the `activityType` from each activity and filter out any undefined values
const activityTypes = allActivities
.map((activity) => activity.activityType) // Extract `activityType`
.filter(Boolean); // Remove undefined/null values

const {
data: allUsersActivity,
isLoading: isAllActivitiesLoading,
refetch: refetchActivity,
} = useGetRewardsActivity(
{ userId: userDetails?.userId as string, activityTypes: activityTypes },
{ enabled: !!userDetails?.userId && activityTypes.length > 0 }
);

return (
<Box
display="flex"
Expand All @@ -57,6 +80,9 @@ const RewardsActivitiesList: FC<RewardActivitiesProps> = () => {
activity={activity}
isLoadingItem={isLoading}
isLocked={isLocked}
allUsersActivity={allUsersActivity as StakeActivityResponse}
isAllActivitiesLoading={isAllActivitiesLoading}
refetchActivity={refetchActivity}
/>
))}
{(isLocked || !isWalletConnected) && (
Expand Down Expand Up @@ -103,6 +129,9 @@ const RewardsActivitiesList: FC<RewardActivitiesProps> = () => {
activity={activity}
isLoadingItem={isLoading}
isLocked={isLocked}
allUsersActivity={allUsersActivity as StakeActivityResponse}
isAllActivitiesLoading={isAllActivitiesLoading}
refetchActivity={refetchActivity}
/>
))}

Expand All @@ -114,6 +143,9 @@ const RewardsActivitiesList: FC<RewardActivitiesProps> = () => {
activity={activity}
isLoadingItem={isLoading}
isLocked={isLocked}
allUsersActivity={allUsersActivity as StakeActivityResponse}
isAllActivitiesLoading={isAllActivitiesLoading}
refetchActivity={refetchActivity}
/>
))}
</Box>
Expand Down
28 changes: 18 additions & 10 deletions src/modules/rewards/components/RewardsActivitiesListItem.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { FC, useEffect, useMemo, useState } from 'react';

import { Activity, useGetRewardsActivity } from 'queries';
import { Activity, StakeActivityResponse, UsersActivity } from 'queries';
import { useAccount } from 'hooks';

import {
Expand All @@ -27,6 +27,9 @@ export type RewardActivitiesListItemProps = {
activity: Activity;
isLoadingItem: boolean;
isLocked: boolean;
allUsersActivity: StakeActivityResponse;
isAllActivitiesLoading: boolean;
refetchActivity: () => void;
};

const getUpdatedExpiryTime = (timestamp: number) => {
Expand All @@ -46,16 +49,16 @@ const RewardsActivitiesListItem: FC<RewardActivitiesListItemProps> = ({
activity,
isLoadingItem,
isLocked,
allUsersActivity,
isAllActivitiesLoading,
refetchActivity,
}) => {
const { isWalletConnected } = useAccount();
const {
data: usersSingleActivity,
isLoading,
refetch: refetchActivity,
} = useGetRewardsActivity({ userId, activityId: activity.id }, { enabled: !!userId });
const usersSingleActivity = allUsersActivity?.[activity?.activityType] as UsersActivity;
const isLoading = isAllActivitiesLoading;

const [errorMessage, setErrorMessage] = useState('');
const { handleLockStatus } = useLockedStatus();
const { refetchRecentActivities, getLockStatus, statusRecentActivities } = useLockedStatus();

const isRewardsLocked = useMemo(() => {
return (
Expand All @@ -68,12 +71,17 @@ const RewardsActivitiesListItem: FC<RewardActivitiesListItemProps> = ({
const isNotDiscordOrTwitter =
activity.activityType !== 'follow_push_on_discord' && activity.activityType !== 'follow_push_on_twitter';

const updateActivities = () => {
refetchActivity();
refetchRecentActivities();
};

// if activityType is twitter or discord, then re-call check lock status fn
useEffect(() => {
if (activity.activityType == 'follow_push_on_discord' || activity.activityType == 'follow_push_on_twitter') {
handleLockStatus();
getLockStatus();
}
}, [usersSingleActivity?.status, activity.activityType]);
}, [usersSingleActivity?.status, activity.activityType, statusRecentActivities]);

return (
<Skeleton isLoading={isLoadingItem}>
Expand Down Expand Up @@ -247,7 +255,7 @@ const RewardsActivitiesListItem: FC<RewardActivitiesListItemProps> = ({
userId={userId}
activityTypeId={activity.id}
activityType={activity.activityType}
refetchActivity={refetchActivity}
refetchActivity={() => updateActivities()}
setErrorMessage={setErrorMessage}
usersSingleActivity={usersSingleActivity}
isLoadingActivity={isLoading}
Expand Down
13 changes: 12 additions & 1 deletion src/modules/rewards/components/RewardsActivityIcon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import {
PushAlpha,
CyberLogoRewards,
} from 'blocks';
import { quickSwapLogo, priceTrackerLogo, walletTrackerLogo, shapeShiftLogo } from 'common';
import { quickSwapLogo, priceTrackerLogo, walletTrackerLogo, shapeShiftLogo, revokeLogo } from 'common';
import { ActvityType } from 'queries';

type RewardsActivityIconProp = {
Expand Down Expand Up @@ -217,6 +217,17 @@ const RewardsActivityIcon: FC<RewardsActivityIconProp> = ({ type }) => {
);
}

if (type === 'channel_specific_subscriptions:REVOKE_NOTIFICATIONS_CHANNEL') {
return (
<img
width={48}
height={48}
src={revokeLogo}
style={{ borderRadius: 'var(--radius-round)' }}
/>
);
}

if (type === 'stake_1_uni_v2_lp_epoch' || type === 'stake_1k_push_epoch') {
return (
<StakePushGreyCoin
Expand Down
Loading
Loading