From 405a3f1730eab90a074ee2bc8796073296f8c6ad Mon Sep 17 00:00:00 2001
From: Pierre Ecarlat <pecarlat@grandlyon.com>
Date: Mon, 25 Nov 2024 08:09:22 +0000
Subject: [PATCH] fix: Handle the refuse status for grdf

---
 .vscode/settings.json                            | 1 +
 src/components/Konnector/KonnectorViewerCard.tsx | 5 ++++-
 src/enums/fluid.enum.ts                          | 1 +
 src/enums/konnectorStatus.enum.ts                | 1 +
 src/services/fluid.service.ts                    | 3 +++
 5 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/.vscode/settings.json b/.vscode/settings.json
index 7f58d87e1..296bf5e46 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -159,6 +159,7 @@
     "usageevent",
     "Usain",
     "userchallenge",
+    "WEBAUTH",
     "weektype"
   ],
   "typescript.tsdk": "node_modules/typescript/lib",
diff --git a/src/components/Konnector/KonnectorViewerCard.tsx b/src/components/Konnector/KonnectorViewerCard.tsx
index 24b0578d9..e90a78532 100644
--- a/src/components/Konnector/KonnectorViewerCard.tsx
+++ b/src/components/Konnector/KonnectorViewerCard.tsx
@@ -92,6 +92,9 @@ const KonnectorViewerCard = ({
   const isWaitingForConsent =
     fluidType === FluidType.GAS &&
     currentFluidStatus.status === FluidState.CHALLENGE_ASKED
+  const emailHasBeenIgnored =
+    fluidType === FluidType.GAS &&
+    currentFluidStatus.status === FluidState.EMAIL_IGNORED
 
   const fluidService = useMemo(() => new FluidService(client), [client])
   const accountService = useMemo(() => new AccountService(client), [client])
@@ -465,7 +468,7 @@ const KonnectorViewerCard = ({
   return (
     <div className="konnector-section-root">
       {isWaitingForConsent && <GrdfWaitConsent />}
-      {!isWaitingForConsent && !showOfflineData && (
+      {(!isWaitingForConsent || emailHasBeenIgnored) && !showOfflineData && (
         <Connection fluidType={fluidType} />
       )}
       {!isWaitingForConsent && showOfflineData && (
diff --git a/src/enums/fluid.enum.ts b/src/enums/fluid.enum.ts
index 4ebd4f945..0abed1b95 100644
--- a/src/enums/fluid.enum.ts
+++ b/src/enums/fluid.enum.ts
@@ -13,4 +13,5 @@ export enum FluidState {
   ERROR = 'ERROR',
   LOGIN_FAILED = 'LOGIN_FAILED',
   CHALLENGE_ASKED = 'CHALLENGE_ASKED',
+  EMAIL_IGNORED = 'EMAIL_IGNORED',
 }
diff --git a/src/enums/konnectorStatus.enum.ts b/src/enums/konnectorStatus.enum.ts
index 4ff5dad28..fff28f6ea 100644
--- a/src/enums/konnectorStatus.enum.ts
+++ b/src/enums/konnectorStatus.enum.ts
@@ -4,6 +4,7 @@ export enum KonnectorError {
   USER_ACTION_NEEDED = 'USER_ACTION_NEEDED',
   TERMS_VERSION_MISMATCH = 'TERMS_VERSION_MISMATCH',
   CHALLENGE_ASKED = 'CHALLENGE_ASKED',
+  EMAIL_IGNORED = 'USER_ACTION_NEEDED.WEBAUTH_REQUIRED',
   UNKNOWN_ERROR = 'UNKNOWN_ERROR',
   CRITICAL = 'exit status 1',
   MISSING_SECRET = "Cannot read property 'secret' of null",
diff --git a/src/services/fluid.service.ts b/src/services/fluid.service.ts
index 4cf603519..9159c258c 100644
--- a/src/services/fluid.service.ts
+++ b/src/services/fluid.service.ts
@@ -31,6 +31,9 @@ export default class FluidService {
         if (state?.last_error === 'CHALLENGE_ASKED') {
           return FluidState.CHALLENGE_ASKED
         }
+        if (state?.last_error === 'EMAIL_IGNORED') {
+          return FluidState.EMAIL_IGNORED
+        }
         return FluidState.ERROR
 
       default:
-- 
GitLab