+
{value}
diff --git a/apps/trading/lib/hooks/Teams.graphql b/apps/trading/lib/hooks/Teams.graphql
index be308f3bf..b256c6a3c 100644
--- a/apps/trading/lib/hooks/Teams.graphql
+++ b/apps/trading/lib/hooks/Teams.graphql
@@ -1,15 +1,20 @@
+fragment TeamsFields on Team {
+ teamId
+ referrer
+ name
+ teamUrl
+ avatarUrl
+ createdAt
+ createdAtEpoch
+ closed
+ totalMembers
+}
+
query Teams($teamId: ID, $partyId: ID) {
teams(teamId: $teamId, partyId: $partyId) {
edges {
node {
- teamId
- referrer
- name
- teamUrl
- avatarUrl
- createdAt
- createdAtEpoch
- closed
+ ...TeamsFields
}
}
}
diff --git a/apps/trading/lib/hooks/__generated__/Teams.ts b/apps/trading/lib/hooks/__generated__/Teams.ts
index 08b2f1432..ea610632b 100644
--- a/apps/trading/lib/hooks/__generated__/Teams.ts
+++ b/apps/trading/lib/hooks/__generated__/Teams.ts
@@ -3,33 +3,40 @@ import * as Types from '@vegaprotocol/types';
import { gql } from '@apollo/client';
import * as Apollo from '@apollo/client';
const defaultOptions = {} as const;
+export type TeamsFieldsFragment = { __typename?: 'Team', teamId: string, referrer: string, name: string, teamUrl: string, avatarUrl: string, createdAt: any, createdAtEpoch: number, closed: boolean, totalMembers: number };
+
export type TeamsQueryVariables = Types.Exact<{
teamId?: Types.InputMaybe;
partyId?: Types.InputMaybe;
}>;
-export type TeamsQuery = { __typename?: 'Query', teams?: { __typename?: 'TeamConnection', edges: Array<{ __typename?: 'TeamEdge', node: { __typename?: 'Team', teamId: string, referrer: string, name: string, teamUrl: string, avatarUrl: string, createdAt: any, createdAtEpoch: number, closed: boolean } }> } | null };
-
+export type TeamsQuery = { __typename?: 'Query', teams?: { __typename?: 'TeamConnection', edges: Array<{ __typename?: 'TeamEdge', node: { __typename?: 'Team', teamId: string, referrer: string, name: string, teamUrl: string, avatarUrl: string, createdAt: any, createdAtEpoch: number, closed: boolean, totalMembers: number } }> } | null };
+export const TeamsFieldsFragmentDoc = gql`
+ fragment TeamsFields on Team {
+ teamId
+ referrer
+ name
+ teamUrl
+ avatarUrl
+ createdAt
+ createdAtEpoch
+ closed
+ totalMembers
+}
+ `;
export const TeamsDocument = gql`
query Teams($teamId: ID, $partyId: ID) {
teams(teamId: $teamId, partyId: $partyId) {
edges {
node {
- teamId
- referrer
- name
- teamUrl
- avatarUrl
- createdAt
- createdAtEpoch
- closed
+ ...TeamsFields
}
}
}
}
- `;
+ ${TeamsFieldsFragmentDoc}`;
/**
* __useTeamsQuery__
diff --git a/apps/trading/lib/hooks/use-my-team.ts b/apps/trading/lib/hooks/use-my-team.ts
new file mode 100644
index 000000000..e05674a2c
--- /dev/null
+++ b/apps/trading/lib/hooks/use-my-team.ts
@@ -0,0 +1,37 @@
+import { useVegaWallet } from '@vegaprotocol/wallet';
+import compact from 'lodash/compact';
+import first from 'lodash/first';
+import { useTeamsQuery } from './__generated__/Teams';
+import { useTeam } from './use-team';
+import { DEFAULT_AGGREGATION_EPOCHS } from './use-teams';
+import { useTeamsStatisticsQuery } from './__generated__/TeamsStatistics';
+import orderBy from 'lodash/orderBy';
+
+export const useMyTeam = () => {
+ const { pubKey } = useVegaWallet();
+ const { data: statsData } = useTeamsStatisticsQuery({
+ variables: {
+ aggregationEpochs: DEFAULT_AGGREGATION_EPOCHS,
+ },
+ fetchPolicy: 'cache-and-network',
+ });
+ const allStats = orderBy(
+ compact(statsData?.teamsStatistics?.edges).map((e) => e.node),
+ (s) => Number(s.totalQuantumRewards) || 0,
+ 'desc'
+ );
+
+ const { data: partyTeams } = useTeamsQuery({
+ variables: {
+ partyId: pubKey,
+ },
+ skip: !pubKey,
+ fetchPolicy: 'cache-and-network',
+ });
+
+ const team = first(compact(partyTeams?.teams?.edges.map((n) => n.node)));
+ const rank = allStats.findIndex((t) => t.teamId === team?.teamId) + 1;
+ const { games, stats } = useTeam(team?.teamId);
+
+ return { team, stats, games, rank };
+};