From dd46632854d0a04bed851ef7b180d95d67b1af33 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 3 Mar 2025 11:51:48 +0100
Subject: [PATCH] Revert "OZG-5977 hide file container on empty content"

This reverts commit b8499321bb675ec86e560630159fcb54c3f6dcab.
---
 .../binary-file-list-container.component.html | 11 ++++---
 ...nary-file-list-container.component.spec.ts | 31 ++++---------------
 .../binary-file-list-container.component.ts   | 27 +++++-----------
 .../binary-file-list.component.html           |  7 ++++-
 .../binary-file-list.component.spec.ts        | 11 ++++---
 .../binary-file-list.component.ts             |  7 +++--
 6 files changed, 38 insertions(+), 56 deletions(-)

diff --git a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.html b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.html
index a5d3d8ee19..cfa93fbc6b 100644
--- a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.html
+++ b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.html
@@ -23,8 +23,9 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-@if (binaryFileList) {
-  <ods-attachment-wrapper>
-    <alfa-binary-file-list [binaryFileList]="binaryFileList" [listOrientation]="listOrientation" />
-  </ods-attachment-wrapper>
-}
+<ods-attachment-wrapper>
+  <alfa-binary-file-list
+    [binaryFileListStateResource]="binaryFileListStateResource$ | async"
+    [listOrientation]="listOrientation"
+  ></alfa-binary-file-list>
+</ods-attachment-wrapper>
diff --git a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.spec.ts b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.spec.ts
index 885d5d27a6..e9473e9ee4 100644
--- a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.spec.ts
+++ b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.spec.ts
@@ -42,11 +42,9 @@ describe('BinaryFileListContainerComponent', () => {
 
   const binaryFileService: Mock<BinaryFileService> = mock(BinaryFileService);
 
-  const fileList: Resource[] = [];
-  const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource({
-    ...createBinaryFileResource(),
-    _embedded: { ozgFileList: fileList },
-  });
+  const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(
+    createBinaryFileResource(),
+  );
   const resource: Resource = createDummyResource();
   const linkRel: LinkRelationName = DummyLinkRel.DUMMY;
 
@@ -83,31 +81,14 @@ describe('BinaryFileListContainerComponent', () => {
 
       expect(binaryFileService.getFiles).toHaveBeenCalledWith(resource, linkRel);
     });
-
-    it('should NOT set binaryFileList', () => {
-      component.binaryFileList = null;
-      binaryFileService.getFiles.mockReturnValue(of(createStateResource(null)));
-
-      component.ngOnInit();
-
-      expect(component.binaryFileList).toBe(null);
-    });
-
-    it('should set binaryFileList', () => {
-      component.ngOnInit();
-
-      expect(component.binaryFileList).toBe(fileList);
-    });
   });
 
   describe('binary file list', () => {
     it('should be called with binary file state resource', () => {
-      const binaryFileListComponent: BinaryFileListComponent = getMockComponent<BinaryFileListComponent>(
-        fixture,
-        BinaryFileListComponent,
-      );
+      const binaryFileListComponent: BinaryFileListComponent =
+        getMockComponent<BinaryFileListComponent>(fixture, BinaryFileListComponent);
 
-      expect(binaryFileListComponent.binaryFileList).toBe(fileList);
+      expect(binaryFileListComponent.binaryFileListStateResource).toBe(binaryFileStateResource);
     });
   });
 });
diff --git a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.ts b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.ts
index c5cc042d55..b4dce3b40b 100644
--- a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.ts
+++ b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list-container.component.ts
@@ -21,38 +21,27 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BinaryFile, BinaryFileListLinkRel, BinaryFileListResource, BinaryFileService } from '@alfa-client/binary-file-shared';
-import { isNotNull, LinkRelationName, StateResource } from '@alfa-client/tech-shared';
-import { Component, Input, OnDestroy, OnInit } from '@angular/core';
-import { getEmbeddedResource, Resource } from '@ngxp/rest';
-import { filter, Subscription } from 'rxjs';
+import { BinaryFileListResource, BinaryFileService } from '@alfa-client/binary-file-shared';
+import { LinkRelationName, StateResource } from '@alfa-client/tech-shared';
+import { Component, Input, OnInit } from '@angular/core';
+import { Resource } from '@ngxp/rest';
+import { Observable } from 'rxjs';
 import { BinaryFileListOrientation } from '../directive/binary-file-list-orientation/binary-file-list-orientation.directive';
 
 @Component({
   selector: 'alfa-binary-file-list-container',
   templateUrl: './binary-file-list-container.component.html',
 })
-export class BinaryFileListContainerComponent implements OnInit, OnDestroy {
+export class BinaryFileListContainerComponent implements OnInit {
   @Input() resource: Resource;
   @Input() linkRel: LinkRelationName;
   @Input() listOrientation: BinaryFileListOrientation = BinaryFileListOrientation.HORIZONTAL;
 
-  public binaryFileList: BinaryFile[];
-  public readonly binaryFileListLinkRel = BinaryFileListLinkRel;
-  binaryFileListSubscription: Subscription;
+  public binaryFileListStateResource$: Observable<StateResource<BinaryFileListResource>>;
 
   constructor(private service: BinaryFileService) {}
 
   ngOnInit(): void {
-    this.binaryFileListSubscription = this.service
-      .getFiles(this.resource, this.linkRel)
-      .pipe(filter((stateResource) => isNotNull(stateResource.resource)))
-      .subscribe((stateResource: StateResource<BinaryFileListResource>) => {
-        this.binaryFileList = getEmbeddedResource(stateResource.resource, this.binaryFileListLinkRel.FILE_LIST);
-      });
-  }
-
-  ngOnDestroy() {
-    this.binaryFileListSubscription.unsubscribe();
+    this.binaryFileListStateResource$ = this.service.getFiles(this.resource, this.linkRel);
   }
 }
diff --git a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.html b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.html
index 33eab42685..70054de869 100644
--- a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.html
+++ b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.html
@@ -24,5 +24,10 @@
 
 -->
 <div [binaryFileListOrientation]="listOrientation">
-  <alfa-binary-file2-container *ngFor="let binaryFile of binaryFileList" [file]="binaryFile" [deletable]="false" />
+  <alfa-binary-file2-container
+    *ngFor="let binaryFile of binaryFileListStateResource.resource | toEmbeddedResources: binaryFileListLinkRel.FILE_LIST"
+    [file]="binaryFile"
+    [deletable]="false"
+  >
+  </alfa-binary-file2-container>
 </div>
diff --git a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.spec.ts b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.spec.ts
index c3206eec76..fbbc820600 100644
--- a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.spec.ts
+++ b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.spec.ts
@@ -21,11 +21,11 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BinaryFileResource } from '@alfa-client/binary-file-shared';
-import { ToEmbeddedResourcesPipe } from '@alfa-client/tech-shared';
+import { BinaryFileListResource, BinaryFileResource } from '@alfa-client/binary-file-shared';
+import { createStateResource, StateResource, ToEmbeddedResourcesPipe } from '@alfa-client/tech-shared';
 import { getMockComponent } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { createBinaryFileResource } from 'libs/binary-file-shared/test/binary-file';
+import { createBinaryFileListResource, createBinaryFileResource } from 'libs/binary-file-shared/test/binary-file';
 import { MockComponent, MockDirective } from 'ng-mocks';
 import { BinaryFile2ContainerComponent } from '../../binary-file2-container/binary-file2-container.component';
 import { BinaryFileListOrientationDirective } from '../../directive/binary-file-list-orientation/binary-file-list-orientation.directive';
@@ -36,6 +36,9 @@ describe('BinaryFileListComponent', () => {
   let fixture: ComponentFixture<BinaryFileListComponent>;
 
   const binaryFile: BinaryFileResource = createBinaryFileResource();
+  const binaryFileListStateResource: StateResource<BinaryFileListResource> = createStateResource(
+    createBinaryFileListResource([binaryFile]),
+  );
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
@@ -49,7 +52,7 @@ describe('BinaryFileListComponent', () => {
 
     fixture = TestBed.createComponent(BinaryFileListComponent);
     component = fixture.componentInstance;
-    component.binaryFileList = [binaryFile];
+    component.binaryFileListStateResource = binaryFileListStateResource;
     fixture.detectChanges();
   });
 
diff --git a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.ts b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.ts
index 7d7e50bb09..f0ddb94034 100644
--- a/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.ts
+++ b/alfa-client/libs/binary-file/src/lib/binary-file-list-container/binary-file-list/binary-file-list.component.ts
@@ -21,7 +21,8 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { BinaryFile } from '@alfa-client/binary-file-shared';
+import { BinaryFileListLinkRel, BinaryFileListResource } from '@alfa-client/binary-file-shared';
+import { StateResource } from '@alfa-client/tech-shared';
 import { Component, Input } from '@angular/core';
 import { BinaryFileListOrientation } from '../../directive/binary-file-list-orientation/binary-file-list-orientation.directive';
 
@@ -30,6 +31,8 @@ import { BinaryFileListOrientation } from '../../directive/binary-file-list-orie
   templateUrl: './binary-file-list.component.html',
 })
 export class BinaryFileListComponent {
-  @Input() public binaryFileList: BinaryFile[];
+  @Input() public binaryFileListStateResource: StateResource<BinaryFileListResource>;
   @Input() listOrientation: BinaryFileListOrientation = BinaryFileListOrientation.HORIZONTAL;
+
+  public readonly binaryFileListLinkRel = BinaryFileListLinkRel;
 }
-- 
GitLab