|
1 | 1 | import { json, Session } from "@remix-run/node"; |
2 | 2 | import { createCookieSessionStorage } from "@remix-run/node"; |
3 | | -import { redirect } from "remix-typedjson"; |
| 3 | +import { redirect, typedjson } from "remix-typedjson"; |
4 | 4 | import { env } from "~/env.server"; |
5 | 5 |
|
6 | 6 | export type ToastMessage = { |
@@ -121,6 +121,44 @@ export async function jsonWithErrorMessage( |
121 | 121 | }); |
122 | 122 | } |
123 | 123 |
|
| 124 | +export async function typedJsonWithSuccessMessage<T>( |
| 125 | + data: T, |
| 126 | + request: Request, |
| 127 | + message: string, |
| 128 | + options?: ToastMessageOptions |
| 129 | +) { |
| 130 | + const session = await getSession(request.headers.get("cookie")); |
| 131 | + |
| 132 | + setSuccessMessage(session, message, options); |
| 133 | + |
| 134 | + return typedjson(data, { |
| 135 | + headers: { |
| 136 | + "Set-Cookie": await commitSession(session, { |
| 137 | + expires: new Date(Date.now() + ONE_YEAR), |
| 138 | + }), |
| 139 | + }, |
| 140 | + }); |
| 141 | +} |
| 142 | + |
| 143 | +export async function typedJsonWithErrorMessage<T>( |
| 144 | + data: T, |
| 145 | + request: Request, |
| 146 | + message: string, |
| 147 | + options?: ToastMessageOptions |
| 148 | +) { |
| 149 | + const session = await getSession(request.headers.get("cookie")); |
| 150 | + |
| 151 | + setErrorMessage(session, message, options); |
| 152 | + |
| 153 | + return typedjson(data, { |
| 154 | + headers: { |
| 155 | + "Set-Cookie": await commitSession(session, { |
| 156 | + expires: new Date(Date.now() + ONE_YEAR), |
| 157 | + }), |
| 158 | + }, |
| 159 | + }); |
| 160 | +} |
| 161 | + |
124 | 162 | export async function redirectWithSuccessMessage( |
125 | 163 | path: string, |
126 | 164 | request: Request, |
|
0 commit comments