From dcb9e9216eaf20f3e02d216fb4c1f3743affa0dd Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 3 Feb 2026 21:57:08 +0000 Subject: [PATCH 1/9] Unify message thread appearance Co-authored-by: me --- .../_app+/recipients+/$recipientId.index.tsx | 255 ++++++++---------- 1 file changed, 118 insertions(+), 137 deletions(-) diff --git a/app/routes/_app+/recipients+/$recipientId.index.tsx b/app/routes/_app+/recipients+/$recipientId.index.tsx index b73efce..4f5b652 100644 --- a/app/routes/_app+/recipients+/$recipientId.index.tsx +++ b/app/routes/_app+/recipients+/$recipientId.index.tsx @@ -536,9 +536,12 @@ export default function RecipientRoute() { }, [handleScroll, scrollContainer]) const isPastFiltered = Boolean(data.searchQuery || data.dateFilter) - const emptyPastMessage = isPastFiltered + const hasPastMessages = pastMessagesForDisplay.length > 0 + const hasFutureMessages = data.futureMessages.length > 0 + const hasAnyMessages = hasPastMessages || hasFutureMessages + const emptyThreadMessage = isPastFiltered ? 'No messages match your search.' - : 'No past messages yet.' + : 'No messages yet.' const loadMoreLabel = pastNextCursor ? isLoadingMore ? 'Loading earlier messages...' @@ -559,24 +562,22 @@ export default function RecipientRoute() {

- Past messages + Messages

- {pastMessagesForDisplay.length === 0 ? ( -

- {emptyPastMessage} -

- ) : ( + {hasAnyMessages ? (
-
- {loadMoreLabel} -
+ {hasPastMessages || pastNextCursor ? ( +
+ {loadMoreLabel} +
+ ) : null}
    {pastMessagesForDisplay.map((m) => (
  • @@ -591,32 +592,24 @@ export default function RecipientRoute() {
  • ))} + {data.futureMessages.map((m) => ( + + ))}
- )} -
-
-
-

- Upcoming messages -

-
    - {data.futureMessages.length ? ( - data.futureMessages.map((m, index) => ( -
  • - -
  • - )) ) : ( - - Create a new message - +
    +

    {emptyThreadMessage}

    + + Create a new message + +
    )} -
+
() const sendNowFetcher = useFetcher() const deleteFetcher = useFetcher() @@ -687,13 +674,10 @@ function MessageForms({ }, shouldRevalidate: 'onBlur', }) - const isPrimary = index % 2 === 0 - const cardTone = isPrimary - ? 'bg-[hsl(var(--palette-green-500))]' - : 'bg-[hsl(var(--palette-blues))]' - const headerText = message.sendAtDisplay + const cardTone = 'bg-[hsl(var(--palette-blues))]' + const scheduleLabel = message.sendAtDisplay ? `Scheduled for ${message.sendAtDisplay}` - : 'Message' + : 'Scheduled message' const sendErrors = getResultErrors(sendNowFetcher.data?.result) const deleteErrors = getResultErrors(deleteFetcher.data?.result) const updateIsPending = updateContentFetcher.state !== 'idle' @@ -744,99 +728,96 @@ function MessageForms({ } return ( -
-
-
+
+ -
-
- - {headerText} -
-
- {showSaveButton ? ( - - - Save - - ) : null} - { - if (!open) setConfirmDelete(false) - }} - > - - - - - - - Send Now - - - - Edit Message - - - - - {confirmDelete ? 'Confirm delete' : 'Delete'} - - - -
-
- + +