From db13d76cbdbe1cca5d6d7e61a7294162f07f2e54 Mon Sep 17 00:00:00 2001 From: Chris Bongers Date: Wed, 4 Feb 2026 17:04:40 +0200 Subject: [PATCH] fix: we upload in webapp already --- src/common/schema/feedback.ts | 1 + src/entity/Feedback.ts | 3 --- src/schema/feedback.ts | 47 +++++------------------------------ 3 files changed, 7 insertions(+), 44 deletions(-) diff --git a/src/common/schema/feedback.ts b/src/common/schema/feedback.ts index cf9dc0ce0e..5ec8f8e7f3 100644 --- a/src/common/schema/feedback.ts +++ b/src/common/schema/feedback.ts @@ -12,4 +12,5 @@ export const feedbackInputSchema = z.object({ .max(2000), pageUrl: z.string().nullish(), userAgent: z.string().nullish(), + screenshotUrl: z.url().nullish(), }); diff --git a/src/entity/Feedback.ts b/src/entity/Feedback.ts index 794d1591fa..c0d08b719e 100644 --- a/src/entity/Feedback.ts +++ b/src/entity/Feedback.ts @@ -81,9 +81,6 @@ export class Feedback { @Column({ type: 'text', nullable: true }) screenshotUrl: string | null; - @Column({ type: 'text', nullable: true }) - screenshotId: string | null; - @CreateDateColumn() @Index('IDX_feedback_created_at') createdAt: Date; diff --git a/src/schema/feedback.ts b/src/schema/feedback.ts index 0fb9db6817..41fff3bb8d 100644 --- a/src/schema/feedback.ts +++ b/src/schema/feedback.ts @@ -7,17 +7,13 @@ import { ValidationError } from 'apollo-server-errors'; import { feedbackInputSchema } from '../common/schema/feedback'; import { ZodError } from 'zod/v4'; import { GQLEmptyResponse } from './common'; -import { uploadPostFile, UploadPreset } from '../common/cloudinary'; -import { generateUUID } from '../ids'; -// @ts-expect-error - no types -import { FileUpload } from 'graphql-upload/GraphQLUpload.js'; interface GQLFeedbackInput { category: number; description: string; pageUrl?: string; userAgent?: string; - screenshot?: Promise; + screenshotUrl?: string; } export const typeDefs = /* GraphQL */ ` @@ -46,9 +42,9 @@ export const typeDefs = /* GraphQL */ ` userAgent: String """ - Optional screenshot image upload + Optional screenshot URL (client uploads to Cloudinary) """ - screenshot: Upload + screenshotUrl: String } """ @@ -98,37 +94,7 @@ export const resolvers: IResolvers = traceResolvers< throw err; } - let screenshotUrl: string | null = null; - let screenshotId: string | null = null; - - // Handle screenshot upload - if (input.screenshot && process.env.CLOUDINARY_URL) { - const upload = await input.screenshot; - const extension = upload.filename?.split('.').pop()?.toLowerCase(); - - // Validate image type - const allowedExtensions = ['png', 'jpg', 'jpeg', 'webp', 'gif']; - if (!extension || !allowedExtensions.includes(extension)) { - throw new ValidationError( - 'Invalid screenshot format. Allowed: png, jpg, jpeg, webp, gif', - ); - } - - const id = generateUUID(); - const filename = `feedback_${id}`; - const preset = - extension === 'gif' - ? UploadPreset.FreeformGif - : UploadPreset.FreeformImage; - - const uploadResult = await uploadPostFile( - filename, - upload.createReadStream(), - preset, - ); - screenshotUrl = uploadResult.url; - screenshotId = uploadResult.id; - } + const screenshotUrl = input.screenshotUrl || null; // Create feedback record // CDC will pick this up and handle classification via PubSub @@ -140,16 +106,15 @@ export const resolvers: IResolvers = traceResolvers< pageUrl: input.pageUrl || null, userAgent: input.userAgent || null, screenshotUrl, - screenshotId, status: FeedbackStatus.Pending, flags: {}, }); // Create ContentImage record to link screenshot to feedback - if (screenshotUrl && screenshotId) { + if (screenshotUrl) { await ctx.con.getRepository(ContentImage).save({ url: screenshotUrl, - serviceId: screenshotId, + serviceId: screenshotUrl, usedByType: ContentImageUsedByType.Feedback, usedById: feedback.id, });