Skip to content

Commit 7fc02a7

Browse files
committed
add prev and next click tracking on steps
1 parent bdf6b8e commit 7fc02a7

File tree

5 files changed

+51
-16
lines changed

5 files changed

+51
-16
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export const nftCreationPages = {
2+
"collection-info": "collection-info",
3+
"upload-assets": "upload-assets",
4+
"sales-settings": "sales-settings",
5+
"launch-nft": "launch-nft",
6+
} as const;

apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/collection-info/nft-collection-info-fieldset.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import type { ThirdwebClient } from "thirdweb";
1111
import { SocialUrlsFieldset } from "../../_common/SocialUrls";
1212
import { StepCard } from "../../_common/step-card";
1313
import type { NFTCollectionInfoForm } from "../_common/form";
14+
import { nftCreationPages } from "../_common/pages";
1415

1516
export function NFTCollectionInfoFieldset(props: {
1617
client: ThirdwebClient;
@@ -24,7 +25,7 @@ export function NFTCollectionInfoFieldset(props: {
2425
<form onSubmit={form.handleSubmit(props.onNext)}>
2526
<StepCard
2627
tracking={{
27-
page: "collection-info",
28+
page: nftCreationPages["collection-info"],
2829
contractType: "NFTCollection",
2930
}}
3031
title="Collection Info"

apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/create-nft-page-ui.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
nftCollectionInfoFormSchema,
1717
nftSalesSettingsFormSchema,
1818
} from "./_common/form";
19+
import { nftCreationPages } from "./_common/pages";
1920
import { NFTCollectionInfoFieldset } from "./collection-info/nft-collection-info-fieldset";
2021
import { LaunchNFT } from "./launch/launch-nft";
2122
import { SalesSettings } from "./sales/sales-settings";
@@ -30,9 +31,8 @@ export function CreateNFTPageUI(props: {
3031
teamSlug: string;
3132
projectSlug: string;
3233
}) {
33-
const [step, setStep] = useState<
34-
"collection-info" | "upload-assets" | "launch" | "sales-settings"
35-
>("collection-info");
34+
const [step, setStep] =
35+
useState<keyof typeof nftCreationPages>("collection-info");
3636

3737
const activeAccount = useActiveAccount();
3838

@@ -54,7 +54,7 @@ export function CreateNFTPageUI(props: {
5454

5555
return (
5656
<div>
57-
{step === "collection-info" && (
57+
{step === nftCreationPages["collection-info"] && (
5858
<NFTCollectionInfoFieldset
5959
onChainUpdated={() => {
6060
// reset price currency to native token when chain is updated
@@ -86,12 +86,12 @@ export function CreateNFTPageUI(props: {
8686
client={props.client}
8787
form={nftCollectionInfoForm}
8888
onNext={() => {
89-
setStep("upload-assets");
89+
setStep(nftCreationPages["upload-assets"]);
9090
}}
9191
/>
9292
)}
9393

94-
{step === "upload-assets" && (
94+
{step === nftCreationPages["upload-assets"] && (
9595
<UploadNFTsFieldset
9696
nftData={nftData}
9797
setNFTData={setNFTData}
@@ -111,15 +111,15 @@ export function CreateNFTPageUI(props: {
111111
form={nftSalesSettingsForm}
112112
client={props.client}
113113
onNext={() => {
114-
setStep("launch");
114+
setStep(nftCreationPages["launch-nft"]);
115115
}}
116116
onPrev={() => {
117-
setStep("upload-assets");
117+
setStep(nftCreationPages["upload-assets"]);
118118
}}
119119
/>
120120
)}
121121

122-
{step === "launch" && (
122+
{step === nftCreationPages["launch-nft"] && (
123123
<LaunchNFT
124124
values={{
125125
...nftCollectionInfoForm.watch(),
@@ -134,7 +134,7 @@ export function CreateNFTPageUI(props: {
134134
: [],
135135
}}
136136
onPrevious={() => {
137-
setStep("sales-settings");
137+
setStep(nftCreationPages["sales-settings"]);
138138
}}
139139
projectSlug={props.projectSlug}
140140
client={props.client}

apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/sales/sales-settings.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type { ThirdwebClient } from "thirdweb";
66
import { SolidityInput } from "../../../../../../../../../../contract-ui/components/solidity-inputs";
77
import { StepCard } from "../../_common/step-card";
88
import type { NFTSalesSettingsFormValues } from "../_common/form";
9+
import { nftCreationPages } from "../_common/pages";
910

1011
export function SalesSettings(props: {
1112
onNext: () => void;
@@ -25,7 +26,7 @@ export function SalesSettings(props: {
2526
>
2627
<StepCard
2728
tracking={{
28-
page: "sales-settings",
29+
page: nftCreationPages["sales-settings"],
2930
contractType: "NFTCollection",
3031
}}
3132
title="Sales and Fees"

apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/assets/create/nft/upload-nfts/upload-nfts.tsx

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import { TabButtons } from "@/components/ui/tabs";
2+
import { useTrack } from "hooks/analytics/useTrack";
23
import type { ThirdwebClient } from "thirdweb";
34
import { StepCard } from "../../_common/step-card";
5+
import { getStepCardTrackingData } from "../../token/_common/tracking";
6+
import { nftCreationPages } from "../_common/pages";
47
import { BatchUploadNFTs } from "./batch-upload/batch-upload-nfts";
58
import type {
69
NFTMetadataWithPrice,
@@ -26,6 +29,30 @@ export function UploadNFTsFieldset(props: {
2629
nftData: NFTData;
2730
setNFTData: (nftData: NFTData) => void;
2831
}) {
32+
const trackEvent = useTrack();
33+
34+
function handleNextClick() {
35+
trackEvent(
36+
getStepCardTrackingData({
37+
step: nftCreationPages["upload-assets"],
38+
click: "next",
39+
contractType: "NFTCollection",
40+
}),
41+
);
42+
props.onNext();
43+
}
44+
45+
function handlePrevClick() {
46+
trackEvent(
47+
getStepCardTrackingData({
48+
step: nftCreationPages["upload-assets"],
49+
click: "prev",
50+
contractType: "NFTCollection",
51+
}),
52+
);
53+
props.onPrev();
54+
}
55+
2956
return (
3057
<StepCard
3158
title="Upload NFTs"
@@ -56,8 +83,8 @@ export function UploadNFTsFieldset(props: {
5683

5784
{props.nftData.type === "multiple" && (
5885
<BatchUploadNFTs
59-
onNext={props.onNext}
60-
onPrev={props.onPrev}
86+
onNext={handleNextClick}
87+
onPrev={handlePrevClick}
6188
client={props.client}
6289
results={props.nftData.nfts}
6390
setResults={(results) =>
@@ -73,8 +100,8 @@ export function UploadNFTsFieldset(props: {
73100
{props.nftData.type === "single" && (
74101
<SingleUploadNFT
75102
client={props.client}
76-
onNext={props.onNext}
77-
onPrev={props.onPrev}
103+
onNext={handleNextClick}
104+
onPrev={handlePrevClick}
78105
chainId={props.chainId}
79106
nftData={props.nftData.nft}
80107
setNFTData={(nft) =>

0 commit comments

Comments
 (0)