From 6d6d0204dd59e57e0dd9d0a3653a8cbd083ceb50 Mon Sep 17 00:00:00 2001 From: Cheslav Zhuravsky Date: Fri, 2 Aug 2024 14:54:40 +0700 Subject: [PATCH 1/5] fix urls logic --- src/pages/robot/Robot.tsx | 18 ++++++-- src/pages/robot/robot.context.tsx | 72 ++++++++++--------------------- src/router.tsx | 5 ++- 3 files changed, 40 insertions(+), 55 deletions(-) diff --git a/src/pages/robot/Robot.tsx b/src/pages/robot/Robot.tsx index 64e88c2f2..9da36cf43 100644 --- a/src/pages/robot/Robot.tsx +++ b/src/pages/robot/Robot.tsx @@ -1,9 +1,10 @@ -import { Route, Routes } from 'react-router-dom'; +import { Navigate, Route, Routes } from 'react-router-dom'; import TxsTable from 'src/pages/robot/_refactor/account/component/txsTable'; import Sigma from 'src/containers/sigma'; import RoutedEnergy from 'src/containers/energy'; import TableDiscipline from 'src/containers/gol/table'; import useAdviserTexts from 'src/features/adviser/useAdviserTexts'; +import { routes } from 'src/routes'; import Layout from './Layout/Layout'; import RobotContextProvider, { useRobotContext } from './robot.context'; import Brain from './Brain/Brain'; @@ -23,18 +24,27 @@ function RobotRoutes() { const newUser = !isLoading && !address; useAdviserTexts({ - defaultText: 'my robot', + defaultText: `${!newUser && 'my'} robot`, }); return ( }> {newUser ? ( - } /> + <> + } /> + } /> + ) : ( }> - : } /> + } /> } /> + + {/* energy */} + } + /> {['energy', 'energy/:pageId'].map((path) => ( } /> ))} diff --git a/src/pages/robot/robot.context.tsx b/src/pages/robot/robot.context.tsx index 632068386..fcd874bf9 100644 --- a/src/pages/robot/robot.context.tsx +++ b/src/pages/robot/robot.context.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import { useParams, useLocation, useNavigate } from 'react-router-dom'; import { CHAIN_ID } from 'src/constants/config'; import usePassportByAddress from 'src/features/passport/hooks/usePassportByAddress'; @@ -136,59 +136,28 @@ function RobotContextProvider({ children }: { children: React.ReactNode }) { const currentPassport = isOwner ? currentUserPassport : passportContract; let currentRobotAddress = address || currentPassport.data?.owner || null; + if ( + robotUrl && + currentUserPassport.data && + currentAddress === currentUserPassport.data.owner + ) { + navigate( + location.pathname.replace( + routes.robot.path, + routes.robotPassport.getLink( + currentUserPassport.data.extension.nickname + ) + ), + { + replace: true, + } + ); + } + if (CHAIN_ID === Networks.SPACE_PUSSY && currentRobotAddress) { currentRobotAddress = fromBech32(currentRobotAddress, 'pussy'); } - const isLoading = currentPassport.loading; - - // redirect from /robot to /@nickname - const newUser = - !passportContract.loading && - !currentUserPassport.loading && - !currentRobotAddress; - - // redirects - useEffect(() => { - if ( - newUser && - location.pathname.includes(routes.robot.path) && - // allowed routes - ![ - routes.robot.path, - routes.robot.routes.drive.path, - routes.robot.routes.sense.path, - ].includes(location.pathname) - ) { - navigate(routes.robot.path); - } - - if ( - robotUrl && - currentUserPassport.data && - currentAddress === currentUserPassport.data.owner - ) { - navigate( - location.pathname.replace( - routes.robot.path, - routes.robotPassport.getLink( - currentUserPassport.data.extension.nickname - ) - ), - { - replace: true, - } - ); - } - }, [ - location.pathname, - robotUrl, - currentUserPassport.data, - newUser, - currentAddress, - navigate, - ]); - const addRefetch = useCallback( (func: () => void) => { setRefetch((items) => [...items, func]); @@ -200,6 +169,9 @@ function RobotContextProvider({ children }: { children: React.ReactNode }) { refetchFuncs.forEach((func) => func()); }, [refetchFuncs]); + const isLoading = + currentPassport.loading || currentPassport.data === undefined; + const contextValue = useMemo( () => ({ address: currentRobotAddress, diff --git a/src/router.tsx b/src/router.tsx index f2f2cfe75..9a108d861 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -120,7 +120,10 @@ function AppRouter() { } /> } /> - } /> + } + /> } /> } /> From ec3706bc8b502b421d7349a9ebd887d2f59b6206 Mon Sep 17 00:00:00 2001 From: OggyKUN Date: Tue, 3 Sep 2024 16:39:49 +0300 Subject: [PATCH 2/5] feat(settings): transferred settings into robot --- .../Header/SwitchAccount/SwitchAccount.tsx | 4 +-- src/pages/Settings/Settings.tsx | 3 ++- .../Layout/LayoutRoot/RootMenu/RootMenu.tsx | 25 +++++++++++++++++++ src/pages/robot/Robot.tsx | 8 ++++++ src/routes.ts | 9 +++++++ 5 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/containers/application/Header/SwitchAccount/SwitchAccount.tsx b/src/containers/application/Header/SwitchAccount/SwitchAccount.tsx index 7a72f1897..b76bc1ff5 100644 --- a/src/containers/application/Header/SwitchAccount/SwitchAccount.tsx +++ b/src/containers/application/Header/SwitchAccount/SwitchAccount.tsx @@ -240,12 +240,12 @@ function SwitchAccount() { setControlledVisible={setControlledVisible} image={require('../../../../image/sigma.png')} /> - + /> */} ); diff --git a/src/pages/Settings/Settings.tsx b/src/pages/Settings/Settings.tsx index fdf1c0a5b..b1deabc6b 100644 --- a/src/pages/Settings/Settings.tsx +++ b/src/pages/Settings/Settings.tsx @@ -1,4 +1,4 @@ -import { Route, Routes } from 'react-router-dom'; +/* import { Route, Routes } from 'react-router-dom'; import IpfsSettings from 'src/features/ipfs/ipfsSettings'; import Layout from './Layout/Layout'; import Keys from '../Keys/Keys'; @@ -20,3 +20,4 @@ function Settings() { } export default Settings; + */ diff --git a/src/pages/robot/Layout/LayoutRoot/RootMenu/RootMenu.tsx b/src/pages/robot/Layout/LayoutRoot/RootMenu/RootMenu.tsx index 29a250f81..521c6e7bb 100644 --- a/src/pages/robot/Layout/LayoutRoot/RootMenu/RootMenu.tsx +++ b/src/pages/robot/Layout/LayoutRoot/RootMenu/RootMenu.tsx @@ -64,6 +64,31 @@ const links: MenuItem[] = [ // description: 'bytes', icon: '👻', }, + { + text: 'Drive', + link: '/robot/drive', + icon: '🟥', + }, + { + text: 'Keys', + link: '/robot/keys', + icon: '🗝', + }, + { + text: 'Tokens', + link: './tokens', + icon: '🟢', + }, + { + text: 'Networks', + link: './networks', + icon: '🌐', + }, + { + text: 'Channels', + link: './channels', + icon: '📡', + }, ]; type Props = { diff --git a/src/pages/robot/Robot.tsx b/src/pages/robot/Robot.tsx index 64e88c2f2..4bba17408 100644 --- a/src/pages/robot/Robot.tsx +++ b/src/pages/robot/Robot.tsx @@ -16,6 +16,10 @@ import Heroes from './_refactor/account/tabs/heroes'; import Karma from './Karma/Karma'; import Follows from './_refactor/account/tabs/Follows/Follows'; import Soul from './Soul/Soul'; +import IpfsSettings from 'src/features/ipfs/ipfsSettings'; +import Keys from '../Keys/Keys'; +import Audio from 'src/pages/Settings/Audio/Audio'; +import Hub from '../Hub/hub'; function RobotRoutes() { const { isLoading, address } = useRobotContext(); @@ -44,6 +48,10 @@ function RobotRoutes() { } /> } /> } /> + } /> + } /> + } /> + } /> )} diff --git a/src/routes.ts b/src/routes.ts index b994231cc..69e37b104 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -51,6 +51,15 @@ export const routes = { soul: { path: '/robot/soul', }, + keys: { + path: '/robot/keys', + }, + audio: { + path: '/robot/audio', + }, + hub: { + path: '/robot/hub', + }, }, }, robotPassport: { From 92c42c8a7dae05dc10b4f344a34f27902a918df2 Mon Sep 17 00:00:00 2001 From: Cheslav Zhuravsky Date: Thu, 5 Sep 2024 09:51:47 +0700 Subject: [PATCH 3/5] WIP: ec3706bc feat(settings): transferred settings into robot --- src/pages/robot/Robot.tsx | 6 +++--- src/pages/robot/robot.context.tsx | 18 ++++++++---------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/pages/robot/Robot.tsx b/src/pages/robot/Robot.tsx index 5ca1524de..8301819bd 100644 --- a/src/pages/robot/Robot.tsx +++ b/src/pages/robot/Robot.tsx @@ -5,6 +5,8 @@ import RoutedEnergy from 'src/containers/energy'; import TableDiscipline from 'src/containers/gol/table'; import useAdviserTexts from 'src/features/adviser/useAdviserTexts'; import { routes } from 'src/routes'; +import IpfsSettings from 'src/features/ipfs/ipfsSettings'; +import Audio from 'src/pages/Settings/Audio/Audio'; import Layout from './Layout/Layout'; import RobotContextProvider, { useRobotContext } from './robot.context'; import Brain from './Brain/Brain'; @@ -17,9 +19,7 @@ import Heroes from './_refactor/account/tabs/heroes'; import Karma from './Karma/Karma'; import Follows from './_refactor/account/tabs/Follows/Follows'; import Soul from './Soul/Soul'; -import IpfsSettings from 'src/features/ipfs/ipfsSettings'; import Keys from '../Keys/Keys'; -import Audio from 'src/pages/Settings/Audio/Audio'; import Hub from '../Hub/hub'; function RobotRoutes() { @@ -28,7 +28,7 @@ function RobotRoutes() { const newUser = !isLoading && !address; useAdviserTexts({ - defaultText: `${!newUser && 'my'} robot`, + defaultText: `${!newUser ? 'my' : 'welcome to'} robot`, }); return ( diff --git a/src/pages/robot/robot.context.tsx b/src/pages/robot/robot.context.tsx index fcd874bf9..2c78abb5e 100644 --- a/src/pages/robot/robot.context.tsx +++ b/src/pages/robot/robot.context.tsx @@ -1,13 +1,12 @@ import React, { useCallback, useMemo, useState } from 'react'; import { useParams, useLocation, useNavigate } from 'react-router-dom'; -import { CHAIN_ID } from 'src/constants/config'; import usePassportByAddress from 'src/features/passport/hooks/usePassportByAddress'; import usePassportContract from 'src/features/passport/usePassportContract'; import { selectCurrentAddress } from 'src/redux/features/pocket'; import { useAppSelector } from 'src/redux/hooks'; import { routes } from 'src/routes'; import { Citizenship } from 'src/types/citizenship'; -import { Networks } from 'src/types/networks'; +import { isPussyChain } from 'src/utils/chains/pussy'; import { fromBech32 } from 'src/utils/utils'; const RobotContext = React.createContext<{ @@ -113,7 +112,7 @@ function RobotContextProvider({ children }: { children: React.ReactNode }) { } isOwner = isOwner as boolean; - let query = {}; + let query; if (address) { query = { active_passport: { @@ -130,12 +129,16 @@ function RobotContextProvider({ children }: { children: React.ReactNode }) { const passportContract = usePassportContract({ query, - skip: isOwner, + skip: isOwner || !query, }); const currentPassport = isOwner ? currentUserPassport : passportContract; let currentRobotAddress = address || currentPassport.data?.owner || null; + if (isPussyChain && currentRobotAddress) { + currentRobotAddress = fromBech32(currentRobotAddress, 'pussy'); + } + if ( robotUrl && currentUserPassport.data && @@ -154,10 +157,6 @@ function RobotContextProvider({ children }: { children: React.ReactNode }) { ); } - if (CHAIN_ID === Networks.SPACE_PUSSY && currentRobotAddress) { - currentRobotAddress = fromBech32(currentRobotAddress, 'pussy'); - } - const addRefetch = useCallback( (func: () => void) => { setRefetch((items) => [...items, func]); @@ -169,8 +168,7 @@ function RobotContextProvider({ children }: { children: React.ReactNode }) { refetchFuncs.forEach((func) => func()); }, [refetchFuncs]); - const isLoading = - currentPassport.loading || currentPassport.data === undefined; + const isLoading = currentPassport.loading; const contextValue = useMemo( () => ({ From 8dcf4d04d9b993d92ed7e00a9d80e13d0d4a888e Mon Sep 17 00:00:00 2001 From: Cheslav Zhuravsky Date: Thu, 5 Sep 2024 09:57:42 +0700 Subject: [PATCH 4/5] uncoment --- src/pages/Settings/Settings.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/Settings/Settings.tsx b/src/pages/Settings/Settings.tsx index b1deabc6b..fdf1c0a5b 100644 --- a/src/pages/Settings/Settings.tsx +++ b/src/pages/Settings/Settings.tsx @@ -1,4 +1,4 @@ -/* import { Route, Routes } from 'react-router-dom'; +import { Route, Routes } from 'react-router-dom'; import IpfsSettings from 'src/features/ipfs/ipfsSettings'; import Layout from './Layout/Layout'; import Keys from '../Keys/Keys'; @@ -20,4 +20,3 @@ function Settings() { } export default Settings; - */ From 113d4fa903e4d2f4214d3928ec7eff6e8df52240 Mon Sep 17 00:00:00 2001 From: Cheslav Zhuravsky Date: Thu, 5 Sep 2024 10:50:30 +0700 Subject: [PATCH 5/5] updates --- src/components/actionBar/index.tsx | 4 +++- .../Header/CurrentApp/ui/AppName/AppName.tsx | 5 ++++- .../CurrentApp/utils/findSelectAppByUrl.ts | 3 ++- .../Hub/components/DisplayHub/DisplayHub.tsx | 1 + .../Layout/LayoutRoot/RootMenu/RootMenu.tsx | 12 +++++++++++ src/pages/robot/Robot.tsx | 20 ++++++++++++++----- 6 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/components/actionBar/index.tsx b/src/components/actionBar/index.tsx index a54a09431..e63c93db8 100644 --- a/src/components/actionBar/index.tsx +++ b/src/components/actionBar/index.tsx @@ -91,7 +91,9 @@ function ActionBar({ children, text, onClickBack, button }: Props) { ) { return ( - {noAccount && } + {noAccount && ( + + )} {noPassport && location.pathname !== routes.citizenship.path && ( diff --git a/src/containers/application/Header/CurrentApp/ui/AppName/AppName.tsx b/src/containers/application/Header/CurrentApp/ui/AppName/AppName.tsx index 3a58090f4..97c7abdd0 100644 --- a/src/containers/application/Header/CurrentApp/ui/AppName/AppName.tsx +++ b/src/containers/application/Header/CurrentApp/ui/AppName/AppName.tsx @@ -9,7 +9,10 @@ import styles from './AppName.module.scss'; function AppName() { let { pathname } = useLocation(); - const isRobot = pathname.includes('@') || pathname.includes('neuron/'); + const isRobot = + pathname.includes('@') || + pathname.includes('neuron/') || + pathname.includes('robot'); const isOracle = pathname.includes('oracle'); if (isRobot) { diff --git a/src/containers/application/Header/CurrentApp/utils/findSelectAppByUrl.ts b/src/containers/application/Header/CurrentApp/utils/findSelectAppByUrl.ts index d29770e49..2bfd748dd 100644 --- a/src/containers/application/Header/CurrentApp/utils/findSelectAppByUrl.ts +++ b/src/containers/application/Header/CurrentApp/utils/findSelectAppByUrl.ts @@ -10,7 +10,8 @@ const findSelectAppByUrl = ( address: Option ) => { let pathname = url; - const isRobot = url.includes('@') || url.includes('neuron/'); + const isRobot = + url.includes('@') || url.includes('neuron/') || url.includes('robot'); const isOracle = url.includes('oracle'); const itemsMenuObj = reduceRobotSubItems(passport, address); diff --git a/src/pages/Hub/components/DisplayHub/DisplayHub.tsx b/src/pages/Hub/components/DisplayHub/DisplayHub.tsx index d4e81559e..15d9d1500 100644 --- a/src/pages/Hub/components/DisplayHub/DisplayHub.tsx +++ b/src/pages/Hub/components/DisplayHub/DisplayHub.tsx @@ -18,6 +18,7 @@ function DisplayHub({ }) { return ( ) => { return (
    {links.map((link, index) => { const count = counts[link.name] || 0; + if (link.onlyOwner && !isOwner) { + return null; + } + return (
  • } /> } /> } /> - } /> - } /> - } /> - } /> )} @@ -72,6 +70,18 @@ function RobotRoutes() { } /> ))} + } /> + } /> + + } /> + {/* + {['tokens', 'networks', 'channels'].map((path) => ( + } /> + ))} */} + } /> + } /> + } /> + } /> Page should not exist

    } />