legalgo-FE-reactrouter/app/routes/actions.admin.contents.delete.$id.ts

49 lines
1.1 KiB
TypeScript

import { data } from 'react-router'
import { XiorError } from 'xior'
import { deleteContentsRequest } from '~/apis/admin/delete-contents'
import { handleCookie } from '~/libs/cookies'
import type { Route } from './+types/actions.admin.contents.delete.$id'
export const action = async ({ request, params }: Route.ActionArgs) => {
const { staffToken: accessToken } = await handleCookie(request)
const { id } = params
try {
const { data: newsData } = await deleteContentsRequest({
accessToken,
id,
})
return data(
{
success: true,
newsData,
},
{
status: 200,
statusText: 'OK',
},
)
} catch (error) {
if (error instanceof XiorError) {
return data(
{
success: false,
message: error?.response?.data?.error?.message || error.message,
},
{
status: error?.response?.status || 500,
},
)
}
return data(
{
success: false,
message: 'Internal server error',
},
{ status: 500 },
)
}
}