From f98942f9169c50a19b8c6ac1779e3ed02c1ea57c Mon Sep 17 00:00:00 2001
From: Hamza HRAMCHI <hamza.hramchi@xelians.fr>
Date: Tue, 24 Jan 2023 17:13:10 +0100
Subject: [PATCH] FIX #20284 TIME 0:20 set modes for external users

---
 .../app/document/visa-workflow/visa-workflow.component.ts  | 7 +++++--
 src/frontend/app/indexation/indexation.component.ts        | 3 ++-
 .../app/service/otp-connectors/otp-generator.service.ts    | 2 +-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/frontend/app/document/visa-workflow/visa-workflow.component.ts b/src/frontend/app/document/visa-workflow/visa-workflow.component.ts
index cf8a3ea3d0..170175eeda 100644
--- a/src/frontend/app/document/visa-workflow/visa-workflow.component.ts
+++ b/src/frontend/app/document/visa-workflow/visa-workflow.component.ts
@@ -67,14 +67,17 @@ export class VisaWorkflowComponent implements OnInit {
 
     formatRole(element: any) {
         if (!this.functionsService.empty(element.externalInformations)) {
+            if (this.functionsService.empty(element?.modes)) {
+                element['modes'] = [];
+            }
             if (element.externalInformations.informations.type === 'yousign') {
                 element.role = element.externalInformations.informations.role === 'sign' ? 'otp_sign_yousign' : 'otp_visa_yousign';
             } else if (element.externalInformations.informations.type === 'fast') {
                 element.role = 'otp_sign_fast';
             }
+            this.otpService.setConnector(element.externalInformations.informations.type);
             element.mode = element.role;
-            element.modes.push(element.mode);
-            element.modes = [... new Set(element.modes)];
+            element.modes = element.externalInformations.informations.type === 'fast' ? ['otp_sign_fast'] : ['otp_visa_yousign', 'otp_sign_yousign'];
         }
     }
 
diff --git a/src/frontend/app/indexation/indexation.component.ts b/src/frontend/app/indexation/indexation.component.ts
index caaf79141b..a29653afe4 100644
--- a/src/frontend/app/indexation/indexation.component.ts
+++ b/src/frontend/app/indexation/indexation.component.ts
@@ -86,12 +86,13 @@ export class IndexationComponent implements OnInit {
                     this.appVisaWorkflow.loadWorkflow(data.document.workflow.map((item: any) => {
                         item.userSignatureModes.unshift('visa');
                         item.signatureMode = item.userId === null && item.signatureMode === 'stamp' ? 'sign' : item.signatureMode;
+                        this.appVisaWorkflow.formatRole(item);
                         return {
                             ...item,
                             processDate: null,
                             current: false,
                             role: item.mode === 'visa' ? 'visa' : item.signatureMode,
-                            modes: item.userId === null ? ['otp_sign_yousign', 'otp_visa_yousign', 'otp_sign_fast'] : item.userSignatureModes
+                            modes: item.userId === null ? item.modes : item.userSignatureModes
                         };
                     }));
                     for (let index = 0; index < data.document.attachments.length; index++) {
diff --git a/src/frontend/app/service/otp-connectors/otp-generator.service.ts b/src/frontend/app/service/otp-connectors/otp-generator.service.ts
index dcd21f183b..fef740363d 100644
--- a/src/frontend/app/service/otp-connectors/otp-generator.service.ts
+++ b/src/frontend/app/service/otp-connectors/otp-generator.service.ts
@@ -75,7 +75,7 @@ export class OtpService {
     }
 
     setConnector(connectorType: any) {
-        if (this.allowedConnectors.indexOf(connectorType.id) > -1) {
+        if (this.allowedConnectors.indexOf(connectorType?.id) > -1) {
             if (connectorType.id === 'fast') {
                 this.connectorService = this.injector.get<OtpFastService>(OtpFastService);
             } else if (connectorType.id === 'yousign') {
-- 
GitLab