Skip to content

Commit

Permalink
updates
Browse files Browse the repository at this point in the history
  • Loading branch information
happylolonly committed May 23, 2024
1 parent 6bcca61 commit 4dca40c
Show file tree
Hide file tree
Showing 14 changed files with 279 additions and 68 deletions.
15 changes: 9 additions & 6 deletions src/features/cybernet/ui/Cybernet.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ import { Outlet, Route, Routes } from 'react-router-dom';
import Main from './pages/Main/Main';
import Subnet from './pages/Subnet/Subnet';
import Delegates from './pages/Delegates/Delegates';
import Delegator from './pages/Delegator/Delegator';
import Delegate from './pages/Delegate/Delegate';
import Subnets from './pages/Subnets/Subnets';
import MyStake from './pages/MyStake/MyStake';
import { Helmet } from 'react-helmet';
import CybernetProvider from './cybernet.context';

function Cybernet() {
return (
Expand All @@ -15,18 +16,20 @@ function Cybernet() {
path="/"
element={
<div>
<Helmet>
<title>cybernet | cyb</title>
</Helmet>
<Outlet />
<CybernetProvider>
<Helmet>
<title>cybernet | cyb</title>
</Helmet>
<Outlet />
</CybernetProvider>
</div>
}
>
<Route index element={<Main />} />
<Route path="subnets" element={<Subnets />} />
<Route path="subnets/:id/*" element={<Subnet />} />u
<Route path="delegators" element={<Delegates />} />
<Route path="delegators/:id" element={<Delegator />} />
<Route path="delegators/:id" element={<Delegate />} />
<Route path="staking/my" element={<MyStake />} />
</Route>
</Routes>
Expand Down
73 changes: 73 additions & 0 deletions src/features/cybernet/ui/cybernet.context.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import React, { useMemo, useState } from 'react';
import { Networks } from 'src/types/networks';
import { CYBERNET_CONTRACT_ADDRESS } from '../constants';

type ContractType = 'graph' | 'ml';

type Contract = {
name: string;
address: string;
apr: number;
};

const data = [
{
name: 'graph',
type: 'graph',
address: CYBERNET_CONTRACT_ADDRESS,
// apr: 35,
// docs: 'https://docs.spacepussy.ai',
network: Networks.SPACE_PUSSY,
},
{
name: 'ml',
type: 'ml',
address: '-',
// apr: 20,
// docs: 'https://docs.spacepussy.ai',
network: Networks.SPACE_PUSSY,
},
];

const CybernetContext = React.createContext<{
contracts: Contract[];
selectContract: (address: string) => void;
selectedContract: string | null;
}>({
contracts: {},
selectContract: null,
selectedContract: null,
});

export function useCybernet() {
return React.useContext(CybernetContext);
}

function CybernetProvider({ children }: { children: React.ReactNode }) {
const [selectedContractAddress, setSelectedContractAddress] = useState(
CYBERNET_CONTRACT_ADDRESS
);
const [contracts] = useState<(typeof CybernetContext)['']>(data);

const selectedContract = contracts.find(
(contract) => contract.address === selectedContractAddress
);

console.debug('selectedContract', selectedContract);

return (
<CybernetContext.Provider
value={useMemo(() => {
return {
contracts,
selectContract: setSelectedContractAddress,
selectedContract,
};
}, [contracts, selectedContract])}
>
{children}
</CybernetContext.Provider>
);
}

export default CybernetProvider;
68 changes: 68 additions & 0 deletions src/features/cybernet/ui/cybernetTexts.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
export const texts: {
[key: string]: {
default: string | { single: string; plural: string };
graph: string | { single: string; plural: string };
};
} = {
contract: {
default: 'contract',
graph: 'verse',
},
root: {
default: 'root',
graph: 'board',
},
subnetwork: {
default: 'subnet',
graph: {
single: 'faculty',
plural: 'faculties',
},
},
uid: {
default: 'uid',
graph: 'card',
},
contractOwner: {
default: 'owner',
graph: 'rector',
},
subnetOwner: {
default: 'owner',
graph: 'dean',
},
delegate: {
default: 'delegate',
graph: 'mentor',
},
delegator: {
default: 'delegator',
graph: 'learner',
},
validator: {
default: 'validator',
graph: 'professor',
},
rootValidator: {
default: 'lead',
graph: 'professor',
},
miner: {
default: 'miner',
graph: 'teacher',
},
};

// fix
export type Texts =
| 'contract'
| 'root'
| 'subnetwork'
| 'uid'
| 'contractOwner'
| 'subnetOwner'
| 'delegate'
| 'delegator'
| 'validator'
| 'rootValidator'
| 'miner';
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
/* eslint-disable react/no-unstable-nested-components */
import { Link, useParams } from 'react-router-dom';
import { Account, AmountDenom, DenomArr, MainContainer } from 'src/components';
import { Account, AmountDenom, MainContainer } from 'src/components';
import Display from 'src/components/containerGradient/Display/Display';
import DisplayTitle from 'src/components/containerGradient/DisplayTitle/DisplayTitle';
import useQueryCybernetContract from 'src/features/cybernet/ui/useQueryCybernetContract.refactor';
import { routes } from 'src/routes';

import DelegatorActionBar from './DelegatorActionBar/DelegatorActionBar';
import styles from './Delegator.module.scss';
import DelegateActionBar from './DelegateActionBar/DelegateActionBar';
import styles from './Delegate.module.scss';
import {
Delegator,
Delegator as DelegatorType,
Expand All @@ -21,6 +19,7 @@ import { createColumnHelper } from '@tanstack/react-table';
import MusicalAddress from 'src/components/MusicalAddress/MusicalAddress';
import subnetStyles from '../Subnet/Subnet.module.scss';
import useDelegate from '../../hooks/useDelegate';
import useCybernetTexts from '../../useCybernetTexts';

const columnHelper = createColumnHelper<Delegator>();

Expand All @@ -45,11 +44,12 @@ function Delegator() {
const currentAddress = useAppSelector(selectCurrentAddress);

const { loading, data, error, refetch } = useDelegate(id);
const { getText } = useCybernetTexts();

useAdviserTexts({
isLoading: loading,
error,
defaultText: 'operator info',
defaultText: `${getText('delegate')} info`,
});

const myStake = data?.nominators.find(
Expand All @@ -63,7 +63,7 @@ function Delegator() {
return (
<MainContainer>
{myStake && data.delegate !== currentAddress && (
<Display title={<DisplayTitle title="My investment" />}>
<Display title={<DisplayTitle title="My stake" />}>
{myStake.toLocaleString()} 🟣
</Display>
)}
Expand Down Expand Up @@ -137,7 +137,7 @@ function Delegator() {
<DisplayTitle
title={
<div className={styles.nominatorsHeader}>
<h3>Investors</h3>
<h3>{getText('delegator', true)}</h3>

<div>
<AmountDenom amountValue={totalStake} denom="pussy" />
Expand All @@ -150,7 +150,7 @@ function Delegator() {
<Table
columns={[
columnHelper.accessor('address', {
header: 'investor',
header: getText('delegator'),
enableSorting: false,
cell: (info) => (
<Account
Expand Down Expand Up @@ -187,7 +187,7 @@ function Delegator() {
</Display>
)}

<DelegatorActionBar
<DelegateActionBar
address={id}
stakedAmount={myStake}
onSuccess={refetch}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ type Props = {
onSuccess: () => void;
};

function DelegatorActionBar({ address, stakedAmount, onSuccess }: Props) {
function DelegateActionBar({ address, stakedAmount, onSuccess }: Props) {
const [step, setStep] = useState(Steps.INITIAL);

const currentAddress = useAppSelector(selectCurrentAddress);
Expand Down Expand Up @@ -158,4 +158,4 @@ function DelegatorActionBar({ address, stakedAmount, onSuccess }: Props) {
);
}

export default DelegatorActionBar;
export default DelegateActionBar;
14 changes: 10 additions & 4 deletions src/features/cybernet/ui/pages/Delegates/Delegates.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import React from 'react';
import { Delegator } from 'src/features/cybernet/types';
import useCybernetContract from 'src/features/cybernet/ui/useQueryCybernetContract.refactor';
import DelegatorsTable from './DelegatorsTable/DelegatorsTable';
import DelegatesTable from './DelegatesTable/DelegatesTable';
import Display from 'src/components/containerGradient/Display/Display';
import DisplayTitle from 'src/components/containerGradient/DisplayTitle/DisplayTitle';
import { MainContainer } from 'src/components';
import useAdviserTexts from 'src/features/cybernet/_move/useAdviserTexts';
import useCybernetTexts from '../../useCybernetTexts';

function Delegates() {
const { data, loading, error } = useCybernetContract<Delegator>({
Expand All @@ -14,18 +15,23 @@ function Delegates() {
},
});

const { getText } = useCybernetTexts();

useAdviserTexts({
isLoading: loading,
error,
defaultText: 'choose operator to invest',
defaultText: `choose ${getText('delegate')} for learning`,
});

console.log(data);

return (
<MainContainer resetMaxWidth>
<Display noPaddingX title={<DisplayTitle title="Operators" />}>
<DelegatorsTable data={data || []} isLoading={loading} />
<Display
noPaddingX
title={<DisplayTitle title={getText('delegate', true)} />}
>
<DelegatesTable data={data || []} isLoading={loading} />
</Display>
</MainContainer>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { Link, useNavigate } from 'react-router-dom';
import { Delegator } from 'src/features/cybernet/types';
import { Account, AmountDenom } from 'src/components';
import useCurrentAddress from 'src/features/cybernet/_move/useCurrentAddress';
import useCybernetTexts from '../../../useCybernetTexts';

type Props = {
data: Delegator[];
Expand All @@ -15,10 +16,9 @@ type Props = {

const columnHelper = createColumnHelper<Delegator>();

function DelegatorsTable({ data, isLoading }: Props) {
console.log(data);

function DelegatesTable({ data, isLoading }: Props) {
const currentAddress = useCurrentAddress();
const { getText } = useCybernetTexts();

function getTotalStake(nominators: Delegator['nominators']) {
return nominators.reduce((acc, [, stake]) => acc + stake, 0);
Expand All @@ -42,7 +42,7 @@ function DelegatorsTable({ data, isLoading }: Props) {
}),

columnHelper.accessor('delegate', {
header: 'operator',
header: getText('delegate'),
enableSorting: false,
cell: (info) => (
<Account
Expand All @@ -62,7 +62,7 @@ function DelegatorsTable({ data, isLoading }: Props) {
// }),

columnHelper.accessor('registrations', {
header: 'Joined subnets',
header: getText('subnetwork', true),
sortingFn: (rowA, rowB) => {
const a = rowA.original.registrations.length;
const b = rowB.original.registrations.length;
Expand All @@ -88,7 +88,7 @@ function DelegatorsTable({ data, isLoading }: Props) {
}),

columnHelper.accessor('nominators', {
header: 'pussy stake',
header: 'pussy power',
id: 'stake',
sortingFn: (rowA, rowB) => {
const totalA = getTotalStake(rowA.original.nominators);
Expand All @@ -104,7 +104,7 @@ function DelegatorsTable({ data, isLoading }: Props) {
},
}),
columnHelper.accessor('nominators', {
header: 'my investment',
header: 'my stake',
id: 'myStake',
sortingFn: (rowA, rowB) => {
const myStakeA = getMyStake(rowA.original.nominators) || 0;
Expand Down Expand Up @@ -141,4 +141,4 @@ function DelegatorsTable({ data, isLoading }: Props) {
);
}

export default DelegatorsTable;
export default DelegatesTable;
Loading

0 comments on commit 4dca40c

Please sign in to comment.