Skip to content

Commit

Permalink
feat: add profile revenue
Browse files Browse the repository at this point in the history
  • Loading branch information
bigint committed Apr 16, 2024
1 parent 19e477c commit 8948e6a
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 46 deletions.
76 changes: 76 additions & 0 deletions apps/web/src/components/Profile/Stats/SuperFollowRevenue.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import type { FollowRevenueRequest } from '@hey/lens';

import PublicationsShimmer from '@components/Shared/Shimmer/PublicationsShimmer';
import { CurrencyDollarIcon } from '@heroicons/react/24/outline';
import { STATIC_IMAGES_URL } from '@hey/data/constants';
import { useFollowRevenuesQuery } from '@hey/lens';
import getAllTokens from '@hey/lib/api/getAllTokens';
import humanize from '@hey/lib/humanize';
import { Card, CardHeader, ErrorMessage } from '@hey/ui';
import { useQuery } from '@tanstack/react-query';
import { type FC } from 'react';

interface SuperFollowRevenueProps {
profileId: string;
}

const SuperFollowRevenue: FC<SuperFollowRevenueProps> = ({ profileId }) => {
const request: FollowRevenueRequest = { for: profileId };

const { data, error, loading } = useFollowRevenuesQuery({
skip: !profileId,
variables: { request }
});

const {
data: allowedTokens,
error: allowedTokensError,
isLoading: allowedTokensLoading
} = useQuery({
queryFn: getAllTokens,
queryKey: ['getAllTokens']
});

if (loading || allowedTokensLoading) {
return <PublicationsShimmer />;
}

if (data?.followRevenues.revenues.length === 0) {
return null;
}

if (error || allowedTokensError) {
return <ErrorMessage error={error} title="Failed to load profile stats" />;
}

const tokensAvailable = allowedTokens?.map((token) => token.symbol);

return (
<Card>
<CardHeader title="Super follow revenue" />
<div className="p-5">
{data?.followRevenues.revenues.map((revenue, index) => (
<div className="flex items-center space-x-2" key={index}>
{tokensAvailable?.includes(revenue.total.asset.symbol) ? (
<img
alt={revenue.total.asset.symbol}
className="size-5"
src={`${STATIC_IMAGES_URL}/tokens/${revenue.total.asset.symbol}.svg`}
/>
) : (
<CurrencyDollarIcon className="size-5" />
)}
<div className="text-lg font-bold">{revenue.total.asset.name}</div>
<div className="text-sm">
{humanize(parseFloat(revenue.total.value))}{' '}
{revenue.total.asset.symbol}
</div>
<div className="text-sm">(${revenue.total.asFiat?.value})</div>
</div>
))}
</div>
</Card>
);
};

export default SuperFollowRevenue;
13 changes: 13 additions & 0 deletions apps/web/src/components/Profile/Stats/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { type FC } from 'react';

import SuperFollowRevenue from './SuperFollowRevenue';

interface StatsProps {
profileId: string;
}

const Stats: FC<StatsProps> = ({ profileId }) => {
return <SuperFollowRevenue profileId={profileId} />;
};

export default Stats;
6 changes: 5 additions & 1 deletion apps/web/src/components/Profile/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import Followers from './Followers';
import Following from './Following';
import MutualFollowersList from './MutualFollowers/List';
import ProfilePageShimmer from './Shimmer';
import Stats from './Stats';

const ViewProfile: NextPage = () => {
const {
Expand Down Expand Up @@ -67,7 +68,8 @@ const ViewProfile: NextPage = () => {
ProfileFeedType.Feed.toLowerCase(),
ProfileFeedType.Replies.toLowerCase(),
ProfileFeedType.Media.toLowerCase(),
ProfileFeedType.Collects.toLowerCase()
ProfileFeedType.Collects.toLowerCase(),
ProfileFeedType.Stats.toLowerCase()
];

const feedType = type
Expand Down Expand Up @@ -174,6 +176,8 @@ const ViewProfile: NextPage = () => {
profileId={profile.id}
type={feedType}
/>
) : feedType === ProfileFeedType.Stats ? (
<Stats profileId={profile.id} />
) : null}
</>
)}
Expand Down
9 changes: 0 additions & 9 deletions packages/data/tokens-symbols.ts

This file was deleted.

23 changes: 0 additions & 23 deletions packages/lib/getAssetSymbol.spec.ts

This file was deleted.

13 changes: 0 additions & 13 deletions packages/lib/getAssetSymbol.ts

This file was deleted.

1 comment on commit 8948e6a

@vercel
Copy link

@vercel vercel bot commented on 8948e6a Apr 16, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

web – ./apps/web

web-git-main-heyxyz.vercel.app
web-heyxyz.vercel.app
heyxyz.vercel.app
hey.xyz

Please sign in to comment.