From 7bb27bc762b8bcfd0ec497ab0d8fe82f847403e7 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 18 Jul 2024 11:49:16 +0200
Subject: [PATCH] OZG-6201 Fix send manually not closing dialog

---
 .../bescheiden.formservice.spec.ts            | 20 +++++++++++++++++--
 .../bescheiden.formservice.ts                 | 17 ++++++++--------
 2 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts
index 9e29f9d817..5cadc110ce 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.spec.ts
@@ -9,10 +9,10 @@ import {
 import { BinaryFileResource } from '@alfa-client/binary-file-shared';
 import { CommandLinkRel, CommandResource } from '@alfa-client/command-shared';
 import {
-  createStateResource,
   EMPTY_STRING,
-  formatForDatabase,
   StateResource,
+  createStateResource,
+  formatForDatabase,
 } from '@alfa-client/tech-shared';
 import { Mock, mock, useFromMock } from '@alfa-client/test-utils';
 import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
@@ -114,6 +114,22 @@ describe('BescheidenFormService', () => {
 
       expect(service.sendByManual.value).toBeFalsy();
     });
+    it('should not call .next() if current and next values both are true', () => {
+      service.sendByManual.next(true);
+      service.sendByManual.next = jest.fn();
+
+      service.updateSendByManual(BescheidSendBy.MANUAL);
+
+      expect(service.sendByManual.next).not.toHaveBeenCalled();
+    });
+    it('should call .next() if current and next values differ', () => {
+      service.sendByManual.next(false);
+      service.sendByManual.next = jest.fn();
+
+      service.updateSendByManual(BescheidSendBy.MANUAL);
+
+      expect(service.sendByManual.next).toHaveBeenCalled();
+    });
   });
 
   describe('initializeFormChanges', () => {
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts
index d9e05716a5..b079362062 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts
@@ -10,14 +10,14 @@ import { BinaryFileResource } from '@alfa-client/binary-file-shared';
 import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared';
 import {
   AbstractFormService,
-  convertToBoolean,
   EMPTY_STRING,
-  formatForDatabase,
   HttpError,
+  StateResource,
+  convertToBoolean,
+  formatForDatabase,
   isLoaded,
   isNotEmpty,
   isNotNil,
-  StateResource,
 } from '@alfa-client/tech-shared';
 import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { Injectable, OnDestroy } from '@angular/core';
@@ -28,18 +28,18 @@ import {
   UntypedFormControl,
   UntypedFormGroup,
 } from '@angular/forms';
-import { getUrl, hasLink, Resource, ResourceUri } from '@ngxp/rest';
+import { Resource, ResourceUri, getUrl, hasLink } from '@ngxp/rest';
 import { isEmpty, isNil, isUndefined } from 'lodash-es';
 import {
   BehaviorSubject,
+  Observable,
+  Subject,
+  Subscription,
   combineLatest,
   filter,
   first,
   map,
-  Observable,
   startWith,
-  Subject,
-  Subscription,
 } from 'rxjs';
 
 @Injectable()
@@ -92,7 +92,8 @@ export class BescheidenFormService extends AbstractFormService implements OnDest
   }
 
   updateSendByManual(sendBy: BescheidSendBy): void {
-    this.sendByManual.next(sendBy === BescheidSendBy.MANUAL);
+    const isSendByManual = sendBy === BescheidSendBy.MANUAL;
+    if (isSendByManual !== this.sendByManual.value) this.sendByManual.next(isSendByManual);
   }
 
   initializeFormChanges(): void {
-- 
GitLab