diff --git a/goofy-client/libs/binary-file/src/lib/binary-file-container/binary-file-container.component.spec.ts b/goofy-client/libs/binary-file/src/lib/binary-file-container/binary-file-container.component.spec.ts index a3740fd67c0d2737bbd846bfe38574b51184d7fb..3fbfbf83bf7d58d9f7ccb4df6993b39ae99db838 100644 --- a/goofy-client/libs/binary-file/src/lib/binary-file-container/binary-file-container.component.spec.ts +++ b/goofy-client/libs/binary-file/src/lib/binary-file-container/binary-file-container.component.spec.ts @@ -3,7 +3,7 @@ import { BinaryFileService, OzgFileResource } from '@goofy-client/binary-file-sh import { OzgFileContainerComponent } from '@goofy-client/ozg-file'; import { createEmptyStateResource, createStateResource, HasLinkPipe, StateResource } from '@goofy-client/tech-shared'; import { mock } from '@goofy-client/test-utils'; -import { createOzgFileResource } from 'libs/ozg-file-shared/test/ozg-file'; +import { createOzgFileResource } from 'libs/binary-file-shared/test/binary-file'; import { FileUploadEditorComponent } from 'libs/ui/src/lib/ui/editor/file-upload-editor/file-upload-editor.component'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; diff --git a/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhaenge/anhaenge.component.spec.ts b/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhaenge/anhaenge.component.spec.ts index bb4a46170e3fd25d8716447bea82d291050a1117..2a26a87a5ac4f66ec26ad648c35375519d9a0424 100644 --- a/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhaenge/anhaenge.component.spec.ts +++ b/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhaenge/anhaenge.component.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { createOzgFileResources } from 'libs/ozg-file-shared/test/ozg-file'; +import { createOzgFileResources } from 'libs/binary-file-shared/test/binary-file'; import { MockComponent } from 'ng-mocks'; import { OzgFileContainerComponent } from '../../ozg-file-container/ozg-file-container.component'; import { AnhaengeComponent } from './anhaenge.component'; diff --git a/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.spec.ts b/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.spec.ts index e4dfee86c6dd6b2ceea12d9c312840f08e0d6eab..79e5ef7f2cc821d66397be9b90b8b923d19a407c 100644 --- a/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.spec.ts +++ b/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.spec.ts @@ -4,7 +4,7 @@ import { createEmptyStateResource, createStateResource, HasLinkPipe, StateResour import { mock } from '@goofy-client/test-utils'; import { ExpansionPanelComponent, SpinnerComponent } from '@goofy-client/ui'; import { VorgangService } from '@goofy-client/vorgang-shared'; -import { createOzgFileListResource } from 'libs/ozg-file-shared/test/ozg-file'; +import { createOzgFileListResource } from 'libs/binary-file-shared/test/binary-file'; import { MockComponent } from 'ng-mocks'; import { AnhaengeComponent } from './anhaenge/anhaenge.component'; import { AnhangListContainerComponent } from './anhang-list-container.component'; diff --git a/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file-container.component.spec.ts b/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file-container.component.spec.ts index 62fa608ad0a1db8972cda886b33d0b746b32b076..ec18bc4dd4faacf60b545e49f78948a87a4a4646 100644 --- a/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file-container.component.spec.ts +++ b/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file-container.component.spec.ts @@ -3,7 +3,7 @@ import { ApiRootService } from '@goofy-client/api-root-shared'; import { BinaryFileService, OzgFileLinkRel, OzgFileResource } from '@goofy-client/binary-file-shared'; import { ConvertForDataTestPipe } from '@goofy-client/tech-shared'; import { mock } from '@goofy-client/test-utils'; -import { createOzgFileResource } from 'libs/ozg-file-shared/test/ozg-file'; +import { createOzgFileResource } from 'libs/binary-file-shared/test/binary-file'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; import { OzgFileContainerComponent } from './ozg-file-container.component'; diff --git a/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file/ozg-file.component.spec.ts b/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file/ozg-file.component.spec.ts index 1d71f9efda41cb380b087b81470618ceefe17595..9f02c400bb91e0df6662d49893f6822c3e51a774 100644 --- a/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file/ozg-file.component.spec.ts +++ b/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file/ozg-file.component.spec.ts @@ -6,7 +6,7 @@ import { ApiDownloadToken } from '@goofy-client/api-root-shared'; import { OzgFileLinkRel, OzgFileResource } from '@goofy-client/binary-file-shared'; import { createEmptyStateResource, FileSizePipe, HasLinkPipe, ToResourceUriPipe } from '@goofy-client/tech-shared'; import { IconButtonWithSpinnerComponent, SpinnerComponent } from '@goofy-client/ui'; -import { createOzgFileResource } from 'libs/ozg-file-shared/test/ozg-file'; +import { createOzgFileResource } from 'libs/binary-file-shared/test/binary-file'; import { MockComponent, MockDirective } from 'ng-mocks'; import { OzgFileComponent } from './ozg-file.component'; diff --git a/goofy-client/libs/postfach-shared/src/lib/postfach.service.spec.ts b/goofy-client/libs/postfach-shared/src/lib/postfach.service.spec.ts index 211b9d99a67eaff97c609654adef7624548ae65d..632cfe1173d09a2d95460d94ce4db010358f1230 100644 --- a/goofy-client/libs/postfach-shared/src/lib/postfach.service.spec.ts +++ b/goofy-client/libs/postfach-shared/src/lib/postfach.service.spec.ts @@ -6,9 +6,9 @@ import { Mock, mock, useFromMock } from '@goofy-client/test-utils'; import { SnackBarService } from '@goofy-client/ui'; import { VorgangService } from '@goofy-client/vorgang-shared'; import { cold, hot } from 'jest-marbles'; +import { createOzgFileListResource, createOzgFileResources } from 'libs/binary-file-shared/test/binary-file'; import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel'; import { createCommandResource } from 'libs/command-shared/test/command'; -import { createOzgFileListResource, createOzgFileResources } from 'libs/ozg-file-shared/test/ozg-file'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { of } from 'rxjs'; import { PostfachMailLinkRel } from '..'; diff --git a/goofy-client/libs/postfach/src/lib/postfach-mail-list-container/postfach-mail-list/postfach-mail/postfach-nachricht-attachments/postfach-nachricht-attachments.component.spec.ts b/goofy-client/libs/postfach/src/lib/postfach-mail-list-container/postfach-mail-list/postfach-mail/postfach-nachricht-attachments/postfach-nachricht-attachments.component.spec.ts index c76bc46964c7c8a3ab43e3ee94c7f2f4c33ee60f..d4501d91aed956d17e67fb21f26232459d59a6a7 100644 --- a/goofy-client/libs/postfach/src/lib/postfach-mail-list-container/postfach-mail-list/postfach-mail/postfach-nachricht-attachments/postfach-nachricht-attachments.component.spec.ts +++ b/goofy-client/libs/postfach/src/lib/postfach-mail-list-container/postfach-mail-list/postfach-mail/postfach-nachricht-attachments/postfach-nachricht-attachments.component.spec.ts @@ -1,13 +1,13 @@ import { registerLocaleData } from '@angular/common'; import localeDe from '@angular/common/locales/de'; import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { OzgFileListResource } from '@goofy-client/binary-file-shared'; import { OzgFileContainerComponent } from '@goofy-client/ozg-file'; -import { OzgFileListResource } from '@goofy-client/ozg-file-shared'; import { PostfachMailResource, PostfachService } from '@goofy-client/postfach-shared'; import { ConvertForDataTestPipe, createStateResource } from '@goofy-client/tech-shared'; import { Mock, mock } from '@goofy-client/test-utils'; import { SpinnerComponent } from '@goofy-client/ui'; -import { createOzgFileListResource } from 'libs/ozg-file-shared/test/ozg-file'; +import { createOzgFileListResource } from 'libs/binary-file-shared/test/binary-file'; import { createPostfachMailResource } from 'libs/postfach-shared/test/postfach'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts index 66de14f3617265bcc7c17dbc03ef973c17b0c05f..6ecf1133f8615e65e61be52c4a973994f4bc2d25 100644 --- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts +++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts @@ -4,9 +4,9 @@ import { createEmptyStateResource, createStateResource, NavigationService, State import { Mock, mock, useFromMock } from '@goofy-client/test-utils'; import { getUrl, ResourceUri } from '@ngxp/rest'; import { cold, hot } from 'jest-marbles'; +import { createOzgFileListResource } from 'libs/binary-file-shared/test/binary-file'; import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel'; import { createCommandListResource, createCommandResource } from 'libs/command-shared/test/command'; -import { createOzgFileListResource } from 'libs/ozg-file-shared/test/ozg-file'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { of } from 'rxjs'; import { VorgangWithEingangLinkRel } from './vorgang.linkrel'; diff --git a/goofy-client/libs/wiedervorlage-shared/src/lib/state.service.ts b/goofy-client/libs/wiedervorlage-shared/src/lib/state.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..cdb5d6555971a40a961c7f560880fc44281542d0 --- /dev/null +++ b/goofy-client/libs/wiedervorlage-shared/src/lib/state.service.ts @@ -0,0 +1,35 @@ +import { OzgFileListResource } from '@goofy-client/ozg-file-shared'; +import { createEmptyStateResource, doIfLoadingRequired, ListResource, StateResource } from '@goofy-client/tech-shared'; +import { getUrl, Resource, ResourceUri } from '@ngxp/rest'; +import { isNil } from 'lodash-es'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { WiedervorlageResource } from './wiedervorlage.model'; + +//Eine Util klasse zum Laden und Aktualiseren von "maps" -> {uri: behaviourSubject} +export function getResourceList(wiedervorlage: WiedervorlageResource, loadingFunction): Observable<StateResource<OzgFileListResource>> { + const uri: ResourceUri = getUrl(wiedervorlage); + + if (isNil(this.attachmentListByWiedervorlage[uri])) { + this.attachmentListByWiedervorlage[uri] = new BehaviorSubject(createEmptyStateResource()); + } else { + this.attachmentListByWiedervorlage[uri].next(createEmptyStateResource()); + } + + doIfLoadingRequired(this.attachmentListByWiedervorlage[uri].value, () => loadResourceList(wiedervorlage, loadingFunction)); + + return this.attachmentListByWiedervorlage[uri].asObservable(); +} + +function loadResourceList(wiedervorlage: Resource, loadingFunction): void { + setAttachmentLoading(wiedervorlage); + if (!isNil(this.attachmentSubscription)) this.attachmentSubscription.unsubscribe(); + this.attachmentSubscription = loadingFunction().subscribe((fileList: StateResource<ListResource>) => { + if (fileList.loaded) { + this.attachmentListByWiedervorlage[getUrl(wiedervorlage)].next(fileList); + } + }); +} + +function setAttachmentLoading(wiedervorlage: Resource): void { + this.attachmentListByWiedervorlage[getUrl(wiedervorlage)].next({ ...this.attachmentListByWiedervorlage[getUrl(wiedervorlage)].value, loading: true }); +} \ No newline at end of file diff --git a/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts b/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts index 97decccecc73d6b922169ccc7272217c99d65b87..991198bf5f4a4ebe440f33be67b872dd449140c6 100644 --- a/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts +++ b/goofy-client/libs/wiedervorlage-shared/src/lib/wiedervorlage.service.spec.ts @@ -6,9 +6,9 @@ import { SnackBarService } from '@goofy-client/ui'; import { VorgangHeaderLinkRel, VorgangService, VorgangWithEingangResource } from '@goofy-client/vorgang-shared'; import { getUrl } from '@ngxp/rest'; import { cold, hot } from 'jest-marbles'; +import { createOzgFileListResource } from 'libs/binary-file-shared/test/binary-file'; import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel'; import { createCommandResource } from 'libs/command-shared/test/command'; -import { createOzgFileListResource } from 'libs/ozg-file-shared/test/ozg-file'; import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { createWiedervorlage, createWiedervorlageListResource, createWiedervorlageResource } from 'libs/wiedervorlage-shared/test/wiedervorlage'; import { of } from 'rxjs'; diff --git a/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage-form.component.spec.ts b/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage-form.component.spec.ts index 27b77f32cbc277918bb9e1a410b530efa667c147..a6f057043e1321e862ab15e7a940bd33c7616937 100644 --- a/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage-form.component.spec.ts +++ b/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage-form.component.spec.ts @@ -6,7 +6,7 @@ import { OzgFileListResource } from '@goofy-client/binary-file-shared'; import { Mock, mock, useFromMock } from '@goofy-client/test-utils'; import { DateEditorComponent, TextAreaEditorComponent, TextEditorComponent } from '@goofy-client/ui'; import { WiedervorlageLinkRel, WiedervorlageResource, WiedervorlageService } from '@goofy-client/wiedervorlage-shared'; -import { createOzgFileListResource } from 'libs/ozg-file-shared/test/ozg-file'; +import { createOzgFileListResource } from 'libs/binary-file-shared/test/binary-file'; import { createWiedervorlageResource } from 'libs/wiedervorlage-shared/test/wiedervorlage'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs';