Skip to content

Commit

Permalink
refactor: remove quest tracking (#313)
Browse files Browse the repository at this point in the history
  • Loading branch information
kieranroneill authored Sep 17, 2024
1 parent 04efc6e commit f3c59e5
Show file tree
Hide file tree
Showing 6 changed files with 4 additions and 271 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,6 @@ import {
useSelectLogger,
} from '@extension/selectors';

// services
import QuestsService from '@extension/services/QuestsService';

// theme
import { theme } from '@extension/theme';

Expand Down Expand Up @@ -158,13 +155,6 @@ const ARC0300AccountImportModalContent: FC<
})
);

// track the action
await new QuestsService({
logger,
}).importAccountViaQRCodeQuest(
convertPublicKeyToAVMAddress(_accounts[0].publicKey)
);

// go to the account and the assets tab
dispatch(
saveActiveAccountDetails({
Expand Down
56 changes: 4 additions & 52 deletions src/extension/components/NFTsTab/NFTsTab.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Spacer, TabPanel, VStack } from '@chakra-ui/react';
import React, { type FC, type ReactNode, useEffect } from 'react';
import React, { type FC, type ReactNode } from 'react';
import { useTranslation } from 'react-i18next';

// components
Expand All @@ -8,43 +8,28 @@ import EmptyState from '@extension/components/EmptyState';
import ScrollableContainer from '@extension/components/ScrollableContainer';
import NFTsTabARC0072AssetItem from './NFTsTabARC0072AssetItem';

// constants
import { ACCOUNT_PAGE_TAB_CONTENT_HEIGHT } from '@extension/constants';

// hooks
import useAccountInformation from '@extension/hooks/useAccountInformation';
import usePrevious from '@extension/hooks/usePrevious';

// selectors
import {
useSelectARC0072AssetsFetching,
useSelectLogger,
useSelectSettingsSelectedNetwork,
} from '@extension/selectors';

// services
import QuestsService from '@extension/services/QuestsService';

// types
import type {
IAccountInformation,
IARC0072AssetHolding,
INetwork,
} from '@extension/types';
import type { INFTsTabProps } from './types';

// utils
import convertPublicKeyToAVMAddress from '@extension/utils/convertPublicKeyToAVMAddress';
import { ACCOUNT_PAGE_TAB_CONTENT_HEIGHT } from '@extension/constants';

const NFTsTab: FC<INFTsTabProps> = ({ account }) => {
const { t } = useTranslation();
// selectors
const fetchingARC0072Assets = useSelectARC0072AssetsFetching();
const logger = useSelectLogger();
const selectedNetwork = useSelectSettingsSelectedNetwork();
// hooks
const accountInformation = useAccountInformation(account.id);
const previousARC0027AssetHoldings = usePrevious<
IARC0072AssetHolding[] | null
>(accountInformation?.arc0072AssetHoldings || null);
// renders
const renderContent = () => {
let assetNodes: ReactNode[] = [];
Expand Down Expand Up @@ -95,39 +80,6 @@ const NFTsTab: FC<INFTsTabProps> = ({ account }) => {
);
};

// check if there are new arc-0072 assets
useEffect(() => {
let questsService: QuestsService;
let newARC0072AssetHoldings: IARC0072AssetHolding[];

if (
previousARC0027AssetHoldings &&
accountInformation?.arc0072AssetHoldings &&
selectedNetwork
) {
questsService = new QuestsService({
logger,
});
newARC0072AssetHoldings = accountInformation.arc0072AssetHoldings.filter(
(arc0072AssetHolding) =>
!previousARC0027AssetHoldings.find(
(value) => value.id === arc0072AssetHolding.id
)
);

// if there are new assets acquired, track an action for each new asset
newARC0072AssetHoldings.forEach(({ id }) =>
questsService.acquireARC0072Quest(
convertPublicKeyToAVMAddress(account.publicKey),
{
appID: id,
genesisHash: selectedNetwork.genesisHash,
}
)
);
}
}, [accountInformation?.arc0072AssetHoldings]);

return (
<TabPanel
height={ACCOUNT_PAGE_TAB_CONTENT_HEIGHT}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ import { create as createNotification } from '@extension/features/notifications'
import useDefaultTextColor from '@extension/hooks/useDefaultTextColor';
import usePrimaryColor from '@extension/hooks/usePrimaryColor';
import usePrimaryColorScheme from '@extension/hooks/usePrimaryColorScheme';
import useIsNewSelectedAsset from './hooks/useIsNewSelectedAsset';

// selectors
import {
Expand All @@ -59,17 +58,12 @@ import {
useSelectAddAssetsConfirming,
useSelectAddAssetsFetching,
useSelectAddAssetsSelectedAsset,
useSelectLogger,
useSelectSettingsSelectedNetwork,
useSelectSettingsPreferredBlockExplorer,
} from '@extension/selectors';

// services
import AccountService from '@extension/services/AccountService';
import PrivateKeyService from '@extension/services/PrivateKeyService';
import QuestsService, {
QuestNameEnum,
} from '@extension/services/QuestsService';

// theme
import { theme } from '@extension/theme';
Expand All @@ -87,7 +81,6 @@ import type {

// utils
import convertGenesisHashToHex from '@extension/utils/convertGenesisHashToHex';
import convertPublicKeyToAVMAddress from '@extension/utils/convertPublicKeyToAVMAddress';
import isNumericString from '@extension/utils/isNumericString';
import isReKeyedAuthAccountAvailable from '@extension/utils/isReKeyedAuthAccountAvailable';

Expand All @@ -102,12 +95,10 @@ const AddAssetsForWatchAccountModal: FC<IModalProps> = ({ onClose }) => {
const confirming = useSelectAddAssetsConfirming();
const explorer = useSelectSettingsPreferredBlockExplorer();
const fetching = useSelectAddAssetsFetching();
const logger = useSelectLogger();
const selectedNetwork = useSelectSettingsSelectedNetwork();
const selectedAsset = useSelectAddAssetsSelectedAsset();
// hooks
const defaultTextColor = useDefaultTextColor();
const isNewSelectedAsset = useIsNewSelectedAsset(selectedAsset);
const primaryColor = usePrimaryColor();
const primaryColorScheme = usePrimaryColorScheme();
// state
Expand Down Expand Up @@ -144,10 +135,6 @@ const AddAssetsForWatchAccountModal: FC<IModalProps> = ({ onClose }) => {
}, [account, accounts, selectedNetwork]);
// handlers
const handleAddARC0200AssetClick = async () => {
let hasQuestBeenCompletedToday: boolean = false;
let questsService: QuestsService;
let questsSent: boolean = false;

if (
!selectedNetwork ||
!account ||
Expand All @@ -168,38 +155,6 @@ const AddAssetsForWatchAccountModal: FC<IModalProps> = ({ onClose }) => {
})
).unwrap();

questsService = new QuestsService({
logger,
});
hasQuestBeenCompletedToday =
await questsService.hasQuestBeenCompletedTodayByName(
QuestNameEnum.AddARC0200AssetAction
);

// track the action if this is a new asset
if (isNewSelectedAsset) {
questsSent = await questsService.addARC0200AssetQuest(
convertPublicKeyToAVMAddress(
PrivateKeyService.decode(account.publicKey)
),
{
appID: selectedAsset.id,
genesisHash: selectedNetwork.genesisHash,
}
);
}

// if the quest has not been completed today (since 00:00 UTC), show a quest notification
if (questsSent && !hasQuestBeenCompletedToday) {
dispatch(
createNotification({
description: t<string>('captions.questComplete'),
title: t<string>('headings.congratulations'),
type: 'achievement',
})
);
}

dispatch(
createNotification({
title: t<string>('headings.addedAsset', {
Expand Down
82 changes: 0 additions & 82 deletions src/extension/modals/AddAssetsModal/AddAssetsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import { useDispatch } from 'react-redux';
// components
import Button from '@extension/components/Button';
import IconButton from '@extension/components/IconButton';
import Label from '@extension/components/Label';
import AddAssetsARC0200AssetItem from './AddAssetsARC0200AssetItem';
import AddAssetsARC0200AssetSummaryModalContent from './AddAssetsARC0200AssetSummaryModalContent';
import AddAssetsConfirmingModalContent from './AddAssetsConfirmingModalContent';
Expand Down Expand Up @@ -71,7 +70,6 @@ import { create as createNotification } from '@extension/features/notifications'
import useDefaultTextColor from '@extension/hooks/useDefaultTextColor';
import usePrimaryColor from '@extension/hooks/usePrimaryColor';
import usePrimaryColorScheme from '@extension/hooks/usePrimaryColorScheme';
import useIsNewSelectedAsset from './hooks/useIsNewSelectedAsset';

// modals
import AuthenticationModal from '@extension/modals/AuthenticationModal';
Expand All @@ -85,17 +83,12 @@ import {
useSelectAddAssetsFetching,
useSelectAddAssetsSelectedAsset,
useSelectAddAssetsStandardAssets,
useSelectLogger,
useSelectSettingsPreferredBlockExplorer,
useSelectSettingsSelectedNetwork,
} from '@extension/selectors';

// services
import AccountService from '@extension/services/AccountService';
import PrivateKeyService from '@extension/services/PrivateKeyService';
import QuestsService, {
QuestNameEnum,
} from '@extension/services/QuestsService';

// theme
import { theme } from '@extension/theme';
Expand All @@ -115,7 +108,6 @@ import type {

// utils
import convertGenesisHashToHex from '@extension/utils/convertGenesisHashToHex';
import convertPublicKeyToAVMAddress from '@extension/utils/convertPublicKeyToAVMAddress';
import isNumericString from '@extension/utils/isNumericString';
import isReKeyedAuthAccountAvailable from '@extension/utils/isReKeyedAuthAccountAvailable';

Expand All @@ -135,13 +127,11 @@ const AddAssetsModal: FC<IModalProps> = ({ onClose }) => {
const confirming = useSelectAddAssetsConfirming();
const explorer = useSelectSettingsPreferredBlockExplorer();
const fetching = useSelectAddAssetsFetching();
const logger = useSelectLogger();
const selectedNetwork = useSelectSettingsSelectedNetwork();
const selectedAsset = useSelectAddAssetsSelectedAsset();
const standardAssets = useSelectAddAssetsStandardAssets();
// hooks
const defaultTextColor = useDefaultTextColor();
const isNewSelectedAsset = useIsNewSelectedAsset(selectedAsset);
const isOpen = useMemo<boolean>(() => {
let accountInformation: IAccountInformation | null;

Expand Down Expand Up @@ -185,10 +175,6 @@ const AddAssetsModal: FC<IModalProps> = ({ onClose }) => {
const allAssets = [...arc0200Assets, ...standardAssets];
// handlers
const handleAddARC0200AssetClick = async () => {
let hasQuestBeenCompletedToday: boolean = false;
let questsService: QuestsService;
let questsSent: boolean = false;

if (
!selectedNetwork ||
!account ||
Expand All @@ -209,38 +195,6 @@ const AddAssetsModal: FC<IModalProps> = ({ onClose }) => {
})
).unwrap();

questsService = new QuestsService({
logger,
});
hasQuestBeenCompletedToday =
await questsService.hasQuestBeenCompletedTodayByName(
QuestNameEnum.AddARC0200AssetAction
);

// track the action if this is a new asset
if (isNewSelectedAsset) {
questsSent = await questsService.addARC0200AssetQuest(
convertPublicKeyToAVMAddress(
PrivateKeyService.decode(account.publicKey)
),
{
appID: selectedAsset.id,
genesisHash: selectedNetwork.genesisHash,
}
);
}

// if the quest has not been completed today (since 00:00 UTC), show a quest notification
if (questsSent && !hasQuestBeenCompletedToday) {
dispatch(
createNotification({
description: t<string>('captions.questComplete'),
title: t<string>('headings.congratulations'),
type: 'achievement',
})
);
}

dispatch(
createNotification({
title: t<string>('headings.addedAsset', {
Expand Down Expand Up @@ -284,10 +238,6 @@ const AddAssetsModal: FC<IModalProps> = ({ onClose }) => {
const handleOnAuthenticationModalConfirm = async (
result: TEncryptionCredentials
) => {
let hasQuestBeenCompletedToday: boolean = false;
let questsSent: boolean = false;
let questsService: QuestsService;

if (
!selectedNetwork ||
!account ||
Expand All @@ -309,38 +259,6 @@ const AddAssetsModal: FC<IModalProps> = ({ onClose }) => {
})
).unwrap();

questsService = new QuestsService({
logger,
});
hasQuestBeenCompletedToday =
await questsService.hasQuestBeenCompletedTodayByName(
QuestNameEnum.AddStandardAssetAction
);

// track the action if this is a new asset
if (isNewSelectedAsset) {
questsSent = await questsService.addStandardAssetQuest(
convertPublicKeyToAVMAddress(
PrivateKeyService.decode(account.publicKey)
),
{
assetID: selectedAsset.id,
genesisHash: selectedNetwork.genesisHash,
}
);
}

// if the quest has not been completed today (since 00:00 UTC), show a quest notification
if (questsSent && !hasQuestBeenCompletedToday) {
dispatch(
createNotification({
description: t<string>('captions.questComplete'),
title: t<string>('headings.congratulations'),
type: 'achievement',
})
);
}

dispatch(
createNotification({
title: t<string>('headings.addedAsset', {
Expand Down
Loading

0 comments on commit f3c59e5

Please sign in to comment.