Skip to content

Commit

Permalink
feat: added analytics for console
Browse files Browse the repository at this point in the history
  • Loading branch information
anthony23991 committed Dec 11, 2024
1 parent 94dc1af commit 3472c0b
Show file tree
Hide file tree
Showing 34 changed files with 219 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const ENS_BY_API_KEY_CALLED = 'ENS_BY_API_KEY_CALLED';

export interface EnsByApiKeyCalledPayload {}
12 changes: 12 additions & 0 deletions apps/console/src/analytics/events/claimSection/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {
ENS_BY_API_KEY_CALLED,
EnsByApiKeyCalledPayload,
} from './ens-by-api-key-called';

export const CLAIM_SECTION_EVENTS = {
ENS_BY_API_KEY_CALLED,
} as const;

export interface ClaimSectionEventPayload {
[ENS_BY_API_KEY_CALLED]: EnsByApiKeyCalledPayload;
}
11 changes: 10 additions & 1 deletion apps/console/src/analytics/events/index.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,26 @@
import { AUTH_EVENTS, AuthEventPayload } from './auth';
import { CLAIM_SECTION_EVENTS, ClaimSectionEventPayload } from './claimSection';
import { CODE_EVENTS, CodeEventPayload } from './code';
import { NAVIGATION_EVENTS, NavigationEventPayload } from './navigation';
import { NETWORK_EVENTS, NetworkEventPayload } from './network';
import { PLUGINS_EVENTS, PluginsEventPayload } from './plugins';
import { SIGN_SECTION_EVENTS, SignSectionEventPayload } from './signSection';

export const EVENTS = {
...AUTH_EVENTS,
...CLAIM_SECTION_EVENTS,
...CODE_EVENTS,
...NAVIGATION_EVENTS,
...NETWORK_EVENTS,
...PLUGINS_EVENTS,
...SIGN_SECTION_EVENTS,
} as const;

export interface EventPayload
extends CodeEventPayload,
NavigationEventPayload,
PluginsEventPayload,
AuthEventPayload {}
AuthEventPayload,
NetworkEventPayload,
ClaimSectionEventPayload,
SignSectionEventPayload {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const DASHBOARD_LINK_CLICKED = 'DASHBOARD_LINK_CLICKED';

export interface DashboardLinkClickedPayload {}
6 changes: 6 additions & 0 deletions apps/console/src/analytics/events/navigation/index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
import {
DASHBOARD_LINK_CLICKED,
DashboardLinkClickedPayload,
} from './dashboard-link-clicked';
import { DOCS_LINK_CLICKED, DocsLinkClickedPayload } from './docs-link-clicked';
import { PROFILE_VIEWED, ProfileViewedPayload } from './profile-viewed';

export const NAVIGATION_EVENTS = {
DOCS_LINK_CLICKED,
PROFILE_VIEWED,
DASHBOARD_LINK_CLICKED,
} as const;

export interface NavigationEventPayload {
[DOCS_LINK_CLICKED]: DocsLinkClickedPayload;
[PROFILE_VIEWED]: ProfileViewedPayload;
[DASHBOARD_LINK_CLICKED]: DashboardLinkClickedPayload;
}
9 changes: 9 additions & 0 deletions apps/console/src/analytics/events/network/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { NETWORK_CHANGED, NetworkChangedPayload } from './network-changed';

export const NETWORK_EVENTS = {
NETWORK_CHANGED,
} as const;

export interface NetworkEventPayload {
[NETWORK_CHANGED]: NetworkChangedPayload;
}
5 changes: 5 additions & 0 deletions apps/console/src/analytics/events/network/network-changed.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export const NETWORK_CHANGED = 'NETWORK_CHANGED';

export interface NetworkChangedPayload {
chainId: number;
}
3 changes: 3 additions & 0 deletions apps/console/src/analytics/events/plugins/efp-disabled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const EFP_DISABLED = 'EFP_DISABLED';

export interface EfpDisabledPayload {}
34 changes: 32 additions & 2 deletions apps/console/src/analytics/events/plugins/index.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,53 @@
import { EFP_DISABLED, EfpDisabledPayload } from './efp-disabled';
import { EFP_ENABLED, EfpEnabledPayload } from './efp-enabled';
import {
JUST_VERIFIED_DISABLED,
JustVerifiedDisabledPayload,
} from './just-verified-disabled';
import {
JUST_VERIFIED_ENABLED,
JustVerifiedEnabledPayload,
} from './just-verified-enabled';
import { EFP_ENABLED, EfpEnabledPayload } from './efp-enabled';
import { POAP_ENABLED, PoapEnabledPayload } from './poap-enabled';
import {
JUST_VERIFIED_EVENTS,
JustVerifiedEventsPayload,
} from './justVerified';
import { POAP_DISABLED, PoapDisabledPayload } from './poap-disabled';
import { POAP_ENABLED, PoapEnabledPayload } from './poap-enabled';
import {
TALENT_PROTOCOL_DISABLED,
TalentProtocolDisabledPayload,
} from './talent-protocol-disabled';
import {
TALENT_PROTOCOL_ENABLED,
TalentProtocolEnabledPayload,
} from './talent-protocol-enabled';
import { XMTP_DISABLED, XmtpDisabledPayload } from './xmtp-disabled';
import { XMTP_ENABLED, XmtpEnabledPayload } from './xmtp-enabled';

export const PLUGINS_EVENTS = {
JUST_VERIFIED_DISABLED,
JUST_VERIFIED_ENABLED,
EFP_DISABLED,
EFP_ENABLED,
POAP_DISABLED,
POAP_ENABLED,
TALENT_PROTOCOL_DISABLED,
TALENT_PROTOCOL_ENABLED,
XMTP_DISABLED,
XMTP_ENABLED,
...JUST_VERIFIED_EVENTS,
} as const;

export interface PluginsEventPayload extends JustVerifiedEventsPayload {
[JUST_VERIFIED_DISABLED]: JustVerifiedDisabledPayload;
[JUST_VERIFIED_ENABLED]: JustVerifiedEnabledPayload;
[EFP_DISABLED]: EfpDisabledPayload;
[EFP_ENABLED]: EfpEnabledPayload;
[POAP_DISABLED]: PoapDisabledPayload;
[POAP_ENABLED]: PoapEnabledPayload;
[TALENT_PROTOCOL_DISABLED]: TalentProtocolDisabledPayload;
[TALENT_PROTOCOL_ENABLED]: TalentProtocolEnabledPayload;
[XMTP_DISABLED]: XmtpDisabledPayload;
[XMTP_ENABLED]: XmtpEnabledPayload;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const JUST_VERIFIED_DISABLED = 'JUST_VERIFIED_DISABLED';

export interface JustVerifiedDisabledPayload {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const DISCORD_DISABLED = 'DISCORD_DISABLED';

export interface DiscordDisabledPayload {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const EMAIL_DISABLED = 'EMAIL_DISABLED';

export interface EmailDisabledPayload {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const GITHUB_DISABLED = 'GITHUB_DISABLED';

export interface GithubDisabledPayload {}
18 changes: 18 additions & 0 deletions apps/console/src/analytics/events/plugins/justVerified/index.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,39 @@
import { DISCORD_DISABLED, DiscordDisabledPayload } from './discord-disabled';
import { DISCORD_ENABLED, DiscordEnabledPayload } from './discord-enabled';
import { EMAIL_DISABLED, EmailDisabledPayload } from './email-disabled';
import { EMAIL_ENABLED, EmailEnabledPayload } from './email-enabled';
import { GITHUB_DISABLED, GithubDisabledPayload } from './github-disabled';
import { GITHUB_ENABLED, GithubEnabledPayload } from './github-enabled';
import {
TELEGRAM_DISABLED,
TelegramDisabledPayload,
} from './telegram-disabled';
import { TELEGRAM_ENABLED, TelegramEnabledPayload } from './telegram-enabled';
import { TWITTER_DISABLED, TwitterDisabledPayload } from './twitter-disabled';
import { TWITTER_ENABLED, TwitterEnabledPayload } from './twitter-enabled';

export const JUST_VERIFIED_EVENTS = {
DISCORD_DISABLED,
DISCORD_ENABLED,
EMAIL_DISABLED,
EMAIL_ENABLED,
GITHUB_DISABLED,
GITHUB_ENABLED,
TELEGRAM_DISABLED,
TELEGRAM_ENABLED,
TWITTER_DISABLED,
TWITTER_ENABLED,
} as const;

export interface JustVerifiedEventsPayload {
[DISCORD_DISABLED]: DiscordDisabledPayload;
[DISCORD_ENABLED]: DiscordEnabledPayload;
[EMAIL_DISABLED]: EmailDisabledPayload;
[EMAIL_ENABLED]: EmailEnabledPayload;
[GITHUB_DISABLED]: GithubDisabledPayload;
[GITHUB_ENABLED]: GithubEnabledPayload;
[TELEGRAM_DISABLED]: TelegramDisabledPayload;
[TELEGRAM_ENABLED]: TelegramEnabledPayload;
[TWITTER_DISABLED]: TwitterDisabledPayload;
[TWITTER_ENABLED]: TwitterEnabledPayload;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const TELEGRAM_DISABLED = 'TELEGRAM_DISABLED';

export interface TelegramDisabledPayload {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const TWITTER_DISABLED = 'TWITTER_DISABLED';

export interface TwitterDisabledPayload {}
3 changes: 3 additions & 0 deletions apps/console/src/analytics/events/plugins/poap-disabled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const POAP_DISABLED = 'POAP_DISABLED';

export interface PoapDisabledPayload {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const TALENT_PROTOCOL_DISABLED = 'TALENT_PROTOCOL_DISABLED';

export interface TalentProtocolDisabledPayload {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const TALENT_PROTOCOL_ENABLED = 'TALENT_PROTOCOL_ENABLED';

export interface TalentProtocolEnabledPayload {}
3 changes: 3 additions & 0 deletions apps/console/src/analytics/events/plugins/xmtp-disabled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const XMTP_DISABLED = 'XMTP_DISABLED';

export interface XmtpDisabledPayload {}
3 changes: 3 additions & 0 deletions apps/console/src/analytics/events/plugins/xmtp-enabled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const XMTP_ENABLED = 'XMTP_ENABLED';

export interface XmtpEnabledPayload {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const ANY_ENS_SELECTED = 'ANY_ENS_SELECTED';

export interface AnyEnsSelectedPayload {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export const CLAIMABLE_ENS_SELECTED = 'CLAIMABLE_ENS_SELECTED';

export interface ClaimableEnsSelectedPayload {}
21 changes: 21 additions & 0 deletions apps/console/src/analytics/events/signSection/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { ANY_ENS_SELECTED, AnyEnsSelectedPayload } from './any-ens-selected';
import {
CLAIMABLE_ENS_SELECTED,
ClaimableEnsSelectedPayload,
} from './claimable-ens-selected';
import {
SPECIFIC_ENS_SELECTED,
SpecificEnsSelectedPayload,
} from './specific-ens-selected';

export const SIGN_SECTION_EVENTS = {
ANY_ENS_SELECTED,
SPECIFIC_ENS_SELECTED,
CLAIMABLE_ENS_SELECTED,
} as const;

export interface SignSectionEventPayload {
[ANY_ENS_SELECTED]: AnyEnsSelectedPayload;
[SPECIFIC_ENS_SELECTED]: SpecificEnsSelectedPayload;
[CLAIMABLE_ENS_SELECTED]: ClaimableEnsSelectedPayload;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export const SPECIFIC_ENS_SELECTED = 'SPECIFIC_ENS_SELECTED';

export interface SpecificEnsSelectedPayload {
ens: string;
}
2 changes: 1 addition & 1 deletion apps/console/src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ export default function Page() {
<ConnectButton />
</JustWeb3Button>

<h1 className={'text-xl font-black'}>Profile Examples:</h1>
<h1 className={'text-xl font-black mt-5'}>Profile Examples:</h1>

<div onClick={() => handleEnsClick('justhadi.eth')}>
<JustEnsCard addressOrEns={'justhadi.eth'} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { JustWeb3Context, useDebounce, useJustWeb3 } from '@justweb3/widget';
import { Input } from '../../../ui/input';
import axios from 'axios';
import { ChainId } from '@justaname.id/sdk';
import { getAnalyticsClient } from '../../../../analytics';

export const ClaimSection = () => {
const { config, handleJustWeb3Config } = useContext(JustWeb3Context);
Expand Down Expand Up @@ -52,12 +53,12 @@ export const ClaimSection = () => {
...(ens === 'jaw.eth' || ens === 'justan.eth'
? []
: [
{
ensDomain: ens,
apiKey: apiKey,
chainId: 11155111 as ChainId,
},
]),
{
ensDomain: ens,
apiKey: apiKey,
chainId: 11155111 as ChainId,
},
]),
],
});
}
Expand All @@ -80,8 +81,7 @@ export const ClaimSection = () => {
};
statusCode: number;
}>(
`https://${
dev ? 'api-staging' : 'api'
`https://${dev ? 'api-staging' : 'api'
}.justaname.id/ens/v1/ens/api-key`,
{
headers: {
Expand All @@ -90,6 +90,7 @@ export const ClaimSection = () => {
}
)
.then((res) => {
getAnalyticsClient().track('ENS_BY_API_KEY_CALLED', {});
setEnsByApiKey(res.data.result.data.domains);
})
.catch((err) => {
Expand Down Expand Up @@ -174,6 +175,9 @@ export const ClaimSection = () => {
href={'https://dashboard.justaname.id'}
target={'_blank'}
className={'text-primary'}
onClick={() => {
getAnalyticsClient().track('DASHBOARD_LINK_CLICKED', {});
}}
>
Dashboard
</a>{' '}
Expand All @@ -186,9 +190,9 @@ export const ClaimSection = () => {
{index ===
ensByApiKey.filter((ens) => ens.chainId === chainId)
.length -
1 && (
<div className="w-full h-[1px] min-h-[1px] bg-[#CBD5E180]" />
)}
1 && (
<div className="w-full h-[1px] min-h-[1px] bg-[#CBD5E180]" />
)}
<OptionSelect key={ens.ens} label={ens.ens} value={ens.ens} />
</>
))}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { Switch } from '../../../ui/switch';
import { useSwitchChain } from 'wagmi';
import { useMountedAccount } from '@justaname.id/react';
import { PluginsSection } from '../PluginsSection';
import { getAnalyticsClient } from '../../../../analytics';

interface CustomizerProps {
mobile?: boolean;
Expand All @@ -30,9 +31,8 @@ export const Customizer = ({ mobile }: CustomizerProps) => {

return (
<div
className={`flex flex-col gap-[5px] min-w-[350px] mobile:w-[350px] border-r-[1px] pointer-events-auto ${
mobile ? 'pb-5' : 'py-5'
} px-2.5 mobile:max-h-[calc(100vh-60px)] overflow-y-auto `}
className={`flex flex-col gap-[5px] min-w-[350px] mobile:w-[350px] border-r-[1px] pointer-events-auto ${mobile ? 'pb-5' : 'py-5'
} px-2.5 mobile:max-h-[calc(100vh-60px)] overflow-y-auto `}
>
<div className="flex flex-col gap-2.5">
<div className="flex flex-row items-center justify-between w-full py-[5px]">
Expand All @@ -46,6 +46,9 @@ export const Customizer = ({ mobile }: CustomizerProps) => {
<Switch
checked={chainId === 1}
onCheckedChange={() => {
getAnalyticsClient().track('NETWORK_CHANGED', {
chainId: chainId === 1 ? 11155111 : 1,
});
switchChainAsync({
chainId: chainId === 1 ? 11155111 : 1,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export const EFP = () => {
(plugin) => plugin.name !== EFPPlugin.name
),
});
getAnalyticsClient().track('EFP_DISABLED', {});
}
};

Expand Down
Loading

0 comments on commit 3472c0b

Please sign in to comment.