diff --git a/.eslintrc.yml b/.eslintrc.yml index 8e50130de..cdc3a710b 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -114,6 +114,9 @@ overrides: '@typescript-eslint/explicit-module-boundary-types': off '@typescript-eslint/no-unused-vars': 'error' '@typescript-eslint/no-explicit-any': 'error' + '@typescript-eslint/switch-exhaustiveness-check': 'error' + 'consistent-return': 'off' + 'default-case': off 'jsx-a11y/label-has-associated-control': - error - assert: either diff --git a/app/react/edge/edge-stacks/queries/useCreateEdgeStack/useCreateEdgeStack.ts b/app/react/edge/edge-stacks/queries/useCreateEdgeStack/useCreateEdgeStack.ts index 003be27c1..65b47f0ea 100644 --- a/app/react/edge/edge-stacks/queries/useCreateEdgeStack/useCreateEdgeStack.ts +++ b/app/react/edge/edge-stacks/queries/useCreateEdgeStack/useCreateEdgeStack.ts @@ -120,7 +120,7 @@ async function createStackAndGitCredential( autoUpdate: AutoUpdateResponse | null; } ) { - const newGitModel = await saveGitCredentialsIfNeeded(userId, payload.git); + const resolvedAuth = await saveGitCredentialsIfNeeded(userId, payload.git); return createStackFromGit({ deploymentType: payload.deploymentType, @@ -132,13 +132,13 @@ async function createStackAndGitCredential( retryDeploy: payload.retryDeploy, staggerConfig: payload.staggerConfig, useManifestNamespaces: payload.useManifestNamespaces, - repositoryUrl: newGitModel.RepositoryURL, - repositoryReferenceName: newGitModel.RepositoryReferenceName, - filePathInRepository: newGitModel.ComposeFilePathInRepository, - repositoryAuthentication: newGitModel.RepositoryAuthentication, - repositoryUsername: newGitModel.RepositoryUsername, - repositoryPassword: newGitModel.RepositoryPassword, - repositoryGitCredentialId: newGitModel.RepositoryGitCredentialID, + repositoryUrl: payload.git.RepositoryURL, + repositoryReferenceName: payload.git.RepositoryReferenceName, + filePathInRepository: payload.git.ComposeFilePathInRepository, + repositoryAuthentication: resolvedAuth.RepositoryAuthentication, + repositoryUsername: resolvedAuth.RepositoryUsername, + repositoryPassword: resolvedAuth.RepositoryPassword, + repositoryGitCredentialId: resolvedAuth.RepositoryGitCredentialID, filesystemPath: payload.relativePathSettings?.FilesystemPath, supportRelativePath: payload.relativePathSettings?.SupportRelativePath, perDeviceConfigsGroupMatchType: @@ -146,7 +146,7 @@ async function createStackAndGitCredential( perDeviceConfigsMatchType: payload.relativePathSettings?.PerDeviceConfigsMatchType, perDeviceConfigsPath: payload.relativePathSettings?.PerDeviceConfigsPath, - tlsSkipVerify: newGitModel.TLSSkipVerify, + tlsSkipVerify: payload.git.TLSSkipVerify, autoUpdate: payload.autoUpdate, }); } diff --git a/app/react/portainer/account/git-credentials/queries/useCreateGitCredentialsMutation.ts b/app/react/portainer/account/git-credentials/queries/useCreateGitCredentialsMutation.ts index 47614d2e6..652a5399f 100644 --- a/app/react/portainer/account/git-credentials/queries/useCreateGitCredentialsMutation.ts +++ b/app/react/portainer/account/git-credentials/queries/useCreateGitCredentialsMutation.ts @@ -2,7 +2,10 @@ import { useQueryClient, useMutation } from '@tanstack/react-query'; import axios, { parseAxiosError } from '@/portainer/services/axios'; import { notifyError, notifySuccess } from '@/portainer/services/notifications'; -import { GitAuthModel } from '@/react/portainer/gitops/types'; +import { + GitAuthModel, + GitCredentialsModel, +} from '@/react/portainer/gitops/types'; import { useCurrentUser } from '@/react/hooks/useUser'; import { UserId } from '@/portainer/users/types'; @@ -82,10 +85,10 @@ export function useSaveCredentialsIfRequired() { } } -export async function saveGitCredentialsIfNeeded( +export async function saveGitCredentialsIfNeeded( userId: UserId, - gitModel: TGit -) { + gitModel: GitAuthModel +): Promise { let credentialsId = gitModel.RepositoryGitCredentialID; let username = gitModel.RepositoryUsername; let password = gitModel.RepositoryPassword; @@ -112,9 +115,10 @@ export async function saveGitCredentialsIfNeeded( } return { - ...gitModel, + RepositoryAuthentication: gitModel.RepositoryAuthentication, RepositoryGitCredentialID: credentialsId, RepositoryUsername: username, RepositoryPassword: password, + RepositoryAuthorizationType: gitModel.RepositoryAuthorizationType, }; } diff --git a/app/react/portainer/gitops/queries/useUpdateGitStackSettings.ts b/app/react/portainer/gitops/queries/useUpdateGitStackSettings.ts index 709cfec2d..c54aab139 100644 --- a/app/react/portainer/gitops/queries/useUpdateGitStackSettings.ts +++ b/app/react/portainer/gitops/queries/useUpdateGitStackSettings.ts @@ -4,6 +4,7 @@ import axios, { parseAxiosError } from '@/portainer/services/axios'; import { GitStackPayload } from '@/react/common/stacks/types'; import { buildStackUrl } from '@/react/common/stacks/queries/buildUrl'; import { queryKeys } from '@/react/common/stacks/queries/query-keys'; +import { withGlobalError } from '@/react-tools/react-query'; async function updateGitStackSettings( stackId: number, @@ -39,5 +40,6 @@ export function useUpdateGitStackSettings() { exact: true, }); }, + ...withGlobalError('Unable to save stack settings'), }); } diff --git a/app/react/portainer/templates/custom-templates/queries/useCreateTemplateMutation.ts b/app/react/portainer/templates/custom-templates/queries/useCreateTemplateMutation.ts index 711bc62d8..79049d30b 100644 --- a/app/react/portainer/templates/custom-templates/queries/useCreateTemplateMutation.ts +++ b/app/react/portainer/templates/custom-templates/queries/useCreateTemplateMutation.ts @@ -85,11 +85,12 @@ async function createTemplateAndGitCredential( userId: UserId, { Git: gitModel, ...values }: CreateTemplatePayload ) { - const newGitModel = await saveGitCredentialsIfNeeded(userId, gitModel); + const resolvedAuth = await saveGitCredentialsIfNeeded(userId, gitModel); return createTemplateFromGit({ ...values, - ...newGitModel, + ...gitModel, + ...resolvedAuth, ...(values.EdgeSettings ? { EdgeSettings: {