@@ -2,6 +2,8 @@ import type { Account } from 'src/background/account/Account';
22import { getAddressActivity } from 'src/ui/shared/requests/useAddressActivity' ;
33import { INTERNAL_SYMBOL_CONTEXT } from 'src/background/Wallet/Wallet' ;
44import { isReadonlyContainer } from 'src/shared/types/validators' ;
5+ import { ZerionAPI } from 'src/modules/zerion-api/zerion-api' ;
6+ import { backgroundQueryClient } from 'src/modules/query-client/query-client.background' ;
57import { getAddressesPortfolio } from './getTotalWalletsBalance' ;
68
79async function getFundedWalletsCount ( addresses : string [ ] ) {
@@ -33,6 +35,44 @@ async function getPortfolioStats(addresses: string[]) {
3335 } ) ;
3436}
3537
38+ async function getZerionStats ( addresses : string [ ] ) {
39+ const response = await backgroundQueryClient . fetchQuery ( {
40+ queryKey : [ 'ZerionAPI.getWalletsMeta' , addresses ] ,
41+ queryFn : ( ) => ZerionAPI . getWalletsMeta ( { identifiers : addresses } ) ,
42+ staleTime : 1000 * 60 * 60 * 12 , // HALF A DAY
43+ } ) ;
44+ if ( ! response . data ) {
45+ return null ;
46+ }
47+ const stats = {
48+ zerion_premium_holder : false ,
49+ og_dna_premium_holder : false ,
50+ dna_holder : false ,
51+ } ;
52+ for ( const item of response . data ) {
53+ if ( item . membership . premium ) {
54+ stats . zerion_premium_holder = true ;
55+ }
56+ if ( item . membership . premium ?. features . early_access ) {
57+ // TODO: make sure this is the right check
58+ stats . og_dna_premium_holder = true ;
59+ }
60+
61+ if ( item . membership . tokens ?. length ) {
62+ stats . dna_holder = true ;
63+ }
64+ if (
65+ stats . dna_holder &&
66+ stats . og_dna_premium_holder &&
67+ stats . zerion_premium_holder
68+ ) {
69+ // No need to make further checks
70+ break ;
71+ }
72+ }
73+ return stats ;
74+ }
75+
3676export async function getBaseMixpanelParams ( account : Account ) {
3777 const getUserId = ( ) => account . getUser ( ) ?. id ;
3878 const apiLayer = account . getCurrentWallet ( ) ;
@@ -56,10 +96,12 @@ export async function getBaseMixpanelParams(account: Account) {
5696 ) ;
5797 const userId = getUserId ( ) ;
5898
59- const portfolioStats =
60- ownedAddresses && ownedAddresses . length
61- ? await getPortfolioStats ( ownedAddresses )
62- : null ;
99+ const portfolioStats = ownedAddresses ?. length
100+ ? await getPortfolioStats ( ownedAddresses )
101+ : null ;
102+ const zerionStats = ownedAddresses ?. length
103+ ? await getZerionStats ( ownedAddresses )
104+ : null ;
63105 return {
64106 $user_id : userId ,
65107 num_favourite_tokens : 0 ,
@@ -78,8 +120,8 @@ export async function getBaseMixpanelParams(account: Account) {
78120 total_balance : portfolioStats ?. totalValue ?? 0 ,
79121 currency : 'usd' ,
80122 language : 'en' ,
81- zerion_premium_holder : /* todo */ false ,
82- og_dna_premium_holder : /* todo */ false ,
83- dna_holder : /* todo */ false ,
123+ zerion_premium_holder : zerionStats ?. zerion_premium_holder ?? false ,
124+ og_dna_premium_holder : zerionStats ?. og_dna_premium_holder ?? false ,
125+ dna_holder : zerionStats ?. dna_holder ?? false ,
84126 } ;
85127}
0 commit comments