[ACS-9911] Upgrade NgRx API (#4702)

This commit is contained in:
dominikiwanekhyland
2025-07-28 14:36:38 +02:00
committed by GitHub
parent a12537d40e
commit 49ed11b7d4
21 changed files with 105 additions and 102 deletions

View File

@@ -2,5 +2,8 @@
"XAT-17181": "https://hyland.atlassian.net/browse/ACS-9889",
"XAT-17640": "https://hyland.atlassian.net/browse/ACS-9889",
"XAT-17644": "https://hyland.atlassian.net/browse/ACS-9889",
"XAT-17182": "https://hyland.atlassian.net/browse/ACS-9889"
"XAT-17182": "https://hyland.atlassian.net/browse/ACS-9889",
"XAT-17639": "https://hyland.atlassian.net/browse/ACS-9889",
"XAT-5506": "https://hyland.atlassian.net/browse/ACS-9889",
"XAT-5465": "https://hyland.atlassian.net/browse/ACS-9889"
}

View File

@@ -24,14 +24,13 @@
import { ExtensionService, provideExtensionConfig } from '@alfresco/adf-extensions';
import { NgModule } from '@angular/core';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { AosEffects } from './effects/aos.effects';
import { provideTranslations } from '@alfresco/adf-core';
import { canOpenWithOffice } from '@alfresco/aca-shared/rules';
@NgModule({
imports: [EffectsModule.forFeature([AosEffects])],
providers: [provideExtensionConfig(['aos.plugin.json']), provideTranslations('ms-office', 'assets/ms-office')]
providers: [provideExtensionConfig(['aos.plugin.json']), provideTranslations('ms-office', 'assets/ms-office'), provideEffects(AosEffects)]
})
export class AosExtensionModule {
constructor(extensions: ExtensionService) {

View File

@@ -32,7 +32,7 @@ import { of } from 'rxjs';
import { By } from '@angular/platform-browser';
import { ContentActionType } from '@alfresco/adf-extensions';
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
import { StoreModule } from '@ngrx/store';
import { provideStore } from '@ngrx/store';
const mockNode = {
entry: {
@@ -55,10 +55,11 @@ describe('DatatableCellBadgesComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
NoopTranslateModule,
NoopAuthModule,
StoreModule.forRoot(
imports: [NoopTranslateModule, NoopAuthModule, DatatableCellBadgesComponent],
providers: [
Actions,
provideHttpClient(withInterceptorsFromDi()),
provideStore(
{ app: (state) => state },
{
initialState: {
@@ -72,10 +73,8 @@ describe('DatatableCellBadgesComponent', () => {
}
}
}
),
DatatableCellBadgesComponent
],
providers: [Actions, provideHttpClient(withInterceptorsFromDi())]
)
]
});
fixture = TestBed.createComponent(DatatableCellBadgesComponent);

View File

@@ -24,7 +24,7 @@
import { CustomNameColumnComponent } from './name-column.component';
import { Actions } from '@ngrx/effects';
import { StoreModule } from '@ngrx/store';
import { provideStore } from '@ngrx/store';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
import { By } from '@angular/platform-browser';
@@ -47,12 +47,11 @@ describe('CustomNameColumnComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
NoopTranslateModule,
CustomNameColumnComponent,
MockDatatableCellBadgesComponent,
AuthModule.forRoot(),
StoreModule.forRoot(
imports: [NoopTranslateModule, CustomNameColumnComponent, MockDatatableCellBadgesComponent, AuthModule.forRoot()],
providers: [
Actions,
provideHttpClient(withInterceptorsFromDi()),
provideStore(
{ app: (state) => state },
{
initialState: {
@@ -67,8 +66,7 @@ describe('CustomNameColumnComponent', () => {
}
}
)
],
providers: [Actions, provideHttpClient(withInterceptorsFromDi())]
]
});
fixture = TestBed.createComponent(CustomNameColumnComponent);

View File

@@ -29,7 +29,7 @@ import { AlfrescoApiService } from '@alfresco/adf-content-services';
import { FavoriteLibrariesComponent } from './favorite-libraries.component';
import { AppTestingModule } from '../../testing/app-testing.module';
import { AppHookService, ContentApiService } from '@alfresco/aca-shared';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { RouterEffects } from '@alfresco/aca-shared/store';
import { of, throwError } from 'rxjs';
import { LibraryEffects } from '../../store/effects';
@@ -58,7 +58,8 @@ describe('FavoriteLibrariesComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([RouterEffects, LibraryEffects]), FavoriteLibrariesComponent, MatSnackBarModule]
imports: [AppTestingModule, FavoriteLibrariesComponent, MatSnackBarModule],
providers: [provideEffects([RouterEffects, LibraryEffects])]
});
fixture = TestBed.createComponent(FavoriteLibrariesComponent);

View File

@@ -22,12 +22,12 @@
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
*/
import { TestBed, ComponentFixture } from '@angular/core/testing';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { Router } from '@angular/router';
import { AlfrescoApiService } from '@alfresco/adf-content-services';
import { LibrariesComponent } from './libraries.component';
import { AppTestingModule } from '../../testing/app-testing.module';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { LibraryEffects } from '../../store/effects';
import { ContentApiService } from '@alfresco/aca-shared';
import { getTitleElementText } from '../../testing/test-utils';
@@ -52,7 +52,8 @@ describe('LibrariesComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([LibraryEffects]), LibrariesComponent, MatSnackBarModule]
imports: [AppTestingModule, LibrariesComponent, MatSnackBarModule],
providers: [provideEffects([LibraryEffects])]
});
fixture = TestBed.createComponent(LibrariesComponent);

View File

@@ -24,7 +24,6 @@
import { fakeAsync, flush, TestBed, tick } from '@angular/core/testing';
import { BehaviorSubject, EMPTY, of, Subject, throwError } from 'rxjs';
import { EffectsModule } from '@ngrx/effects';
import {
AppStore,
CopyNodesAction,
@@ -62,6 +61,7 @@ import {
ViewVersion
} from '@alfresco/adf-content-services';
import { FolderInformationComponent } from '../dialogs/folder-details/folder-information.component';
import { provideEffects } from '@ngrx/effects';
describe('ContentManagementService', () => {
let dialog: MatDialog;
@@ -84,7 +84,8 @@ describe('ContentManagementService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([NodeEffects]), MatDialogModule, MatSnackBarModule]
imports: [AppTestingModule, MatDialogModule, MatSnackBarModule],
providers: [provideEffects([NodeEffects])]
});
contentApi = TestBed.inject(ContentApiService);

View File

@@ -22,8 +22,7 @@
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
*/
import { TestBed, fakeAsync, tick } from '@angular/core/testing';
import { EffectsModule } from '@ngrx/effects';
import { fakeAsync, TestBed, tick } from '@angular/core/testing';
import { TemplateEffects } from '../store/effects/template.effects';
import { AppTestingModule } from '../testing/app-testing.module';
import { Store } from '@ngrx/store';
@@ -32,6 +31,7 @@ import { NodeTemplateService } from './node-template.service';
import { ResultSetPaging } from '@alfresco/js-api';
import { NotificationService } from '@alfresco/adf-core';
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { provideEffects } from '@ngrx/effects';
describe('NodeTemplateService', () => {
let dialog: MatDialog;
@@ -50,8 +50,8 @@ describe('NodeTemplateService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([TemplateEffects]), MatDialogModule, MatSnackBarModule],
providers: [NodeTemplateService]
imports: [AppTestingModule, MatDialogModule, MatSnackBarModule],
providers: [NodeTemplateService, provideEffects([TemplateEffects])]
});
store = TestBed.inject(Store);

View File

@@ -23,29 +23,29 @@
*/
import { NgModule } from '@angular/core';
import { StoreModule } from '@ngrx/store';
import { provideStore } from '@ngrx/store';
import { appReducer } from './reducers/app.reducer';
import { StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
import { EffectsModule } from '@ngrx/effects';
import { FullRouterStateSerializer, provideRouterStore } from '@ngrx/router-store';
import { provideEffects } from '@ngrx/effects';
import { RouterEffects } from '@alfresco/aca-shared/store';
import {
AppEffects,
NodeEffects,
ContextMenuEffects,
DownloadEffects,
ViewerEffects,
SearchEffects,
LibraryEffects,
UploadEffects,
FavoriteEffects,
LibraryEffects,
NodeEffects,
SearchEffects,
TemplateEffects,
ContextMenuEffects
UploadEffects,
ViewerEffects
} from './effects';
import { INITIAL_STATE } from './initial-state';
import { SearchAiEffects } from './effects/search-ai.effects';
@NgModule({
imports: [
StoreModule.forRoot(
providers: [
provideStore(
{ app: appReducer },
{
initialState: INITIAL_STATE,
@@ -55,11 +55,8 @@ import { SearchAiEffects } from './effects/search-ai.effects';
}
}
),
StoreRouterConnectingModule.forRoot({
serializer: FullRouterStateSerializer,
stateKey: 'router'
}),
EffectsModule.forRoot([
provideRouterStore({ stateKey: 'router', serializer: FullRouterStateSerializer }),
provideEffects([
AppEffects,
NodeEffects,
DownloadEffects,

View File

@@ -25,7 +25,7 @@
import { TestBed } from '@angular/core/testing';
import { AppTestingModule } from '../../testing/app-testing.module';
import { ContextMenuEffects } from './contextmenu.effects';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { ContextMenu, CustomContextMenu } from '@alfresco/aca-shared/store';
import { ContextMenuService } from '../../components/context-menu/context-menu.service';
@@ -51,8 +51,8 @@ describe('ContextMenuEffects', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([ContextMenuEffects]), OverlayModule],
providers: [ContextMenuService]
imports: [AppTestingModule, OverlayModule],
providers: [ContextMenuService, provideEffects([ContextMenuEffects])]
});
store = TestBed.inject(Store);

View File

@@ -24,7 +24,6 @@
import { TestBed } from '@angular/core/testing';
import { AppTestingModule } from '../../testing/app-testing.module';
import { EffectsModule } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { BehaviorSubject, Subject } from 'rxjs';
import { MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
@@ -32,13 +31,15 @@ import { DownloadNodesAction } from '@alfresco/aca-shared/store';
import { SelectionState } from '@alfresco/adf-extensions';
import { VersionEntry } from '@alfresco/js-api';
import { DownloadEffects } from './download.effects';
import { provideEffects } from '@ngrx/effects';
describe('DownloadEffects', () => {
let store: Store;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([DownloadEffects]), MatDialogModule]
imports: [AppTestingModule, MatDialogModule],
providers: [provideEffects([DownloadEffects])]
});
store = TestBed.inject(Store);
});

View File

@@ -29,7 +29,7 @@ import { ContentApiService } from '@alfresco/aca-shared';
import { Subject } from 'rxjs';
import { HttpErrorResponse } from '@angular/common/http';
import { NotificationService } from '@alfresco/adf-core';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { LibraryEffects } from './library.effects';
import { AppTestingModule } from '../../testing/app-testing.module';
import { NodeEntry } from '@alfresco/js-api';
@@ -39,7 +39,8 @@ describe('LibraryEffects', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([LibraryEffects])]
imports: [AppTestingModule],
providers: [provideEffects([LibraryEffects])]
});
store = TestBed.inject(Store);
});

View File

@@ -25,7 +25,7 @@
import { fakeAsync, TestBed, tick } from '@angular/core/testing';
import { AppTestingModule } from '../../testing/app-testing.module';
import { NodeEffects } from './node.effects';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { ContentManagementService } from '../../services/content-management.service';
import {
@@ -55,7 +55,7 @@ import {
} from '@alfresco/aca-shared/store';
import { RenditionService } from '@alfresco/adf-content-services';
import { ViewerEffects } from './viewer.effects';
import { NavigationEnd, Router, ActivatedRoute } from '@angular/router';
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
import { of } from 'rxjs';
import { MatDialogModule } from '@angular/material/dialog';
import { MatSnackBarModule } from '@angular/material/snack-bar';
@@ -70,8 +70,12 @@ describe('NodeEffects', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([NodeEffects, ViewerEffects, RouterEffects]), MatDialogModule, MatSnackBarModule],
providers: [RenditionService, { provide: ActivatedRoute, useValue: { queryParams: of({ location: 'test-page' }) } }]
imports: [AppTestingModule, MatDialogModule, MatSnackBarModule],
providers: [
provideEffects([NodeEffects, ViewerEffects, RouterEffects]),
RenditionService,
{ provide: ActivatedRoute, useValue: { queryParams: of({ location: 'test-page' }) } }
]
});
store = TestBed.inject(Store);

View File

@@ -23,7 +23,7 @@
*/
import { TestBed } from '@angular/core/testing';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { SearchAiEffects } from './search-ai.effects';
import { Store } from '@ngrx/store';
import { AppTestingModule } from '../../testing/app-testing.module';
@@ -39,7 +39,8 @@ describe('SearchAiEffects', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([SearchAiEffects])]
imports: [AppTestingModule],
providers: [provideEffects([SearchAiEffects])]
});
store = TestBed.inject(Store);
});

View File

@@ -22,13 +22,13 @@
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
*/
import { TestBed, fakeAsync, tick } from '@angular/core/testing';
import { fakeAsync, TestBed, tick } from '@angular/core/testing';
import { AppTestingModule } from '../../testing/app-testing.module';
import { SearchEffects } from './search.effects';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { Router } from '@angular/router';
import { SearchOptionIds, SearchByTermAction, SearchAction } from '@alfresco/aca-shared/store';
import { SearchAction, SearchByTermAction, SearchOptionIds } from '@alfresco/aca-shared/store';
import { SearchQueryBuilderService } from '@alfresco/adf-content-services';
describe('SearchEffects', () => {
@@ -38,7 +38,8 @@ describe('SearchEffects', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([SearchEffects])]
imports: [AppTestingModule],
providers: [provideEffects([SearchEffects])]
});
store = TestBed.inject(Store);

View File

@@ -25,7 +25,7 @@
import { fakeAsync, TestBed, tick } from '@angular/core/testing';
import { AppTestingModule } from '../../testing/app-testing.module';
import { TemplateEffects } from './template.effects';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { CreateFromTemplate, CreateFromTemplateSuccess, FileFromTemplate, FolderFromTemplate } from '@alfresco/aca-shared/store';
import { NodeTemplateService } from '../../services/node-template.service';
@@ -76,8 +76,9 @@ describe('TemplateEffects', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([TemplateEffects]), MatSnackBarModule],
imports: [AppTestingModule, MatSnackBarModule],
providers: [
provideEffects([TemplateEffects]),
NodeTemplateService,
{
provide: MatDialog,

View File

@@ -24,11 +24,11 @@
import { Store } from '@ngrx/store';
import { TestBed } from '@angular/core/testing';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { UploadEffects } from './upload.effects';
import { AppTestingModule } from '../../testing/app-testing.module';
import { NgZone } from '@angular/core';
import { UploadService, FileUploadCompleteEvent, FileModel } from '@alfresco/adf-content-services';
import { FileModel, FileUploadCompleteEvent, UploadService } from '@alfresco/adf-content-services';
import { UnlockWriteAction, UploadFilesAction, UploadFileVersionAction, UploadFolderAction } from '@alfresco/aca-shared/store';
import { ContentManagementService } from '../../services/content-management.service';
import { MatDialogModule } from '@angular/material/dialog';
@@ -43,7 +43,8 @@ describe('UploadEffects', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([UploadEffects]), MatDialogModule, MatSnackBarModule]
imports: [AppTestingModule, MatDialogModule, MatSnackBarModule],
providers: [provideEffects([UploadEffects])]
});
zone = TestBed.inject(NgZone);

View File

@@ -25,7 +25,7 @@
import { fakeAsync, TestBed, tick } from '@angular/core/testing';
import { AppTestingModule } from '../../testing/app-testing.module';
import { ViewerEffects } from './viewer.effects';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { Router } from '@angular/router';
import { SetCurrentFolderAction, SetSelectedNodesAction, ViewFileAction, ViewNodeAction } from '@alfresco/aca-shared/store';
@@ -37,7 +37,8 @@ describe('ViewerEffects', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AppTestingModule, EffectsModule.forRoot([ViewerEffects]), MatDialogModule]
imports: [AppTestingModule, MatDialogModule],
providers: [provideEffects([ViewerEffects])]
});
store = TestBed.inject(Store);

View File

@@ -28,10 +28,10 @@ import { AuthenticationService, NoopTranslateModule, PageTitleService } from '@a
import { AlfrescoApiService, AlfrescoApiServiceMock, DiscoveryApiService, SearchQueryBuilderService } from '@alfresco/adf-content-services';
import { RepositoryInfo, VersionInfo } from '@alfresco/js-api';
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
import { StoreModule } from '@ngrx/store';
import { provideStore } from '@ngrx/store';
import { appReducer } from '../store/reducers/app.reducer';
import { RouterTestingModule } from '@angular/router/testing';
import { EffectsModule } from '@ngrx/effects';
import { provideEffects } from '@ngrx/effects';
import { INITIAL_STATE } from '../store/initial-state';
import { BehaviorSubject, Observable, of, Subject } from 'rxjs';
import { ContentManagementService } from '../services/content-management.service';
@@ -42,11 +42,9 @@ import { MatIconTestingModule } from '@angular/material/icon/testing';
@NgModule({
exports: [RouterTestingModule],
imports: [
NoopAnimationsModule,
NoopTranslateModule,
RouterTestingModule,
StoreModule.forRoot(
imports: [NoopAnimationsModule, NoopTranslateModule, RouterTestingModule, MatSnackBarModule, MatDialogModule, MatIconTestingModule],
providers: [
provideStore(
{ app: appReducer },
{
initialState: INITIAL_STATE,
@@ -56,12 +54,7 @@ import { MatIconTestingModule } from '@angular/material/icon/testing';
}
}
),
EffectsModule.forRoot([]),
MatSnackBarModule,
MatDialogModule,
MatIconTestingModule
],
providers: [
provideEffects([]),
SearchQueryBuilderService,
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: DocumentBasePageService, useExisting: ContentManagementService },

View File

@@ -29,8 +29,8 @@ import { TranslateLoaderService, TranslationMock, TranslationService } from '@al
import { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services';
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
import { RouterTestingModule } from '@angular/router/testing';
import { EffectsModule } from '@ngrx/effects';
import { StoreModule } from '@ngrx/store';
import { provideEffects } from '@ngrx/effects';
import { provideStore } from '@ngrx/store';
import { CommonModule } from '@angular/common';
import { MatIconTestingModule } from '@angular/material/icon/testing';
import { OverlayModule } from '@angular/cdk/overlay';
@@ -99,9 +99,16 @@ export class DocumentBasePageServiceMock extends DocumentBasePageService {
CommonModule,
RouterTestingModule,
MatIconTestingModule,
StoreModule,
OverlayModule,
StoreModule.forRoot(
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useClass: TranslateLoaderService
}
})
],
providers: [
provideStore(
{ app: null },
{
initialState,
@@ -111,15 +118,7 @@ export class DocumentBasePageServiceMock extends DocumentBasePageService {
}
}
),
EffectsModule.forRoot([]),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useClass: TranslateLoaderService
}
})
],
providers: [
provideEffects([]),
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: TranslationService, useClass: TranslationMock },
provideHttpClient(withInterceptorsFromDi())

View File

@@ -23,8 +23,8 @@
*/
import { fakeAsync, TestBed, tick } from '@angular/core/testing';
import { EffectsModule } from '@ngrx/effects';
import { Store, StoreModule } from '@ngrx/store';
import { provideEffects } from '@ngrx/effects';
import { provideStore, Store } from '@ngrx/store';
import { NoopTranslateModule, SnackbarContentComponent } from '@alfresco/adf-core';
import { RouterEffects } from './router.effects';
import {
@@ -46,7 +46,8 @@ describe('NodeEffects', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [NoopTranslateModule, StoreModule.forRoot({}), EffectsModule.forRoot([RouterEffects])]
imports: [NoopTranslateModule],
providers: [provideStore(), provideEffects([RouterEffects])]
});
store = TestBed.inject(Store);