From 66d6cb5710453f19af174d07fe63f5efc6d2e794 Mon Sep 17 00:00:00 2001 From: Jason Parks Date: Thu, 27 Mar 2025 15:27:53 -0600 Subject: [PATCH] Fixed compose bug and formatted. Updated the refresh token to check the expired time. --- .../templates/config.template.test.ts | 4 +- .../general/generic/save-gitea-provider.tsx | 2 +- .../generic/save-gitea-provider-compose.tsx | 94 +++++++++++++------ .../general/show-converted-compose.tsx | 25 ++--- apps/dokploy/server/api/routers/gitea.ts | 44 ++++----- packages/server/src/lib/auth.ts | 12 +-- packages/server/src/utils/providers/gitea.ts | 19 +++- 7 files changed, 127 insertions(+), 73 deletions(-) diff --git a/apps/dokploy/__test__/templates/config.template.test.ts b/apps/dokploy/__test__/templates/config.template.test.ts index 902e3163..9516e9d1 100644 --- a/apps/dokploy/__test__/templates/config.template.test.ts +++ b/apps/dokploy/__test__/templates/config.template.test.ts @@ -1,7 +1,7 @@ -import { describe, expect, it } from "vitest"; +import type { Schema } from "@dokploy/server/templates"; import type { CompleteTemplate } from "@dokploy/server/templates/processors"; import { processTemplate } from "@dokploy/server/templates/processors"; -import type { Schema } from "@dokploy/server/templates"; +import { describe, expect, it } from "vitest"; describe("processTemplate", () => { // Mock schema for testing diff --git a/apps/dokploy/components/dashboard/application/general/generic/save-gitea-provider.tsx b/apps/dokploy/components/dashboard/application/general/generic/save-gitea-provider.tsx index ded2f2f4..1dd2abfe 100644 --- a/apps/dokploy/components/dashboard/application/general/generic/save-gitea-provider.tsx +++ b/apps/dokploy/components/dashboard/application/general/generic/save-gitea-provider.tsx @@ -496,4 +496,4 @@ export const SaveGiteaProvider = ({ applicationId }: Props) => { ); -}; \ No newline at end of file +}; 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 052ffa86..49c95c27 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 @@ -71,7 +71,6 @@ interface Props { export const SaveGiteaProviderCompose = ({ composeId }: Props) => { const { data: giteaProviders } = api.gitea.giteaProviders.useQuery(); const { data, refetch } = api.compose.one.useQuery({ composeId }); - const { mutateAsync, isLoading: isSavingGiteaProvider } = api.compose.update.useMutation(); @@ -97,11 +96,9 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { { giteaId }, { enabled: !!giteaId, - } + }, ); - console.log(repository); - const { data: repositories, isLoading: isLoadingRepositories, @@ -133,24 +130,55 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { useEffect(() => { if (data) { - // 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, - }, - composePath: data.composePath, - giteaId: data.giteaId || "", - watchPaths: data.watchPaths || [], - }); + console.log("Setting form data from API:", data); + + // Only reset form on initial load, not after user interactions + if (!form.formState.isDirty && !form.formState.dirtyFields.giteaId) { + console.log("Initial form reset from API data"); + form.reset({ + branch: data.giteaBranch || "", + repository: { + repo: data.giteaRepository || "", + owner: data.giteaOwner || "", + id: null, + }, + composePath: data.composePath || "./docker-compose.yml", + giteaId: data.giteaId || "", + watchPaths: data.watchPaths || [], + }); + } else { + console.log( + "Skipping form reset because form has been modified by user", + ); + } } - }, [data, form, repositories]); + }, [data]); + + // Add this separate effect to update repository ID if needed + useEffect(() => { + const values = form.getValues(); + // If we have a repository selected but no ID, try to find it + if ( + values.repository.owner && + values.repository.repo && + !values.repository.id && + repositories?.length + ) { + const matchingRepo = repositories.find( + (repo) => + repo.name === values.repository.repo && + repo.owner.username === values.repository.owner, + ); + + if (matchingRepo) { + console.log("Found matching repository ID:", matchingRepo.id); + form.setValue("repository", { + ...values.repository, + id: matchingRepo.id, + }); + } + } + }, [repositories]); const onSubmit = async (data: GiteaProvider) => { await mutateAsync({ @@ -165,7 +193,7 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { watchPaths: data.watchPaths, } as any) .then(async () => { - toast.success("Service Provided Saved"); + toast.success("Service Provider Saved"); await refetch(); }) .catch(() => { @@ -191,14 +219,20 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { Gitea Account