-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
feaf2e9
commit 8fdfe63
Showing
15 changed files
with
293 additions
and
308 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
import { invariantResponse } from '@epic-web/invariant' | ||
import { json, type LoaderFunctionArgs } from '@remix-run/node' | ||
import { Link, useLoaderData } from '@remix-run/react' | ||
import { GeneralErrorBoundary } from '#app/components/error-boundary.tsx' | ||
import { floatingToolbarClassName } from '#app/components/floating-toolbar.tsx' | ||
import { Button } from '#app/components/ui/button.tsx' | ||
import { Icon } from '#app/components/ui/icon.tsx' | ||
import { requireUserId } from '#app/utils/auth.server.ts' | ||
import { prisma } from '#app/utils/db.server.ts' | ||
import { useOptionalUser } from '#app/utils/user.ts' | ||
|
||
export async function loader({ params, request }: LoaderFunctionArgs) { | ||
const userId = await requireUserId(request) | ||
const recipient = await prisma.recipient.findUnique({ | ||
where: { id: params.recipientId, userId }, | ||
select: { | ||
id: true, | ||
name: true, | ||
phoneNumber: true, | ||
userId: true, | ||
messages: { | ||
select: { id: true, content: true }, | ||
orderBy: { order: 'asc' }, | ||
where: { sentAt: undefined }, | ||
}, | ||
}, | ||
}) | ||
|
||
invariantResponse(recipient, 'Not found', { status: 404 }) | ||
|
||
return json({ recipient }) | ||
} | ||
|
||
export default function RecipientRoute() { | ||
const data = useLoaderData<typeof loader>() | ||
const user = useOptionalUser() | ||
const isOwner = user?.id === data.recipient.userId | ||
|
||
return ( | ||
<div className="absolute inset-0 flex flex-col px-10"> | ||
<h2 className="mb-2 pt-12 text-h2 lg:mb-6"> | ||
{data.recipient.name} | ||
<small className="block text-sm text-secondary-foreground"> | ||
{data.recipient.phoneNumber} | ||
</small> | ||
</h2> | ||
<div className={`${isOwner ? 'pb-24' : 'pb-12'} overflow-y-auto`}> | ||
{/* <p className="whitespace-break-spaces text-sm md:text-lg"> | ||
{data.recipient.messages.length} | ||
</p> */} | ||
</div> | ||
{isOwner ? ( | ||
<div className={floatingToolbarClassName}> | ||
<div className="grid flex-1 grid-cols-2 justify-end gap-2 min-[525px]:flex md:gap-4"> | ||
<Button | ||
asChild | ||
className="min-[525px]:max-md:aspect-square min-[525px]:max-md:px-0" | ||
> | ||
<Link to="edit"> | ||
<Icon name="pencil-1" className="scale-125 max-md:scale-150"> | ||
<span className="max-md:hidden">Edit</span> | ||
</Icon> | ||
</Link> | ||
</Button> | ||
</div> | ||
</div> | ||
) : null} | ||
</div> | ||
) | ||
} | ||
|
||
export function ErrorBoundary() { | ||
return ( | ||
<GeneralErrorBoundary | ||
statusHandlers={{ | ||
403: () => <p>You are not allowed to do that</p>, | ||
404: ({ params }) => ( | ||
<p>No recipient with the id "{params.recipientId}" exists</p> | ||
), | ||
}} | ||
/> | ||
) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.