Merge pull request #376 from Irev-Dev/kurt/375-missing-images

missing images
This commit was merged in pull request #376.
This commit is contained in:
Kurt Hutten
2021-06-25 05:36:49 +10:00
committed by GitHub
9 changed files with 1373 additions and 1849 deletions

5
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"cSpell.words": [
"Hutten"
]
}

View File

@@ -5,7 +5,6 @@
"dependencies": { "dependencies": {
"@redwoodjs/api": "^0.34.1", "@redwoodjs/api": "^0.34.1",
"@sentry/node": "^6.5.1", "@sentry/node": "^6.5.1",
"cloudinary": "^1.23.0", "cloudinary": "^1.23.0"
"graphql-tag": "^2.12.4"
} }
} }

View File

@@ -26,7 +26,7 @@ app.post('/cadquery/stl', async (req, res) => {
console.log('making post request to 5060') console.log('making post request to 5060')
try { try {
const { data } = await axios.post(invocationURL(5060), { const { data } = await axios.post(invocationURL(5060), {
body: req.body body: req.body,
}) })
res.status(data.statusCode) res.status(data.statusCode)
res.send(data.body) res.send(data.body)

View File

@@ -17,9 +17,7 @@ export const handler = createGraphQLHandler({
schemas, schemas,
services: makeServices({ services }), services: makeServices({ services }),
}), }),
plugins: [ plugins: [createSentryApolloPlugin()],
createSentryApolloPlugin(),
],
onException: () => { onException: () => {
// Disconnect from your database with an unhandled exception. // Disconnect from your database with an unhandled exception.
db.$disconnect() db.$disconnect()

View File

@@ -62,45 +62,44 @@ export const createSentryApolloPlugin: Config['plugins'][number] = () => ({
// If we couldn't parse the operation, don't // If we couldn't parse the operation, don't
// do anything here // do anything here
if (!ctx.operation) { if (!ctx.operation) {
return; return
} }
for (const err of ctx.errors) { for (const err of ctx.errors) {
// Only report internal server errors, // Only report internal server errors,
// all errors extending ApolloError should be user-facing // all errors extending ApolloError should be user-facing
if (err instanceof ApolloError) { if (err instanceof ApolloError) {
continue; continue
} }
// Add scoped report details and send to Sentry // Add scoped report details and send to Sentry
Sentry.withScope(scope => { Sentry.withScope((scope) => {
// Annotate whether failing operation was query/mutation/subscription // Annotate whether failing operation was query/mutation/subscription
scope.setTag("kind", ctx.operation.operation); scope.setTag('kind', ctx.operation.operation)
// Log query and variables as extras (make sure to strip out sensitive data!) // Log query and variables as extras (make sure to strip out sensitive data!)
scope.setExtra("query", ctx.request.query); scope.setExtra('query', ctx.request.query)
scope.setExtra("variables", ctx.request.variables); scope.setExtra('variables', ctx.request.variables)
if (err.path) { if (err.path) {
// We can also add the path as breadcrumb // We can also add the path as breadcrumb
scope.addBreadcrumb({ scope.addBreadcrumb({
category: "query-path", category: 'query-path',
message: err.path.join(" > "), message: err.path.join(' > '),
level: Sentry.Severity.Debug level: Sentry.Severity.Debug,
}); })
} }
const transactionId = ctx.request.http.headers.get( const transactionId =
"x-transaction-id" ctx.request.http.headers.get('x-transaction-id')
);
if (transactionId) { if (transactionId) {
scope.setTransaction(transactionId); scope.setTransaction(transactionId)
} }
Sentry.captureException(err); Sentry.captureException(err)
}); })
} }
} },
} }
} },
}) })

View File

@@ -77,13 +77,13 @@ export const updatePart = async ({ id, input }) => {
} }
const originalPart = await db.part.findUnique({ where: { id } }) const originalPart = await db.part.findUnique({ where: { id } })
const imageToDestroy = const imageToDestroy =
originalPart.mainImage !== input.mainImage && originalPart.mainImage originalPart.mainImage !== input.mainImage && input.mainImage && originalPart.mainImage
const update = await db.part.update({ const update = await db.part.update({
data: foreignKeyReplacement(input), data: foreignKeyReplacement(input),
where: { id }, where: { id },
}) })
if (imageToDestroy) { if (imageToDestroy) {
console.log(`image destroyed, publicId: ${imageToDestroy}, partId: ${id}`) console.log(`image destroyed, publicId: ${imageToDestroy}, partId: ${id}, replacing image is ${input.mainImage}`)
// destroy after the db has been updated // destroy after the db has been updated
destroyImage({ publicId: imageToDestroy }) destroyImage({ publicId: imageToDestroy })
} }

View File

@@ -22,7 +22,7 @@ const SmallLoadingPing = (
) )
const BigLoadingPing = () => ( const BigLoadingPing = () => (
<div className="inset-0 absolute flex items-center justify-center"> <div className="inset-0 absolute flex items-center justify-center bg-ch-gray-800">
<div className="h-16 w-16 bg-pink-600 rounded-full animate-ping"></div> <div className="h-16 w-16 bg-pink-600 rounded-full animate-ping"></div>
</div> </div>
) )

View File

@@ -13,6 +13,7 @@ const OutBound = ({ className, children, to }) => {
}) })
return true return true
}} }}
rel="noreferrer"
> >
{children} {children}
</a> </a>

File diff suppressed because it is too large Load Diff