From 30396f6a35fc3aa2ffb6ea7ab2148618130ded2e Mon Sep 17 00:00:00 2001 From: Nevo David Date: Sat, 28 Jun 2025 11:38:02 +0700 Subject: [PATCH] feat: transloadit --- apps/frontend/src/app/(app)/layout.tsx | 8 ++++++++ apps/frontend/src/components/media/new.uploader.tsx | 5 +++-- .../nestjs-libraries/src/database/prisma/schema.prisma | 3 +++ .../react-shared-libraries/src/helpers/uppy.upload.ts | 4 +++- .../src/helpers/variable.context.tsx | 2 ++ 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/apps/frontend/src/app/(app)/layout.tsx b/apps/frontend/src/app/(app)/layout.tsx index 4e1e4947..5d044b79 100644 --- a/apps/frontend/src/app/(app)/layout.tsx +++ b/apps/frontend/src/app/(app)/layout.tsx @@ -55,6 +55,14 @@ export default async function AppLayout({ children }: { children: ReactNode }) { isSecured={!process.env.NOT_SECURED} disableImageCompression={!!process.env.DISABLE_IMAGE_COMPRESSION} language={allHeaders.get(headerName)} + transloadit={ + process.env.TRANSLOADIT_AUTH && process.env.TRANSLOADIT_TEMPLATE + ? [ + process.env.TRANSLOADIT_AUTH!, + process.env.TRANSLOADIT_TEMPLATE!, + ] + : [] + } > diff --git a/apps/frontend/src/components/media/new.uploader.tsx b/apps/frontend/src/components/media/new.uploader.tsx index 6db45aa5..65dc9965 100644 --- a/apps/frontend/src/components/media/new.uploader.tsx +++ b/apps/frontend/src/components/media/new.uploader.tsx @@ -62,7 +62,7 @@ export function useUppyUploader(props: { }) { const setLocked = useLaunchStore(state => state.setLocked); const toast = useToaster(); - const { storageProvider, backendUrl, disableImageCompression } = + const { storageProvider, backendUrl, disableImageCompression, transloadit } = useVariables(); const { onUploadSuccess, allowedFileTypes } = props; const fetch = useFetch(); @@ -124,7 +124,8 @@ export function useUppyUploader(props: { const { plugin, options } = getUppyUploadPlugin( storageProvider, fetch, - backendUrl + backendUrl, + transloadit ); uppy2.use(plugin, options); if (!disableImageCompression) { diff --git a/libraries/nestjs-libraries/src/database/prisma/schema.prisma b/libraries/nestjs-libraries/src/database/prisma/schema.prisma index edc2262b..bae65214 100644 --- a/libraries/nestjs-libraries/src/database/prisma/schema.prisma +++ b/libraries/nestjs-libraries/src/database/prisma/schema.prisma @@ -202,6 +202,8 @@ model Media { path String organization Organization @relation(fields: [organizationId], references: [id]) organizationId String + fileSize Int @default(0) + type String @default("image") createdAt DateTime @default(now()) updatedAt DateTime @updatedAt userPicture User[] @@ -209,6 +211,7 @@ model Media { deletedAt DateTime? @@index([organizationId]) + @@index([type]) } model SocialMediaAgency { diff --git a/libraries/react-shared-libraries/src/helpers/uppy.upload.ts b/libraries/react-shared-libraries/src/helpers/uppy.upload.ts index 31a346ae..b042e4a6 100644 --- a/libraries/react-shared-libraries/src/helpers/uppy.upload.ts +++ b/libraries/react-shared-libraries/src/helpers/uppy.upload.ts @@ -21,7 +21,9 @@ const fetchUploadApiEndpoint = async ( export const getUppyUploadPlugin = ( provider: string, fetch: any, - backendUrl: string + backendUrl: string, + transloadit: string[] = [], + isVideo: boolean = false, ) => { switch (provider) { case 'cloudflare': diff --git a/libraries/react-shared-libraries/src/helpers/variable.context.tsx b/libraries/react-shared-libraries/src/helpers/variable.context.tsx index 3ef62b8d..98a8ab84 100644 --- a/libraries/react-shared-libraries/src/helpers/variable.context.tsx +++ b/libraries/react-shared-libraries/src/helpers/variable.context.tsx @@ -20,6 +20,7 @@ interface VariableContextInterface { disableImageCompression: boolean; language: string; tolt: string; + transloadit: string[]; } const VariableContext = createContext({ billingEnabled: false, @@ -40,6 +41,7 @@ const VariableContext = createContext({ disableImageCompression: false, language: '', tolt: '', + transloadit: [], } as VariableContextInterface); export const VariableContextComponent: FC< VariableContextInterface & {