Skip to content

Commit

Permalink
fix - remove profile picture without JS (epicweb-dev#324)
Browse files Browse the repository at this point in the history
Co-authored-by: Kent C. Dodds <[email protected]>
  • Loading branch information
evayde and kentcdodds authored Jul 25, 2023
1 parent 1570aa5 commit e3e7ca5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
10 changes: 8 additions & 2 deletions app/routes/resources+/delete-image.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { parse } from '@conform-to/zod'
import { json, type DataFunctionArgs } from '@remix-run/node'
import { json, type DataFunctionArgs, redirect } from '@remix-run/node'
import { safeRedirect } from 'remix-utils'
import { z } from 'zod'
import { requireUserId } from '~/utils/auth.server.ts'
import { prisma } from '~/utils/db.server.ts'
Expand All @@ -8,6 +9,7 @@ export const ROUTE_PATH = '/resources/delete-image'

const DeleteFormSchema = z.object({
imageId: z.string(),
redirectTo: z.string().optional(),
})

export async function action({ request }: DataFunctionArgs) {
Expand All @@ -29,7 +31,7 @@ export async function action({ request }: DataFunctionArgs) {
if (submission.intent !== 'submit') {
return json({ status: 'success', submission } as const)
}
const { imageId } = submission.value
const { imageId, redirectTo } = submission.value
const image = await prisma.image.findFirst({
select: { fileId: true },
where: {
Expand All @@ -52,5 +54,9 @@ export async function action({ request }: DataFunctionArgs) {
where: { fileId: image.fileId },
})

if (redirectTo) {
return redirect(safeRedirect(redirectTo))
}

return json({ status: 'success' } as const)
}
9 changes: 9 additions & 0 deletions app/routes/settings+/profile.photo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,15 @@ export default function PhotoRoute() {
action={deleteImageRoute.ROUTE_PATH}
onSubmit={() => setNewImageSrc(null)}
>
<ServerOnly>
{() => (
<input
name="redirectTo"
value="/settings/profile/photo"
type="hidden"
/>
)}
</ServerOnly>
<input name="intent" type="hidden" value="submit" />
<input name="imageId" type="hidden" value={data.user?.imageId ?? ''} />
</deleteImageFetcher.Form>
Expand Down

0 comments on commit e3e7ca5

Please sign in to comment.