From fc4c884adec47fc0212c1f32804f39b4c12fffeb Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Tue, 17 Dec 2024 22:12:19 +0800 Subject: [PATCH] :sparkles: Basic post viewer --- .prettierrc | 6 ++ README.md | 48 ----------- astro.config.mjs | 14 ++-- bun.lockb | Bin 205143 -> 231791 bytes package.json | 6 +- src/layouts/Layout.astro | 23 ++---- src/pages/index.astro | 2 +- src/pages/posts/[...slug].astro | 108 +++++++++++++++++++++++++ src/pages/products/solar-network.astro | 7 ++ src/scripts/attachment.ts | 23 ++++++ tailwind.config.mjs | 46 +++++------ 11 files changed, 189 insertions(+), 94 deletions(-) create mode 100644 .prettierrc delete mode 100644 README.md create mode 100644 src/pages/posts/[...slug].astro create mode 100644 src/pages/products/solar-network.astro create mode 100644 src/scripts/attachment.ts diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..0bf17bf --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "tabWidth": 2, + "singleQuote": true, + "semi": false, + "trailingComma": "es5" +} diff --git a/README.md b/README.md deleted file mode 100644 index ff19a3e..0000000 --- a/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# Astro Starter Kit: Basics - -```sh -npm create astro@latest -- --template basics -``` - -[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/basics) -[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/basics) -[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/basics/devcontainer.json) - -> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! - -![just-the-basics](https://github.com/withastro/astro/assets/2244813/a0a5533c-a856-4198-8470-2d67b1d7c554) - -## 🚀 Project Structure - -Inside of your Astro project, you'll see the following folders and files: - -```text -/ -├── public/ -│ └── favicon.svg -├── src/ -│ ├── layouts/ -│ │ └── Layout.astro -│ └── pages/ -│ └── index.astro -└── package.json -``` - -To learn more about the folder structure of an Astro project, refer to [our guide on project structure](https://docs.astro.build/en/basics/project-structure/). - -## 🧞 Commands - -All commands are run from the root of the project, from a terminal: - -| Command | Action | -| :------------------------ | :----------------------------------------------- | -| `npm install` | Installs dependencies | -| `npm run dev` | Starts local dev server at `localhost:4321` | -| `npm run build` | Build your production site to `./dist/` | -| `npm run preview` | Preview your build locally, before deploying | -| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` | -| `npm run astro -- --help` | Get help using the Astro CLI | - -## 👀 Want to learn more? - -Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat). diff --git a/astro.config.mjs b/astro.config.mjs index 06c991c..a840024 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,12 +1,14 @@ // @ts-check -import { defineConfig } from 'astro/config'; +import { defineConfig } from 'astro/config' -import tailwind from '@astrojs/tailwind'; +import tailwind from '@astrojs/tailwind' -import icon from 'astro-icon'; +import icon from 'astro-icon' + +import mdx from '@astrojs/mdx'; // https://astro.build/config export default defineConfig({ - integrations: [tailwind(), icon()], - prefetch: true -}); \ No newline at end of file + integrations: [tailwind(), icon(), mdx()], + prefetch: true, +}) \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 53b138a512d14c81ca5da089b3fda1d5c3e3cab0..55ccbbfd49084ac875667370763f0115e548ee22 100755 GIT binary patch delta 52874 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 delta 36627 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
LZ~YSJvgQP>n1n?d)xiA~}EbIXN8`$Fqo5)=^l4 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 @@ -10,7 +16,7 @@ import CompanyLogo from "../assets/images/company-logo.png"; - Solsynth LLC + {title ? `${title} | Solsynth LLC` : "Solsynth LLC"} - + Learn more about Solar Network diff --git a/src/pages/posts/[...slug].astro b/src/pages/posts/[...slug].astro new file mode 100644 index 0000000..ae60666 --- /dev/null +++ b/src/pages/posts/[...slug].astro @@ -0,0 +1,108 @@ +--- +export const prerender = false + +import sanitizeHtml from 'sanitize-html' +import { Icon } from 'astro-icon/components' +import { marked } from 'marked' + +import Layout from '../../layouts/Layout.astro' +import { getAttachmentUrl, fetchAttachmentMeta } from '../../scripts/attachment' + +const { slug } = Astro.params + +const baseUrl = import.meta.env.PUBLIC_SOLAR_NETWORK_URL +const resp = await fetch(`${baseUrl}/cgi/co/posts/${slug}`) + +if (resp.status !== 200) { + return new Response(null, { status: 404 }) +} + +const data = await resp.json() + +const rawContent = await marked(data.body.content as string, { + breaks: data.type == 'story', +}) +const content = sanitizeHtml(rawContent) + +const attachments = await fetchAttachmentMeta(data.body.attachments) +--- + + + + +
+
+
+
+ avatar +
+
+
+ + {data.publisher.nick} + @{data.publisher.name} + + {data.publisher.description} +
+
+ + { + data.repost_id && ( + + ) + } + +
+ + { + attachments && ( +
+ {attachments.map((attachment) => ( +
+ + {attachment.alt} + +
+ ))} +
+ ) + } +
+
diff --git a/src/pages/products/solar-network.astro b/src/pages/products/solar-network.astro new file mode 100644 index 0000000..642e6f9 --- /dev/null +++ b/src/pages/products/solar-network.astro @@ -0,0 +1,7 @@ +--- +import Layout from "../../layouts/Layout.astro"; +--- + + + + \ No newline at end of file diff --git a/src/scripts/attachment.ts b/src/scripts/attachment.ts new file mode 100644 index 0000000..9d3d255 --- /dev/null +++ b/src/scripts/attachment.ts @@ -0,0 +1,23 @@ +export function getAttachmentUrl(identifier: string): string { + if (identifier.startsWith('http')) { + return identifier + } + const baseUrl = import.meta.env.PUBLIC_SOLAR_NETWORK_URL + return `${baseUrl}/cgi/uc/attachments/${identifier}` +} + +export async function fetchAttachmentMeta( + identifiers: string[] +): Promise { + if (!identifiers) return [] + + const baseUrl = import.meta.env.PUBLIC_SOLAR_NETWORK_URL + const resp = await fetch( + `${baseUrl}/cgi/uc/attachments?take=${identifiers.length}&id=${identifiers.join(',')}` + ) + if (resp.status !== 200) { + throw new Error(`Failed to fetch attachment meta: ${await resp.text()}`) + } + const out = await resp.json() + return out['data'] +} diff --git a/tailwind.config.mjs b/tailwind.config.mjs index 302834c..1176c3b 100644 --- a/tailwind.config.mjs +++ b/tailwind.config.mjs @@ -1,38 +1,38 @@ /** @type {import('tailwindcss').Config} */ export default { - content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"], + content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], theme: { extend: {}, }, - plugins: [require("@tailwindcss/typography"), require("daisyui")], + plugins: [require('@tailwindcss/typography'), require('daisyui')], daisyui: { themes: [ { - dark: { - primary: "#3f51b5", - secondary: "#4ba6ee", - accent: "#03a9f4", - neutral: "#1f2937", - "base-100": "#000011", - info: "#4994ec", - success: "#67ad5b", - warning: "#f5c344", - error: "#e15241", + light: { + primary: '#3f51b5', + secondary: '#4ba6ee', + accent: '#03a9f4', + neutral: '#4b5563', + 'base-100': '#ffffff', + info: '#4994ec', + success: '#67ad5b', + warning: '#f5c344', + error: '#e15241', }, }, { - light: { - primary: "#3f51b5", - secondary: "#4ba6ee", - accent: "#03a9f4", - neutral: "#4b5563", - "base-100": "#ffffff", - info: "#4994ec", - success: "#67ad5b", - warning: "#f5c344", - error: "#e15241", + dark: { + primary: '#3f51b5', + secondary: '#4ba6ee', + accent: '#03a9f4', + neutral: '#1f2937', + 'base-100': '#000011', + info: '#4994ec', + success: '#67ad5b', + warning: '#f5c344', + error: '#e15241', }, }, ], }, -}; +}