[AE-11486] move shared link in content and deprecate unused dialog service (#8091)

* move shared link in content and deprecate unused dialog service

* Update public-api.ts

* fix

* fix demoshell
This commit is contained in:
Eugenio Romano
2023-01-04 22:44:05 +01:00
committed by GitHub
parent a0aab47090
commit f48cd30756
11 changed files with 15 additions and 136 deletions

View File

@@ -1,61 +0,0 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { TestBed } from '@angular/core/testing';
import { setupTestBed } from '../testing/setup-test-bed';
import { MatDialog } from '@angular/material/dialog';
import { LoginDialogService } from './login-dialog.service';
import { Subject, of } from 'rxjs';
import { CoreTestingModule } from '../testing/core.testing.module';
import { TranslateModule } from '@ngx-translate/core';
describe('LoginDialogService', () => {
let service: LoginDialogService;
let materialDialog: MatDialog;
let spyOnDialogOpen: jasmine.Spy;
setupTestBed({
imports: [
TranslateModule.forRoot(),
CoreTestingModule
]
});
beforeEach(() => {
service = TestBed.inject(LoginDialogService);
materialDialog = TestBed.inject(MatDialog);
spyOnDialogOpen = spyOn(materialDialog, 'open').and.returnValue({
afterOpen: () => of({}),
afterClosed: () => of({}),
componentInstance: {
error: new Subject<any>()
}
} as any);
});
it('should be able to open the dialog when node has permission', () => {
service.openLogin('fake-title', 'fake-action');
expect(spyOnDialogOpen).toHaveBeenCalled();
});
it('should be able to close the material dialog', () => {
spyOn(materialDialog, 'closeAll');
service.close();
expect(materialDialog.closeAll).toHaveBeenCalled();
});
});

View File

@@ -1,64 +0,0 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { MatDialog } from '@angular/material/dialog';
import { Injectable } from '@angular/core';
import { Subject, Observable } from 'rxjs';
import { LoginDialogComponent } from '../login/components/login-dialog.component';
import { LoginDialogComponentData } from '../login/components/login-dialog-component-data.interface';
@Injectable({
providedIn: 'root'
})
export class LoginDialogService {
constructor(private dialog: MatDialog) {
}
/**
* Opens a dialog to choose a file to upload.
*
* @param actionName Name of the action to show in the title
* @param title Title for the dialog
* @returns Information about the chosen file(s)
*/
openLogin(actionName: string, title: string): Observable<string> {
const logged = new Subject<string>();
logged.subscribe({
complete: this.close.bind(this)
});
const data: LoginDialogComponentData = {
title,
actionName,
logged
};
this.openLoginDialog(data, 'adf-login-dialog', '630px');
return logged;
}
private openLoginDialog(data: LoginDialogComponentData, currentPanelClass: string, chosenWidth: string) {
this.dialog.open(LoginDialogComponent, { data, panelClass: currentPanelClass, width: chosenWidth });
}
/** Closes the currently open dialog. */
close() {
this.dialog.closeAll();
}
}

View File

@@ -29,9 +29,7 @@ export * from './deleted-nodes-api.service';
export * from './nodes-api.service';
export * from './people-content.service';
export * from './people-process.service';
export * from './shared-links-api.service';
export * from './discovery-api.service';
export * from './login-dialog.service';
export * from './external-alfresco-api.service';
export * from './download-zip.service';
export * from './automation.service';

View File

@@ -1,90 +0,0 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Injectable } from '@angular/core';
import { NodePaging, SharedLinkEntry, SharedlinksApi } from '@alfresco/js-api';
import { Observable, from, of, Subject } from 'rxjs';
import { AlfrescoApiService } from './alfresco-api.service';
import { UserPreferencesService } from '../common/services/user-preferences.service';
import { catchError } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class SharedLinksApiService {
error = new Subject<{ statusCode: number; message: string }>();
private _sharedLinksApi: SharedlinksApi;
get sharedLinksApi(): SharedlinksApi {
this._sharedLinksApi = this._sharedLinksApi ?? new SharedlinksApi(this.apiService.getInstance());
return this._sharedLinksApi;
}
constructor(private apiService: AlfrescoApiService,
private preferences: UserPreferencesService) {
}
/**
* Gets shared links available to the current user.
*
* @param options Options supported by JS-API
* @returns List of shared links
*/
getSharedLinks(options: any = {}): Observable<NodePaging> {
const defaultOptions = {
maxItems: this.preferences.paginationSize,
skipCount: 0,
include: ['properties', 'allowableOperations']
};
const queryOptions = Object.assign({}, defaultOptions, options);
const promise = this.sharedLinksApi.listSharedLinks(queryOptions);
return from(promise).pipe(
catchError((err) => of(err))
);
}
/**
* Creates a shared link available to the current user.
*
* @param nodeId ID of the node to link to
* @param options Options supported by JS-API
* @returns The shared link just created
*/
createSharedLinks(nodeId: string, options: any = {}): Observable<SharedLinkEntry> {
const promise = this.sharedLinksApi.createSharedLink({ nodeId }, options);
return from(promise).pipe(
catchError((err) => of(err))
);
}
/**
* Deletes a shared link.
*
* @param sharedId ID of the link to delete
* @returns Null response notifying when the operation is complete
*/
deleteSharedLink(sharedId: string): Observable<any | Error> {
const promise = this.sharedLinksApi.deleteSharedLink(sharedId);
return from(promise).pipe(
catchError((err: Error) => of(err))
);
}
}