diff --git a/convex/users.ts b/convex/users.ts index 2166aa6..2ff821d 100644 --- a/convex/users.ts +++ b/convex/users.ts @@ -1,4 +1,5 @@ import { v } from 'convex/values'; +import { UserDto } from './../src/app/types/index'; import { QueryCtx, internalMutation, @@ -15,7 +16,7 @@ export async function userQuery(ctx: QueryCtx, clerkUserId: string) { export const getUserByClerkId = query({ args: { clerkUserId: v.string() }, - async handler(ctx, args) { + async handler(ctx, args): Promise { const user = await userQuery(ctx, args.clerkUserId); if (user === null) { diff --git a/src/app/types/index.ts b/src/app/types/index.ts new file mode 100644 index 0000000..2ddc91d --- /dev/null +++ b/src/app/types/index.ts @@ -0,0 +1,10 @@ +import { Doc, Id } from '../../../convex/_generated/dataModel'; + +export type UserDto = { + _id: Id<'users'>; + _creationTime: number; + clerkUsername: string | null; + clerkImageUrl: string; +}; + +export type PostWithUserDto = Doc<'posts'> & { user: UserDto }; diff --git a/src/components/Post.tsx b/src/components/Post.tsx index 6073f4b..c77540b 100644 --- a/src/components/Post.tsx +++ b/src/components/Post.tsx @@ -2,19 +2,9 @@ import { Text } from '@codemirror/state'; import Image from 'next/image'; import { Doc, Id } from '../../convex/_generated/dataModel'; import PostContent from './PostContent'; +import { PostWithUserDto } from '@/app/types'; -export default function Post({ - post, -}: { - post: Doc<'posts'> & { - user: { - _id: Id<'users'>; - _creationTime: number; - clerkUsername: string | null; - clerkImageUrl: string; - }; - }; -}) { +export default function Post({ post }: { post: PostWithUserDto }) { const username = post.user.clerkUsername ?? post.user._id; const createdPostDate = new Date(post._creationTime); const postYear = createdPostDate.getFullYear(); diff --git a/src/components/UserPosts.tsx b/src/components/UserPosts.tsx index 152c827..1d73f12 100644 --- a/src/components/UserPosts.tsx +++ b/src/components/UserPosts.tsx @@ -1,21 +1,12 @@ 'use client'; +import { UserDto } from '@/app/types'; import { usePaginatedQuery } from 'convex/react'; import { api } from '../../convex/_generated/api'; -import { Id } from '../../convex/_generated/dataModel'; import Post from './Post'; import SpinningLoader from './SpinningLoader'; -export default function UserPosts({ - user, -}: { - user: { - _id: Id<'users'>; - _creationTime: number; - clerkUsername: string | null; - clerkImageUrl: string; - }; -}) { +export default function UserPosts({ user }: { user: UserDto }) { const PAGE_SIZE = 1; const pager = usePaginatedQuery( api.posts.getUsersPostById, diff --git a/src/components/UserProfile.tsx b/src/components/UserProfile.tsx index 5994a76..17226af 100644 --- a/src/components/UserProfile.tsx +++ b/src/components/UserProfile.tsx @@ -1,17 +1,9 @@ import Image from 'next/image'; import { AiFillCalendar } from 'react-icons/ai'; import { Doc, Id } from '../../convex/_generated/dataModel'; +import { UserDto } from '@/app/types'; -export default function UserProfile({ - user, -}: { - user: { - _id: Id<'users'>; - _creationTime: number; - clerkUsername: string | null; - clerkImageUrl: string; - }; -}) { +export default function UserProfile({ user }: { user: UserDto }) { const username = user.clerkUsername ?? user._id; const userCreatedDate = new Date(user._creationTime); const monthJoined = userCreatedDate.toLocaleString(undefined, {