From 11fd8eddcbe304b7c835eec98acbd5e7a572d7e0 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Fri, 29 Aug 2025 15:39:42 +0530 Subject: [PATCH] fix(web): add optional order field and sort tweets accordingly --- apps/web/src/app/(home)/_components/testimonials.tsx | 2 +- packages/backend/convex/schema.ts | 1 + packages/backend/convex/testimonials.ts | 11 ++++++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/web/src/app/(home)/_components/testimonials.tsx b/apps/web/src/app/(home)/_components/testimonials.tsx index 5a35fb3..1d0a7d4 100644 --- a/apps/web/src/app/(home)/_components/testimonials.tsx +++ b/apps/web/src/app/(home)/_components/testimonials.tsx @@ -106,7 +106,7 @@ export default function Testimonials({ preloadedTestimonialsVideos: Preloaded; }) { const videos = usePreloadedQuery(preloadedTestimonialsVideos).reverse(); - const tweets = usePreloadedQuery(preloadedTestimonialsTweet).reverse(); + const tweets = usePreloadedQuery(preloadedTestimonialsTweet); const getResponsiveColumns = (numCols: number) => { const columns: string[][] = Array(numCols) diff --git a/packages/backend/convex/schema.ts b/packages/backend/convex/schema.ts index b0ceb0f..9ecc44f 100644 --- a/packages/backend/convex/schema.ts +++ b/packages/backend/convex/schema.ts @@ -27,6 +27,7 @@ export default defineSchema({ tweets: defineTable({ tweetId: v.string(), + order: v.optional(v.number()), }), showcase: defineTable({ diff --git a/packages/backend/convex/testimonials.ts b/packages/backend/convex/testimonials.ts index fe95372..127e8e1 100644 --- a/packages/backend/convex/testimonials.ts +++ b/packages/backend/convex/testimonials.ts @@ -23,9 +23,18 @@ export const getTweets = query({ _id: v.id("tweets"), _creationTime: v.number(), tweetId: v.string(), + order: v.optional(v.number()), }), ), handler: async (ctx) => { - return await ctx.db.query("tweets").collect(); + const rows = await ctx.db.query("tweets").collect(); + return rows.sort((a, b) => { + const aHas = typeof a.order === "number"; + const bHas = typeof b.order === "number"; + if (aHas && bHas) return (a.order as number) - (b.order as number); + if (aHas && !bHas) return -1; + if (!aHas && bHas) return 1; + return b._creationTime - a._creationTime; + }); }, });