From 8cbdc7c8704594bc80b9f9222fee7e9d151bafdc Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 4 Jan 2025 12:48:34 +0800 Subject: [PATCH] :sparkles: App drawer :lipstick: Support breaks for story posts --- bun.lockb | Bin 236209 -> 237962 bytes next.config.ts | 11 ++++- package.json | 1 + src/components/CapAppBar.tsx | 86 ++++++++++++++++++++++------------ src/components/CapDrawer.tsx | 87 +++++++++++++++++++++++++++++++++++ src/pages/posts/[...id].tsx | 43 +++++++++++------ 6 files changed, 183 insertions(+), 45 deletions(-) create mode 100644 src/components/CapDrawer.tsx diff --git a/bun.lockb b/bun.lockb index 0c00167f21b920a4230402ca23fc79c0db4060a9..2e09d4e6dcd80221a62614cd4cdad8b1ba33ce41 100755 GIT binary patch delta 46371 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 DlH=g# delta 45769 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 ReIeWUP#a-wnd|j^>VK=9!XN+u diff --git a/next.config.ts b/next.config.ts index b441baf..e33df0a 100644 --- a/next.config.ts +++ b/next.config.ts @@ -4,7 +4,16 @@ const nextConfig: NextConfig = { /* config options here */ reactStrictMode: true, images: { - domains: ['raw.sn.solsynth.dev', 'api.sn.solsynth.dev'], + remotePatterns: [ + { + protocol: 'https', + hostname: 'raw.sn.solsynth.dev', + }, + { + protocol: 'https', + hostname: 'api.sn.solsynth.dev', + }, + ], }, } diff --git a/package.json b/package.json index 12fb9d3..c93b86e 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "react-hook-form": "^7.54.2", "rehype-sanitize": "^6.0.0", "rehype-stringify": "^10.0.1", + "remark-breaks": "^4.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.1", "unified": "^11.0.5", diff --git a/src/components/CapAppBar.tsx b/src/components/CapAppBar.tsx index c600af6..e7226ab 100644 --- a/src/components/CapAppBar.tsx +++ b/src/components/CapAppBar.tsx @@ -3,11 +3,10 @@ import { AppBar, AppBarProps, Avatar, - createTheme, IconButton, - ThemeProvider, Toolbar, Typography, + useMediaQuery, useScrollTrigger, useTheme, } from '@mui/material' @@ -15,11 +14,13 @@ import { getAttachmentUrl } from '@/services/network' import MenuIcon from '@mui/icons-material/Menu' import AccountCircle from '@mui/icons-material/AccountCircle' import Link from 'next/link' -import React from 'react' +import React, { useState } from 'react' +import { CapDrawer } from './CapDrawer' interface ElevationAppBarProps { elevation?: number color?: any + isMobile: boolean children?: React.ReactElement<{ elevation?: number } & AppBarProps> } @@ -51,38 +52,63 @@ export function CapAppBar() { const userStore = useUserStore() const theme = useTheme() - return ( - - - - - - - - - Capital - - + const isMobile = useMediaQuery(theme.breakpoints.down('md')) - + const [open, setOpen] = useState(false) + + const drawerWidth = 280 + + return ( + <> + setOpen(false)} /> + + + + setOpen(true)} > - {userStore.account ? ( - - ) : ( - - - - )} + - - - - + + + Capital + + + + + + {userStore.account ? ( + + ) : ( + + + + )} + + + + + + ) } diff --git a/src/components/CapDrawer.tsx b/src/components/CapDrawer.tsx new file mode 100644 index 0000000..8c7e1e2 --- /dev/null +++ b/src/components/CapDrawer.tsx @@ -0,0 +1,87 @@ +import { + Box, + List, + ListItem, + ListItemButton, + ListItemIcon, + ListItemText, + Divider, + Drawer, + Toolbar, +} from '@mui/material' +import { JSX } from 'react' + +import FeedIcon from '@mui/icons-material/Feed' +import PhotoLibraryIcon from '@mui/icons-material/PhotoLibrary' +import InfoIcon from '@mui/icons-material/Info' +import PolicyIcon from '@mui/icons-material/Policy' +import Link from 'next/link' + +interface NavLink { + title: string + icon: JSX.Element + href: string +} + +export function CapDrawer({ width, open, onClose }: { width: number; open: boolean; onClose: () => void }) { + const functionLinks: NavLink[] = [ + { + title: 'Posts', + icon: , + href: '/posts', + }, + { + title: 'Gallery', + icon: , + href: '/attachments', + }, + ] + + const additionalLinks: NavLink[] = [ + { + title: 'About', + icon: , + href: '/about', + }, + { + title: 'Term & Conditions', + icon: , + href: '/terms', + }, + ] + + return ( + + + Solsynth LLC + + + + {functionLinks.map((l) => ( + + + + {l.icon} + + + + + ))} + + + + {additionalLinks.map((l) => ( + + + + {l.icon} + + + + + ))} + + + + ) +} diff --git a/src/pages/posts/[...id].tsx b/src/pages/posts/[...id].tsx index f50a9d4..ce5a879 100644 --- a/src/pages/posts/[...id].tsx +++ b/src/pages/posts/[...id].tsx @@ -22,6 +22,7 @@ import Head from 'next/head' import Image from 'next/image' import rehypeSanitize from 'rehype-sanitize' import rehypeStringify from 'rehype-stringify' +import remarkBreaks from 'remark-breaks' import remarkParse from 'remark-parse' import remarkRehype from 'remark-rehype' @@ -32,15 +33,12 @@ export const getServerSideProps = (async (context) => { try { const { data: post } = await sni.get('/cgi/co/posts/' + id.join(':')) if (post.body.content) { - if (!post.body.description) { - post.body.description = post.body.content.replaceAll('\n', ' ').substring(0, 200) + let processor: any = unified().use(remarkParse) + if (post.type != 'article') { + processor = processor.use(remarkBreaks) } - const out = await unified() - .use(remarkParse) - .use(remarkRehype) - .use(rehypeSanitize) - .use(rehypeStringify) - .process(post.body.content) + const out = await processor.use(remarkRehype).use(rehypeSanitize).use(rehypeStringify).process(post.body.content) + post.body.rawContent = post.body.content post.body.content = String(out) } let attachments: SnAttachment[] = [] @@ -49,6 +47,7 @@ export const getServerSideProps = (async (context) => { } return { props: { post, attachments } } } catch (err) { + console.error(err) return { notFound: true, } @@ -72,7 +71,11 @@ export default function Post({ post, attachments }: InferGetServerSidePropsType< : `Post #${post.id} / @${post.publisher.name} / Solar Network`, [post], ) - const description = useMemo(() => post.body.description, [post]) + const description = useMemo( + () => + post.body.description ? post.body.description : post.body.rawContent.replaceAll('\n', ' ').substring(0, 200), + [post], + ) const image = useMemo(() => { if (post.body.thumbnail) { @@ -80,21 +83,21 @@ export default function Post({ post, attachments }: InferGetServerSidePropsType< } if (attachments) { const images = attachments.filter((a) => a.mimetype.startsWith('image')) - if (images) return getAttachmentUrl(images[0].rid) + if (images && images[0]) return getAttachmentUrl(images[0].rid) } return null }, [post]) const video = useMemo(() => { if (attachments) { const videos = attachments.filter((a) => a.mimetype.startsWith('video')) - if (videos) return getAttachmentUrl(videos[0].rid) + if (videos && videos[0]) return getAttachmentUrl(videos[0].rid) } return null }, [post]) const audio = useMemo(() => { if (attachments) { const audios = attachments.filter((a) => a.mimetype.startsWith('audio')) - if (audios) return getAttachmentUrl(audios[0].rid) + if (audios && audios[0]) return getAttachmentUrl(audios[0].rid) } return null }, [post]) @@ -201,9 +204,21 @@ export default function Post({ post, attachments }: InferGetServerSidePropsType< {attachments && ( - + {attachments.map((a) => ( - + + + ))} )}