diff --git a/package.json b/package.json index 169b463f..309a6431 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "dependencies": { "@capacitor/app": "1.1.1", "@floating-ui/react": "0.26.1", - "@plebbit/plebbit-react-hooks": "https://github.com/plebbit/plebbit-react-hooks.git#63833e978ca25f9846544d32b9c67810af0daf19", + "@plebbit/plebbit-react-hooks": "https://github.com/plebbit/plebbit-react-hooks.git#00aabcce2276c671c0f4a371d459c93eb39c936a", "@testing-library/jest-dom": "5.14.1", "@testing-library/react": "13.0.0", "@testing-library/user-event": "13.2.1", diff --git a/src/app.tsx b/src/app.tsx index 7183a6ba..b86c0056 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -1,33 +1,39 @@ import { useEffect } from 'react'; import { Outlet, Route, Routes, useLocation, useParams } from 'react-router-dom'; import { isHomeView } from './lib/utils/view-utils'; -import { useSubplebbit } from '@plebbit/plebbit-react-hooks'; -import styles from './app.module.css'; +import { Subplebbit as SubplebbitType, useSubplebbits } from '@plebbit/plebbit-react-hooks'; +import { useDefaultSubplebbitAddresses } from './hooks/use-default-subplebbits'; import useTheme from './hooks/use-theme'; +import styles from './app.module.css'; import Home from './views/home'; import Settings from './views/settings'; import Subplebbit from './views/subplebbit'; import BoardNav from './components/board-nav'; import BoardBanner from './components/board-banner'; +import { DesktopBoardButtons } from './components/board-buttons'; +import { MobileBoardButtons } from './components/board-buttons'; import BoardStats from './components/board-stats'; import PostForm from './components/post-form'; -import { MobileBoardButtons } from './components/board-buttons'; -import { DesktopBoardButtons } from './components/board-buttons'; -const BoardLayout = () => { +interface BoardLayoutProps { + subplebbits: (SubplebbitType | undefined)[]; +} + +const BoardLayout = ({ subplebbits }: BoardLayoutProps) => { const { subplebbitAddress } = useParams<{ subplebbitAddress: string }>(); - const subplebbit = useSubplebbit({ subplebbitAddress }); + const subplebbit = subplebbits.find((s) => s?.address === subplebbitAddress); + const { address, createdAt, title } = subplebbit || {}; return ( <> - {subplebbitAddress && ( + {address && ( <> - - - - - - + + + + + + )} @@ -40,6 +46,9 @@ const App = () => { const location = useLocation(); const isInHomeView = isHomeView(location.pathname); + const subplebbitAddresses = useDefaultSubplebbitAddresses(); + const { subplebbits } = useSubplebbits({ subplebbitAddresses }); + useEffect(() => { document.body.classList.forEach((className) => document.body.classList.remove(className)); document.body.classList.add(theme); @@ -55,9 +64,9 @@ const App = () => { return (
- } /> - }> - } /> + } /> + }> + } /> } /> diff --git a/src/components/board-nav/board-nav.module.css b/src/components/board-nav/board-nav.module.css index 41e5a8dd..a44ffacf 100644 --- a/src/components/board-nav/board-nav.module.css +++ b/src/components/board-nav/board-nav.module.css @@ -28,6 +28,16 @@ font-size: var(--boardnav-mobile-font-size); } +.boardNavMobile .pageJump a { + color: var(--button-text-color-mobile); + text-decoration: var(--button-text-decoration-mobile); +} + +.boardNavMobile .pageJump a:hover { + color: var(--button-text-color-hover-mobile); + text-decoration: var(--button-text-decoration-hover-mobile); +} + .boardNavMobile strong { text-transform: capitalize; padding-right: 5px; diff --git a/src/components/board-nav/board-nav.tsx b/src/components/board-nav/board-nav.tsx index 309ceb7e..3c7dd92f 100644 --- a/src/components/board-nav/board-nav.tsx +++ b/src/components/board-nav/board-nav.tsx @@ -1,11 +1,11 @@ import { Link, useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; -import useDefaultSubplebbits from '../../hooks/use-default-subplebbits'; +import { Subplebbit } from '@plebbit/plebbit-react-hooks'; import styles from './board-nav.module.css'; interface BoardNavProps { address?: string | undefined; - subplebbits?: any; + subplebbits: (Subplebbit | undefined)[]; currentSubplebbit?: string | undefined; } @@ -16,15 +16,19 @@ const BoardNavDesktop = ({ subplebbits }: BoardNavProps) => {
[ - {subplebbits.map((subplebbit: any, index: number) => ( - - {index === 0 ? null : ' '} - - {subplebbit.address.includes('.') ? subplebbit.address : subplebbit.title || subplebbit.address.slice(0, 10).concat('...')} - - {index !== subplebbits.length - 1 ? ' /' : null} - - ))} + {subplebbits.map((subplebbit: any, index: number) => { + const address = subplebbit?.address || ''; + const title = subplebbit?.title || ''; + return ( + + {index === 0 ? null : ' '} + + {address.includes('.') ? address : title || address.slice(0, 10).concat('...')} + + {index !== subplebbits.length - 1 ? ' /' : null} + + ); + })} ] @@ -39,7 +43,7 @@ const BoardNavMobile = ({ subplebbits, currentSubplebbit }: BoardNavProps) => { const navigate = useNavigate(); const displaySubplebbitAddress = currentSubplebbit && currentSubplebbit.length > 30 ? currentSubplebbit.slice(0, 30).concat('...') : currentSubplebbit; - const currentSubplebbitIsInList = subplebbits.some((subplebbit: any) => subplebbit.address === currentSubplebbit); + const currentSubplebbitIsInList = subplebbits.some((subplebbit: any) => subplebbit?.address === currentSubplebbit); const boardSelect = (