diff --git a/apps/dokploy/components/dashboard/compose/general/generic/save-gitea-provider-compose.tsx b/apps/dokploy/components/dashboard/compose/general/generic/save-gitea-provider-compose.tsx index 0f47e8a2..6618f7e0 100644 --- a/apps/dokploy/components/dashboard/compose/general/generic/save-gitea-provider-compose.tsx +++ b/apps/dokploy/components/dashboard/compose/general/generic/save-gitea-provider-compose.tsx @@ -95,6 +95,13 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { const repository = form.watch("repository"); const giteaId = form.watch("giteaId"); + const { data: giteaUrl } = api.gitea.getGiteaUrl.useQuery( + { giteaId }, + { + enabled: !!giteaId, + } + ); + console.log(repository); const { @@ -128,21 +135,25 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { useEffect(() => { if (data) { - console.log(data.giteaRepository); - form.reset({ - branch: data.giteaBranch || "", - repository: { - repo: data.giteaRepository || "", - owner: data.giteaOwner || "", - id: null, - giteaPathNamespace: "", - }, - composePath: data.composePath, - giteaId: data.giteaId || "", - watchPaths: data.watchPaths || [], - }); + // Find the repository in the repositories list to get the correct ID + const currentRepo = repositories?.find( + (repo) => repo.name === data.giteaRepository && repo.owner.username === data.giteaOwner + ); + + form.reset({ + branch: data.giteaBranch || "", + repository: { + repo: data.giteaRepository || "", + owner: data.giteaOwner || "", + id: currentRepo?.id || null, + giteaPathNamespace: currentRepo?.url || "", + }, + composePath: data.composePath, + giteaId: data.giteaId || "", + watchPaths: data.watchPaths || [], + }); } - }, [data, form]); + }, [data, form, repositories]); const onSubmit = async (data: GiteaProvider) => { await mutateAsync({ @@ -224,7 +235,7 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { Repository {field.value.owner && field.value.repo && ( { ) as HTMLInputElement; const path = input.value.trim(); if (path) { - field.onChange([...field.value, path]); + field.onChange([...(field.value || []), path]); input.value = ""; } }} diff --git a/apps/dokploy/components/dashboard/compose/general/show-converted-compose.tsx b/apps/dokploy/components/dashboard/compose/general/show-converted-compose.tsx index 49606645..428d9d66 100644 --- a/apps/dokploy/components/dashboard/compose/general/show-converted-compose.tsx +++ b/apps/dokploy/components/dashboard/compose/general/show-converted-compose.tsx @@ -83,6 +83,7 @@ export const ShowConvertedCompose = ({ composeId }: Props) => { + {compose !== null ? (
 					 {
 						height="50rem"
 					/>
 				
+ ) : ( +
+ No compose file available. Make sure at least one domain is configured for this project. +
+ )} ); diff --git a/apps/dokploy/server/api/routers/gitea.ts b/apps/dokploy/server/api/routers/gitea.ts index b4c37ca4..c4a89c02 100644 --- a/apps/dokploy/server/api/routers/gitea.ts +++ b/apps/dokploy/server/api/routers/gitea.ts @@ -216,4 +216,31 @@ export const giteaRouter = createTRPCRouter({ return { success: true }; }), + + getGiteaUrl: protectedProcedure + .input(apiFindOneGitea) + .query(async ({ input, ctx }) => { + const { giteaId } = input; + + if (!giteaId) { + throw new TRPCError({ + code: "BAD_REQUEST", + message: "Gitea provider ID is required.", + }); + } + + const giteaProvider = await findGiteaById(giteaId); + if ( + giteaProvider.gitProvider.organizationId !== + ctx.session.activeOrganizationId + ) { + throw new TRPCError({ + code: "UNAUTHORIZED", + message: "You are not allowed to access this Gitea provider", + }); + } + + // Return the base URL of the Gitea instance + return giteaProvider.giteaUrl; + }), });