From f34da9f5c15f4e3f61bc05b57e7acb837f40af01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B3=E5=85=83=E7=9A=93?= Date: Sun, 25 May 2025 00:13:49 +0800 Subject: [PATCH] Add a basic news view page. --- .gitignore | 2 +- components/app/windows/chatbot.vue | 7 +-- components/app/windows/news.vue | 74 ++++++++++++++++++++++++++++- components/app/windows/newsView.vue | 2 +- components/app/windows/settings.vue | 4 +- pages/desktop.vue | 10 +--- server/api/ai/chat/[slug].ts | 6 +-- server/api/ai/summerize/[slug].ts | 7 ++- server/api/cached/tabs.ts | 3 ++ 9 files changed, 90 insertions(+), 25 deletions(-) create mode 100644 server/api/cached/tabs.ts diff --git a/.gitignore b/.gitignore index 05851ba..3f53968 100644 --- a/.gitignore +++ b/.gitignore @@ -31,7 +31,7 @@ __pycache__ .env.sentry-build-plugin *.sql -!database/*.sql +!database/*.sql/ _dt_*.py # Testing files diff --git a/components/app/windows/chatbot.vue b/components/app/windows/chatbot.vue index f12cac5..7263ef2 100644 --- a/components/app/windows/chatbot.vue +++ b/components/app/windows/chatbot.vue @@ -56,7 +56,6 @@ onMounted(async () => { } = useFetch(`/api/ai/chat/${chatId.value}`);*/ }); - const sendMessage = async (newMessage: any) => { if (!newMessage.trim() || !newsId.value.trim() || isStreaming.value) { return; @@ -68,7 +67,7 @@ const sendMessage = async (newMessage: any) => { user: true, timestamp: new Date(), }); - messageIndex.value += 1 + messageIndex.value += 1; try { isStreaming.value = true; @@ -183,9 +182,7 @@ const formatTime = (timestamp: any) => {
-
- -
+
diff --git a/components/app/windows/news.vue b/components/app/windows/news.vue index c689e02..1cd100b 100644 --- a/components/app/windows/news.vue +++ b/components/app/windows/news.vue @@ -1,5 +1,77 @@ + diff --git a/components/app/windows/newsView.vue b/components/app/windows/newsView.vue index 20bb875..c514617 100644 --- a/components/app/windows/newsView.vue +++ b/components/app/windows/newsView.vue @@ -15,7 +15,7 @@ const activateAiSummary = ref(false);
AI Summary: -
{{ }}
+
{{}}
diff --git a/components/app/windows/settings.vue b/components/app/windows/settings.vue index 6c57829..7b8b46c 100644 --- a/components/app/windows/settings.vue +++ b/components/app/windows/settings.vue @@ -1,3 +1,3 @@ \ No newline at end of file +
+ diff --git a/pages/desktop.vue b/pages/desktop.vue index 2a523f6..02eb429 100644 --- a/pages/desktop.vue +++ b/pages/desktop.vue @@ -40,16 +40,13 @@ import ChatbotWindow from "~/components/app/windows/chatbot.vue"; import AboutNewsOrgWindow from "~/components/app/windows/aboutNewsOrg.vue"; import TTYWindow from "~/components/app/windows/tty.vue"; import FavStaredWindow from "~/components/app/windows/fav.vue"; -import Error404Window from "~/components/app/windows/error404.vue"; import NewsWindow from "~/components/app/windows/news.vue"; import NewsViewWindow from "~/components/app/windows/newsView.vue"; -import SettingsWindow from "~/components/app/windows/settings.vue" +import SettingsWindow from "~/components/app/windows/settings.vue"; // Import Icons import { ComputerDesktopIcon, - UserIcon, - LanguageIcon, ChevronRightIcon, } from "@heroicons/vue/24/outline"; @@ -230,10 +227,6 @@ const unMinWindow = (windowName?: string) => { const toggleMenu = () => { menuOpen.value = !menuOpen.value; }; -// Lang Menu -const toggleLangMenu = () => { - langMenuOpen.value = !langMenuOpen.value; -}; // ?openapp= component onMounted(async () => { @@ -377,6 +370,7 @@ onMounted(() => { }, 2000); }); +// Loading Effect. watchEffect((cleanupFn) => { const tier = setTimeout(() => (progress.value = 10), Math.random() * 50); const timer = setTimeout(() => (progress.value = 30), Math.random() * 100); diff --git a/server/api/ai/chat/[slug].ts b/server/api/ai/chat/[slug].ts index 1b68fa6..619cbcb 100644 --- a/server/api/ai/chat/[slug].ts +++ b/server/api/ai/chat/[slug].ts @@ -4,9 +4,9 @@ import sql from "~/server/components/postgres"; const groq = new Groq(); export default defineEventHandler(async (event) => { - const host = getRequestHost(event); - const protocol = getRequestProtocol(event); - const hears = getRequestHeaders(event); + const host = getRequestHost(event); + const protocol = getRequestProtocol(event); + const hears = getRequestHeaders(event); const slug = getRouterParam(event, "slug"); const body = await readBody(event); if (!slug) { diff --git a/server/api/ai/summerize/[slug].ts b/server/api/ai/summerize/[slug].ts index 0ec15f3..747ef49 100644 --- a/server/api/ai/summerize/[slug].ts +++ b/server/api/ai/summerize/[slug].ts @@ -4,8 +4,8 @@ import sql from "~/server/components/postgres"; const groq = new Groq(); export default defineEventHandler(async (event) => { - const host = getRequestHost(event); - const protocol = getRequestProtocol(event); + const host = getRequestHost(event); + const protocol = getRequestProtocol(event); const slug = getRouterParam(event, "slug"); const buildURL = protocol + "://" + host + "/api/news/get/lt/" + slug; const data = await fetch(buildURL); @@ -29,7 +29,7 @@ export default defineEventHandler(async (event) => { stop: null, }); - const stream = new ReadableStream({ + const stream = new ReadableStream({ async start(controller) { try { for await (const chunk of chatCompletion) { @@ -46,5 +46,4 @@ export default defineEventHandler(async (event) => { }, }); return sendStream(event, stream); - }); diff --git a/server/api/cached/tabs.ts b/server/api/cached/tabs.ts new file mode 100644 index 0000000..0cb728f --- /dev/null +++ b/server/api/cached/tabs.ts @@ -0,0 +1,3 @@ +export default defineEventHandler(async (event) => { + return "cool"; +});