From 63b6fc2ed83c419faae190c4923ccd887933b354 Mon Sep 17 00:00:00 2001 From: Bradley Shellnut Date: Wed, 6 Apr 2022 16:35:59 -0700 Subject: [PATCH] Tweet permalink viewing. --- .../[user]/status/[tweetId]/index.svelte | 15 ++++++++ .../profile/[user]/status/[tweetId]/index.ts | 36 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/routes/home/profile/[user]/status/[tweetId]/index.svelte create mode 100644 src/routes/home/profile/[user]/status/[tweetId]/index.ts diff --git a/src/routes/home/profile/[user]/status/[tweetId]/index.svelte b/src/routes/home/profile/[user]/status/[tweetId]/index.svelte new file mode 100644 index 0000000..3d6943d --- /dev/null +++ b/src/routes/home/profile/[user]/status/[tweetId]/index.svelte @@ -0,0 +1,15 @@ + + + + {name} on Twittr: "{content}..." + + + diff --git a/src/routes/home/profile/[user]/status/[tweetId]/index.ts b/src/routes/home/profile/[user]/status/[tweetId]/index.ts new file mode 100644 index 0000000..15c6183 --- /dev/null +++ b/src/routes/home/profile/[user]/status/[tweetId]/index.ts @@ -0,0 +1,36 @@ +import { timePosted } from "$root/lib/date"; +import prisma from "$root/lib/prisma"; +import type { RequestHandler } from "@sveltejs/kit"; + +export const get: RequestHandler = async ({ params }) => { + const tweet = await prisma.tweet.findFirst({ + where: { url: params.tweetId }, + include: { user: true } + }) + + const liked = await prisma.liked.findMany({ + where: { userId: 1 }, + select: { tweetId: true } + }) + + const likedTweets = Object.keys(liked).map( + key => liked[key].tweetId + ) + + const userTweet = { + id: tweet.id, + content: tweet.content, + likes: tweet.likes, + posted: timePosted(tweet.posted), + url: tweet.url, + avatar: tweet.user.avatar, + handle: tweet.user.handle, + name: tweet.user.name, + liked: likedTweets.includes(tweet.id) + } + + return { + status: 200, + body: { tweet: userTweet } + } +} \ No newline at end of file