From e239fbb670d479817ceebee26c29d73b7332750c Mon Sep 17 00:00:00 2001 From: Adrian Pilarczyk Date: Tue, 20 Jun 2023 15:34:36 +0200 Subject: [PATCH] fix: :bug: not being able to update one credential (#662) * fix: :bug: not being able to update one credential * build: :construction_worker: add changeset * fix: :bug: address feedback * refactor: :recycle: remove unnecessary clone --- .changeset/wild-pears-swim.md | 5 ++++ .../avatax-connection.service.ts | 25 +++++++++++++------ .../avatax/ui/edit-avatax-configuration.tsx | 3 +-- .../patch-input-transformer.ts | 10 -------- .../taxjar-connection.service.ts | 24 ++++++++++++------ 5 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 .changeset/wild-pears-swim.md delete mode 100644 apps/taxes/src/modules/provider-connections/patch-input-transformer.ts diff --git a/.changeset/wild-pears-swim.md b/.changeset/wild-pears-swim.md new file mode 100644 index 0000000..b39bff5 --- /dev/null +++ b/.changeset/wild-pears-swim.md @@ -0,0 +1,5 @@ +--- +"saleor-app-taxes": patch +--- + +Fixed the issue with updating a provider. When updating one of the credentials, the user no longer sees "invalid credentials" error. diff --git a/apps/taxes/src/modules/avatax/configuration/avatax-connection.service.ts b/apps/taxes/src/modules/avatax/configuration/avatax-connection.service.ts index e87f172..a9b8597 100644 --- a/apps/taxes/src/modules/avatax/configuration/avatax-connection.service.ts +++ b/apps/taxes/src/modules/avatax/configuration/avatax-connection.service.ts @@ -1,12 +1,10 @@ +import { DeepPartial } from "@trpc/server"; import { Client } from "urql"; import { Logger, createLogger } from "../../../lib/logger"; -import { AvataxConnectionRepository } from "./avatax-connection-repository"; -import { AvataxConfig, AvataxConnection } from "../avatax-connection-schema"; -import { AvataxValidationService } from "./avatax-validation.service"; -import { DeepPartial } from "@trpc/server"; -import { PatchInputTransformer } from "../../provider-connections/patch-input-transformer"; -import { AuthData } from "@saleor/app-sdk/APL"; import { createSettingsManager } from "../../app/metadata-manager"; +import { AvataxConfig, AvataxConnection } from "../avatax-connection-schema"; +import { AvataxConnectionRepository } from "./avatax-connection-repository"; +import { AvataxValidationService } from "./avatax-validation.service"; export class AvataxConnectionService { private logger: Logger; @@ -44,9 +42,20 @@ export class AvataxConnectionService { const prevConfig = setting.config; const validationService = new AvataxValidationService(); - const inputTransformer = new PatchInputTransformer(); - const input = inputTransformer.transform(nextConfigPartial, prevConfig); + // todo: add deepRightMerge + const input: AvataxConfig = { + ...prevConfig, + ...nextConfigPartial, + credentials: { + ...prevConfig.credentials, + ...nextConfigPartial.credentials, + }, + address: { + ...prevConfig.address, + ...nextConfigPartial.address, + }, + }; await validationService.validate(input); diff --git a/apps/taxes/src/modules/avatax/ui/edit-avatax-configuration.tsx b/apps/taxes/src/modules/avatax/ui/edit-avatax-configuration.tsx index 18a388d..8fb434a 100644 --- a/apps/taxes/src/modules/avatax/ui/edit-avatax-configuration.tsx +++ b/apps/taxes/src/modules/avatax/ui/edit-avatax-configuration.tsx @@ -3,11 +3,10 @@ import { Box, Button, Text } from "@saleor/macaw-ui/next"; import { useRouter } from "next/router"; import React from "react"; import { z } from "zod"; -import { Obfuscator } from "../../../lib/obfuscator"; import { trpcClient } from "../../trpc/trpc-client"; +import { AvataxConnectionObfuscator } from "../avatax-connection-obfuscator"; import { AvataxConfig } from "../avatax-connection-schema"; import { AvataxConfigurationForm } from "./avatax-configuration-form"; -import { AvataxConnectionObfuscator } from "../avatax-connection-obfuscator"; const avataxObfuscator = new AvataxConnectionObfuscator(); diff --git a/apps/taxes/src/modules/provider-connections/patch-input-transformer.ts b/apps/taxes/src/modules/provider-connections/patch-input-transformer.ts deleted file mode 100644 index 0b407ce..0000000 --- a/apps/taxes/src/modules/provider-connections/patch-input-transformer.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { DeepPartial } from "@trpc/server"; - -export class PatchInputTransformer { - transform( - nextConfigPartial: DeepPartial, - prevConfig: TObject - ): TObject { - return Object.assign(prevConfig, nextConfigPartial); - } -} diff --git a/apps/taxes/src/modules/taxjar/configuration/taxjar-connection.service.ts b/apps/taxes/src/modules/taxjar/configuration/taxjar-connection.service.ts index 041902b..268e2f4 100644 --- a/apps/taxes/src/modules/taxjar/configuration/taxjar-connection.service.ts +++ b/apps/taxes/src/modules/taxjar/configuration/taxjar-connection.service.ts @@ -1,11 +1,10 @@ +import { DeepPartial } from "@trpc/server"; import { Client } from "urql"; import { Logger, createLogger } from "../../../lib/logger"; -import { TaxJarConnectionRepository } from "./taxjar-connection-repository"; -import { TaxJarConfig, TaxJarConnection } from "../taxjar-connection-schema"; -import { TaxJarValidationService } from "./taxjar-validation.service"; -import { DeepPartial } from "@trpc/server"; -import { PatchInputTransformer } from "../../provider-connections/patch-input-transformer"; import { createSettingsManager } from "../../app/metadata-manager"; +import { TaxJarConfig, TaxJarConnection } from "../taxjar-connection-schema"; +import { TaxJarConnectionRepository } from "./taxjar-connection-repository"; +import { TaxJarValidationService } from "./taxjar-validation.service"; export class TaxJarConnectionService { private logger: Logger; @@ -43,9 +42,20 @@ export class TaxJarConnectionService { const prevConfig = setting.config; const validationService = new TaxJarValidationService(); - const inputTransformer = new PatchInputTransformer(); - const input = inputTransformer.transform(nextConfigPartial, prevConfig); + // todo: add deepRightMerge + const input: TaxJarConfig = { + ...prevConfig, + ...nextConfigPartial, + credentials: { + ...prevConfig.credentials, + ...nextConfigPartial.credentials, + }, + address: { + ...prevConfig.address, + ...nextConfigPartial.address, + }, + }; await validationService.validate(input);