mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-09-17 14:21:14 +00:00
upgrade to latest JS-API and ADF (#896)
* improved update script and latest ADF libs * upgrade to latest js-api and ADF * upgrade tests * update viewer code * use @alfresco/js-api * update to latest adf * fix deprecation issues * update viewer * fix copy/move dialog * change expect * fix remove site from favorites * fix unit test * update adf version * use ADF upload dialog
This commit is contained in:
@@ -84,7 +84,7 @@ describe('Special permissions', () => {
|
|||||||
expect(await dataTable.countRows()).toBe(1, 'Incorrect number of items');
|
expect(await dataTable.countRows()).toBe(1, 'Incorrect number of items');
|
||||||
await apis.admin.sites.deleteSiteMember(sitePrivate, username);
|
await apis.admin.sites.deleteSiteMember(sitePrivate, username);
|
||||||
await page.refresh();
|
await page.refresh();
|
||||||
expect(await dataTable.countRows()).toBe(0, 'Incorrect number of items');
|
expect(await dataTable.isEmptyList()).toBe(true, 'Items are still displayed');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('on Favorites - [C213227]', async () => {
|
it('on Favorites - [C213227]', async () => {
|
||||||
@@ -92,7 +92,7 @@ describe('Special permissions', () => {
|
|||||||
expect(await dataTable.countRows()).toBe(1, 'Incorrect number of items');
|
expect(await dataTable.countRows()).toBe(1, 'Incorrect number of items');
|
||||||
await apis.admin.sites.deleteSiteMember(sitePrivate, username);
|
await apis.admin.sites.deleteSiteMember(sitePrivate, username);
|
||||||
await page.refresh();
|
await page.refresh();
|
||||||
expect(await dataTable.countRows()).toBe(0, 'Incorrect number of items');
|
expect(await dataTable.isEmptyList()).toBe(true, 'Items are still displayed');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('on Shared Files - [C213116]', async () => {
|
it('on Shared Files - [C213116]', async () => {
|
||||||
@@ -100,7 +100,7 @@ describe('Special permissions', () => {
|
|||||||
expect(await dataTable.countRows()).toBe(1, 'Incorrect number of items');
|
expect(await dataTable.countRows()).toBe(1, 'Incorrect number of items');
|
||||||
await apis.admin.sites.deleteSiteMember(sitePrivate, username);
|
await apis.admin.sites.deleteSiteMember(sitePrivate, username);
|
||||||
await page.refresh();
|
await page.refresh();
|
||||||
expect(await dataTable.countRows()).toBe(0, 'Incorrect number of items');
|
expect(await dataTable.isEmptyList()).toBe(true, 'Items are still displayed');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -26,8 +26,11 @@
|
|||||||
import { RepoApi } from '../repo-api';
|
import { RepoApi } from '../repo-api';
|
||||||
import { RepoClient } from './../../repo-client';
|
import { RepoClient } from './../../repo-client';
|
||||||
import { Utils } from '../../../../utilities/utils';
|
import { Utils } from '../../../../utilities/utils';
|
||||||
|
import { FavoritesApi as AdfFavoritesApi, SitesApi as AdfSiteApi } from '@alfresco/js-api';
|
||||||
|
|
||||||
export class FavoritesApi extends RepoApi {
|
export class FavoritesApi extends RepoApi {
|
||||||
|
favoritesApi = new AdfFavoritesApi(this.alfrescoJsApi);
|
||||||
|
sitesApi = new AdfSiteApi(this.alfrescoJsApi);
|
||||||
|
|
||||||
constructor(username?, password?) {
|
constructor(username?, password?) {
|
||||||
super(username, password);
|
super(username, password);
|
||||||
@@ -42,7 +45,7 @@ export class FavoritesApi extends RepoApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return await this.alfrescoJsApi.core.favoritesApi.addFavorite('-me-', data);
|
return await this.favoritesApi.createFavorite('-me-', data);
|
||||||
}
|
}
|
||||||
|
|
||||||
async addFavoriteById(nodeType: 'file' | 'folder' | 'site', id: string) {
|
async addFavoriteById(nodeType: 'file' | 'folder' | 'site', id: string) {
|
||||||
@@ -50,7 +53,7 @@ export class FavoritesApi extends RepoApi {
|
|||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
|
|
||||||
if ( nodeType === 'site' ) {
|
if ( nodeType === 'site' ) {
|
||||||
guid = (await this.alfrescoJsApi.core.sitesApi.getSite(id)).entry.guid;
|
guid = (await this.sitesApi.getSite(id)).entry.guid;
|
||||||
} else {
|
} else {
|
||||||
guid = id;
|
guid = id;
|
||||||
}
|
}
|
||||||
@@ -62,7 +65,7 @@ export class FavoritesApi extends RepoApi {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
try {
|
try {
|
||||||
return await this.alfrescoJsApi.core.favoritesApi.addFavorite('-me-', data);
|
return await this.favoritesApi.createFavorite('-me-', data);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// console.log('--- add favorite by id catch ');
|
// console.log('--- add favorite by id catch ');
|
||||||
}
|
}
|
||||||
@@ -77,12 +80,12 @@ export class FavoritesApi extends RepoApi {
|
|||||||
|
|
||||||
async getFavorites() {
|
async getFavorites() {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.favoritesApi.getFavorites(this.getUsername());
|
return await this.favoritesApi.listFavorites(this.getUsername());
|
||||||
}
|
}
|
||||||
|
|
||||||
async getFavoriteById(nodeId: string) {
|
async getFavoriteById(nodeId: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.favoritesApi.getFavorite('-me-', nodeId);
|
return await this.favoritesApi.getFavorite('-me-', nodeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
async isFavorite(nodeId: string) {
|
async isFavorite(nodeId: string) {
|
||||||
@@ -111,7 +114,7 @@ export class FavoritesApi extends RepoApi {
|
|||||||
async removeFavoriteById(nodeId: string) {
|
async removeFavoriteById(nodeId: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
try {
|
try {
|
||||||
return await this.alfrescoJsApi.core.peopleApi.removeFavoriteSite('-me-', nodeId);
|
return await this.favoritesApi.deleteSiteFavorite('-me-', nodeId);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// console.log('--- remove favorite by id catch ');
|
// console.log('--- remove favorite by id catch ');
|
||||||
}
|
}
|
||||||
@@ -139,6 +142,5 @@ export class FavoritesApi extends RepoApi {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log('-----> catch favorites: ', error);
|
console.log('-----> catch favorites: ', error);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -23,27 +23,26 @@
|
|||||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { NodeBodyLock } from 'alfresco-js-api-node';
|
|
||||||
import { RepoApi } from '../repo-api';
|
import { RepoApi } from '../repo-api';
|
||||||
import { NodeBodyCreate } from './node-body-create';
|
import { NodeBodyCreate } from './node-body-create';
|
||||||
import { NodeContentTree, flattenNodeContentTree } from './node-content-tree';
|
import { NodeContentTree, flattenNodeContentTree } from './node-content-tree';
|
||||||
|
import { NodesApi as AdfNodeApi, NodeBodyLock} from '@alfresco/js-api';
|
||||||
|
|
||||||
export class NodesApi extends RepoApi {
|
export class NodesApi extends RepoApi {
|
||||||
|
nodesApi = new AdfNodeApi(this.alfrescoJsApi);
|
||||||
|
|
||||||
constructor(username?, password?) {
|
constructor(username?, password?) {
|
||||||
super(username, password);
|
super(username, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
// nodes
|
|
||||||
|
|
||||||
async getNodeByPath(relativePath: string = '/') {
|
async getNodeByPath(relativePath: string = '/') {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.getNode('-my-', { relativePath });
|
return await this.nodesApi.getNode('-my-', { relativePath });
|
||||||
}
|
}
|
||||||
|
|
||||||
async getNodeById(id: string) {
|
async getNodeById(id: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.getNode(id);
|
return await this.nodesApi.getNode(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getNodeDescription(name: string, parentId: string) {
|
async getNodeDescription(name: string, parentId: string) {
|
||||||
@@ -75,7 +74,7 @@ export class NodesApi extends RepoApi {
|
|||||||
async deleteNodeById(id: string, permanent: boolean = true) {
|
async deleteNodeById(id: string, permanent: boolean = true) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
try {
|
try {
|
||||||
return await this.alfrescoJsApi.core.nodesApi.deleteNode(id, { permanent });
|
return await this.nodesApi.deleteNode(id, { permanent });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log('------ deleteNodeById failed ');
|
console.log('------ deleteNodeById failed ');
|
||||||
}
|
}
|
||||||
@@ -100,14 +99,12 @@ export class NodesApi extends RepoApi {
|
|||||||
}, Promise.resolve());
|
}, Promise.resolve());
|
||||||
}
|
}
|
||||||
|
|
||||||
// children
|
|
||||||
|
|
||||||
async getNodeChildren(nodeId: string) {
|
async getNodeChildren(nodeId: string) {
|
||||||
const opts = {
|
const opts = {
|
||||||
include: [ 'properties' ]
|
include: [ 'properties' ]
|
||||||
};
|
};
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.getNodeChildren(nodeId, opts);
|
return await this.nodesApi.listNodeChildren(nodeId, opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteNodeChildren(parentId: string) {
|
async deleteNodeChildren(parentId: string) {
|
||||||
@@ -138,7 +135,7 @@ export class NodesApi extends RepoApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.addNode(parentId, nodeBody);
|
return await this.nodesApi.createNode(parentId, nodeBody);
|
||||||
}
|
}
|
||||||
|
|
||||||
async createFile(name: string, parentId: string = '-my-', title: string = '', description: string = '') {
|
async createFile(name: string, parentId: string = '-my-', title: string = '', description: string = '') {
|
||||||
@@ -155,7 +152,7 @@ export class NodesApi extends RepoApi {
|
|||||||
|
|
||||||
async createChildren(data: NodeBodyCreate[]): Promise<any> {
|
async createChildren(data: NodeBodyCreate[]): Promise<any> {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.addNode('-my-', data);
|
return await this.nodesApi.createNode('-my-', <any>data);
|
||||||
}
|
}
|
||||||
|
|
||||||
async createContent(content: NodeContentTree, relativePath: string = '/') {
|
async createContent(content: NodeContentTree, relativePath: string = '/') {
|
||||||
@@ -173,17 +170,17 @@ export class NodesApi extends RepoApi {
|
|||||||
// node content
|
// node content
|
||||||
async getNodeContent(nodeId: string) {
|
async getNodeContent(nodeId: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.getNodeContent(nodeId);
|
return await this.nodesApi.getNodeContent(nodeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
async editNodeContent(nodeId: string, content: string) {
|
async editNodeContent(nodeId: string, content: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.updateNodeContent(nodeId, content);
|
return await this.nodesApi.updateNodeContent(nodeId, content);
|
||||||
}
|
}
|
||||||
|
|
||||||
async renameNode(nodeId: string, newName: string) {
|
async renameNode(nodeId: string, newName: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return this.alfrescoJsApi.core.nodesApi.updateNode(nodeId, { name: newName });
|
return this.nodesApi.updateNode(nodeId, { name: newName });
|
||||||
}
|
}
|
||||||
|
|
||||||
// node permissions
|
// node permissions
|
||||||
@@ -201,12 +198,12 @@ export class NodesApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.updateNode(nodeId, data);
|
return await this.nodesApi.updateNode(nodeId, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getNodePermissions(nodeId: string) {
|
async getNodePermissions(nodeId: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.getNode(nodeId, { include: ['permissions'] });
|
return await this.nodesApi.getNode(nodeId, { include: ['permissions'] });
|
||||||
}
|
}
|
||||||
|
|
||||||
// lock node
|
// lock node
|
||||||
@@ -215,11 +212,11 @@ export class NodesApi extends RepoApi {
|
|||||||
type: lockType
|
type: lockType
|
||||||
};
|
};
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.lockNode(nodeId, data );
|
return await this.nodesApi.lockNode(nodeId, data );
|
||||||
}
|
}
|
||||||
|
|
||||||
async unlockFile(nodeId: string) {
|
async unlockFile(nodeId: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.unlockNode(nodeId);
|
return await this.nodesApi.unlockNode(nodeId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -25,8 +25,10 @@
|
|||||||
|
|
||||||
import { PersonModel, Person } from './people-api-models';
|
import { PersonModel, Person } from './people-api-models';
|
||||||
import { RepoApi } from '../repo-api';
|
import { RepoApi } from '../repo-api';
|
||||||
|
import { PeopleApi as AdfPeopleApi} from '@alfresco/js-api';
|
||||||
|
|
||||||
export class PeopleApi extends RepoApi {
|
export class PeopleApi extends RepoApi {
|
||||||
|
peopleApi = new AdfPeopleApi(this.alfrescoJsApi);
|
||||||
|
|
||||||
constructor(username?, password?) {
|
constructor(username?, password?) {
|
||||||
super(username, password);
|
super(username, password);
|
||||||
@@ -35,17 +37,17 @@ export class PeopleApi extends RepoApi {
|
|||||||
async createUser(user: PersonModel) {
|
async createUser(user: PersonModel) {
|
||||||
const person = new Person(user);
|
const person = new Person(user);
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.peopleApi.addPerson(person);
|
return await this.peopleApi.createPerson(person);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getUser(username: string) {
|
async getUser(username: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.peopleApi.getPerson(username);
|
return await this.peopleApi.getPerson(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
async updateUser(username: string, userDetails?: PersonModel) {
|
async updateUser(username: string, userDetails?: PersonModel) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return this.alfrescoJsApi.core.peopleApi.updatePerson(username, userDetails);
|
return this.peopleApi.updatePerson(username, userDetails);
|
||||||
}
|
}
|
||||||
|
|
||||||
async disableUser(username: string) {
|
async disableUser(username: string) {
|
||||||
|
@@ -25,8 +25,10 @@
|
|||||||
|
|
||||||
import { RepoApi } from '../repo-api';
|
import { RepoApi } from '../repo-api';
|
||||||
import { Utils } from '../../../../utilities/utils';
|
import { Utils } from '../../../../utilities/utils';
|
||||||
|
import { QueriesApi as AdfQueriesApi } from '@alfresco/js-api';
|
||||||
|
|
||||||
export class QueriesApi extends RepoApi {
|
export class QueriesApi extends RepoApi {
|
||||||
|
queriesApi = new AdfQueriesApi(this.alfrescoJsApi);
|
||||||
|
|
||||||
constructor(username?, password?) {
|
constructor(username?, password?) {
|
||||||
super(username, password);
|
super(username, password);
|
||||||
@@ -39,7 +41,7 @@ export class QueriesApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return this.alfrescoJsApi.core.queriesApi.findSites(searchTerm, data);
|
return this.queriesApi.findSites(searchTerm, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
async findNodes(searchTerm: string) {
|
async findNodes(searchTerm: string) {
|
||||||
|
@@ -23,21 +23,22 @@
|
|||||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as AlfrescoApi from 'alfresco-js-api-node';
|
import { AlfrescoApi } from '@alfresco/js-api';
|
||||||
import { REPO_API_HOST } from '../../../configs';
|
import { REPO_API_HOST } from '../../../configs';
|
||||||
import { RepoClientAuth } from '../repo-client-models';
|
import { RepoClientAuth } from '../repo-client-models';
|
||||||
|
|
||||||
export abstract class RepoApi {
|
export abstract class RepoApi {
|
||||||
|
alfrescoJsApi = new AlfrescoApi();
|
||||||
alfrescoJsApi = new AlfrescoApi({
|
|
||||||
provider: 'ECM',
|
|
||||||
hostEcm: REPO_API_HOST
|
|
||||||
});
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private username: string = RepoClientAuth.DEFAULT_USERNAME,
|
private username: string = RepoClientAuth.DEFAULT_USERNAME,
|
||||||
private password: string = RepoClientAuth.DEFAULT_PASSWORD
|
private password: string = RepoClientAuth.DEFAULT_PASSWORD
|
||||||
) {}
|
) {
|
||||||
|
this.alfrescoJsApi.setConfig({
|
||||||
|
provider: 'ECM',
|
||||||
|
hostEcm: REPO_API_HOST
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
apiAuth() {
|
apiAuth() {
|
||||||
return this.alfrescoJsApi.login(this.username, this.password);
|
return this.alfrescoJsApi.login(this.username, this.password);
|
||||||
|
@@ -25,8 +25,10 @@
|
|||||||
|
|
||||||
import { RepoApi } from '../repo-api';
|
import { RepoApi } from '../repo-api';
|
||||||
import { Utils } from '../../../../utilities/utils';
|
import { Utils } from '../../../../utilities/utils';
|
||||||
|
import { SearchApi as AdfSearchApi } from '@alfresco/js-api';
|
||||||
|
|
||||||
export class SearchApi extends RepoApi {
|
export class SearchApi extends RepoApi {
|
||||||
|
searchApi = new AdfSearchApi(this.alfrescoJsApi);
|
||||||
|
|
||||||
constructor(username?, password?) {
|
constructor(username?, password?) {
|
||||||
super(username, password);
|
super(username, password);
|
||||||
@@ -46,7 +48,7 @@ export class SearchApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return this.alfrescoJsApi.search.searchApi.search(data);
|
return this.searchApi.search(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
async queryNodesNames(searchTerm: string) {
|
async queryNodesNames(searchTerm: string) {
|
||||||
@@ -61,7 +63,7 @@ export class SearchApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return this.alfrescoJsApi.search.searchApi.search(data);
|
return this.searchApi.search(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
async queryNodesExactNames(searchTerm: string) {
|
async queryNodesExactNames(searchTerm: string) {
|
||||||
@@ -76,7 +78,7 @@ export class SearchApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return this.alfrescoJsApi.search.searchApi.search(data);
|
return this.searchApi.search(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
async waitForApi(username, data) {
|
async waitForApi(username, data) {
|
||||||
|
@@ -25,8 +25,10 @@
|
|||||||
|
|
||||||
import { RepoApi } from '../repo-api';
|
import { RepoApi } from '../repo-api';
|
||||||
import { Utils } from '../../../../utilities/utils';
|
import { Utils } from '../../../../utilities/utils';
|
||||||
|
import { SharedlinksApi as AdfSharedlinksApi } from '@alfresco/js-api';
|
||||||
|
|
||||||
export class SharedLinksApi extends RepoApi {
|
export class SharedLinksApi extends RepoApi {
|
||||||
|
sharedlinksApi = new AdfSharedlinksApi(this.alfrescoJsApi);
|
||||||
|
|
||||||
constructor(username?, password?) {
|
constructor(username?, password?) {
|
||||||
super(username, password);
|
super(username, password);
|
||||||
@@ -39,7 +41,7 @@ export class SharedLinksApi extends RepoApi {
|
|||||||
nodeId: id,
|
nodeId: id,
|
||||||
expiresAt: expireDate
|
expiresAt: expireDate
|
||||||
};
|
};
|
||||||
return await this.alfrescoJsApi.core.sharedlinksApi.addSharedLink(data);
|
return await this.sharedlinksApi.createSharedLink(data);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log('---- shareFileById error: ', error);
|
console.log('---- shareFileById error: ', error);
|
||||||
}
|
}
|
||||||
@@ -60,12 +62,12 @@ export class SharedLinksApi extends RepoApi {
|
|||||||
|
|
||||||
async unshareFile(name: string) {
|
async unshareFile(name: string) {
|
||||||
const id = await this.getSharedIdOfNode(name);
|
const id = await this.getSharedIdOfNode(name);
|
||||||
return await this.alfrescoJsApi.core.sharedlinksApi.deleteSharedLink(id);
|
return await this.sharedlinksApi.deleteSharedLink(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getSharedLinks() {
|
async getSharedLinks() {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.sharedlinksApi.findSharedLinks();
|
return await this.sharedlinksApi.listSharedLinks();
|
||||||
}
|
}
|
||||||
|
|
||||||
async waitForApi(data) {
|
async waitForApi(data) {
|
||||||
|
@@ -24,11 +24,13 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { RepoApi } from '../repo-api';
|
import { RepoApi } from '../repo-api';
|
||||||
import { SiteBody, SiteMemberRoleBody, SiteMemberBody } from 'alfresco-js-api-node';
|
import { SiteBody, SiteMemberRoleBody, SiteMemberBody } from '@alfresco/js-api';
|
||||||
import { SITE_VISIBILITY } from '../../../../configs';
|
import { SITE_VISIBILITY } from '../../../../configs';
|
||||||
import { Utils } from '../../../../utilities/utils';
|
import { Utils } from '../../../../utilities/utils';
|
||||||
|
import { SitesApi as AdfSiteApi } from '@alfresco/js-api';
|
||||||
|
|
||||||
export class SitesApi extends RepoApi {
|
export class SitesApi extends RepoApi {
|
||||||
|
sitesApi = new AdfSiteApi(this.alfrescoJsApi);
|
||||||
|
|
||||||
constructor(username?, password?) {
|
constructor(username?, password?) {
|
||||||
super(username, password);
|
super(username, password);
|
||||||
@@ -36,17 +38,17 @@ export class SitesApi extends RepoApi {
|
|||||||
|
|
||||||
async getSite(siteId: string) {
|
async getSite(siteId: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.sitesApi.getSite(siteId);
|
return await this.sitesApi.getSite(siteId);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getSites() {
|
async getSites() {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.peopleApi.getSiteMembership(this.getUsername());
|
return await this.sitesApi.listSiteMembershipsForPerson(this.getUsername());
|
||||||
}
|
}
|
||||||
|
|
||||||
async getDocLibId(siteId: string) {
|
async getDocLibId(siteId: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return (await this.alfrescoJsApi.core.sitesApi.getSiteContainers(siteId)).list.entries[0].entry.id;
|
return (await this.sitesApi.listSiteContainers(siteId)).list.entries[0].entry.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
async getVisibility(siteId: string) {
|
async getVisibility(siteId: string) {
|
||||||
@@ -73,7 +75,7 @@ export class SitesApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.sitesApi.createSite(site);
|
return await this.sitesApi.createSite(site);
|
||||||
}
|
}
|
||||||
|
|
||||||
async createSites(titles: string[], visibility?: string) {
|
async createSites(titles: string[], visibility?: string) {
|
||||||
@@ -85,7 +87,7 @@ export class SitesApi extends RepoApi {
|
|||||||
|
|
||||||
async deleteSite(siteId: string, permanent: boolean = true) {
|
async deleteSite(siteId: string, permanent: boolean = true) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.sitesApi.deleteSite(siteId, { permanent });
|
return await this.sitesApi.deleteSite(siteId, { permanent });
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteSites(siteIds: string[], permanent: boolean = true) {
|
async deleteSites(siteIds: string[], permanent: boolean = true) {
|
||||||
@@ -110,7 +112,7 @@ export class SitesApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.sitesApi.updateSiteMember(siteId, userId, siteRole);
|
return await this.sitesApi.updateSiteMembership(siteId, userId, siteRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
async addSiteMember(siteId: string, userId: string, role: string) {
|
async addSiteMember(siteId: string, userId: string, role: string) {
|
||||||
@@ -120,12 +122,12 @@ export class SitesApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.sitesApi.addSiteMember(siteId, memberBody);
|
return await this.sitesApi.createSiteMembership(siteId, memberBody);
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteSiteMember(siteId: string, userId: string) {
|
async deleteSiteMember(siteId: string, userId: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.sitesApi.removeSiteMember(siteId, userId);
|
return await this.sitesApi.deleteSiteMembership(siteId, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
async requestToJoin(siteId: string) {
|
async requestToJoin(siteId: string) {
|
||||||
@@ -134,7 +136,7 @@ export class SitesApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
try {
|
try {
|
||||||
return await this.alfrescoJsApi.core.peopleApi.addSiteMembershipRequest('-me-', body);
|
return await this.sitesApi.createSiteMembershipRequestForPerson('-me-', body);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log('====== requestToJoin catch ', error);
|
console.log('====== requestToJoin catch ', error);
|
||||||
};
|
};
|
||||||
@@ -142,7 +144,7 @@ export class SitesApi extends RepoApi {
|
|||||||
|
|
||||||
async hasMembershipRequest(siteId: string) {
|
async hasMembershipRequest(siteId: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
const requests = (await this.alfrescoJsApi.core.peopleApi.getSiteMembershipRequests('-me-')).list.entries.map(e => e.entry.id);
|
const requests = (await this.sitesApi.getSiteMembershipRequests('-me-')).list.entries.map(e => e.entry.id);
|
||||||
return requests.includes(siteId);
|
return requests.includes(siteId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -25,8 +25,10 @@
|
|||||||
|
|
||||||
import { RepoApi } from '../repo-api';
|
import { RepoApi } from '../repo-api';
|
||||||
import { Utils } from '../../../../utilities/utils';
|
import { Utils } from '../../../../utilities/utils';
|
||||||
|
import { TrashcanApi as AdfTrashcanApi} from '@alfresco/js-api';
|
||||||
|
|
||||||
export class TrashcanApi extends RepoApi {
|
export class TrashcanApi extends RepoApi {
|
||||||
|
trashcanApi = new AdfTrashcanApi(this.alfrescoJsApi);
|
||||||
|
|
||||||
constructor(username?, password?) {
|
constructor(username?, password?) {
|
||||||
super(username, password);
|
super(username, password);
|
||||||
@@ -34,12 +36,12 @@ export class TrashcanApi extends RepoApi {
|
|||||||
|
|
||||||
async permanentlyDelete(id: string) {
|
async permanentlyDelete(id: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.purgeDeletedNode(id);
|
return await this.trashcanApi.deleteDeletedNode(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
async restore(id: string) {
|
async restore(id: string) {
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.restoreNode(id);
|
return await this.trashcanApi.restoreDeletedNode(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getDeletedNodes() {
|
async getDeletedNodes() {
|
||||||
@@ -47,7 +49,7 @@ export class TrashcanApi extends RepoApi {
|
|||||||
maxItems: 1000
|
maxItems: 1000
|
||||||
};
|
};
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.core.nodesApi.getDeletedNodes(opts);
|
return await this.trashcanApi.listDeletedNodes(opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
async emptyTrash() {
|
async emptyTrash() {
|
||||||
|
@@ -25,10 +25,12 @@
|
|||||||
|
|
||||||
import { RepoApi } from '../repo-api';
|
import { RepoApi } from '../repo-api';
|
||||||
import { E2E_ROOT_PATH } from '../../../../configs';
|
import { E2E_ROOT_PATH } from '../../../../configs';
|
||||||
|
import { UploadApi as AdfUploadApi } from '@alfresco/js-api';
|
||||||
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
export class UploadApi extends RepoApi {
|
export class UploadApi extends RepoApi {
|
||||||
|
upload = new AdfUploadApi(this.alfrescoJsApi);
|
||||||
|
|
||||||
constructor(username?, password?) {
|
constructor(username?, password?) {
|
||||||
super(username, password);
|
super(username, password);
|
||||||
@@ -42,7 +44,7 @@ export class UploadApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.upload.uploadFile(file, '', parentFolderId, null, opts);
|
return await this.upload.uploadFile(file, '', parentFolderId, null, opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
async uploadFileWithRename(fileName: string, parentFolderId: string = '-my-', newName: string) {
|
async uploadFileWithRename(fileName: string, parentFolderId: string = '-my-', newName: string) {
|
||||||
@@ -53,7 +55,7 @@ export class UploadApi extends RepoApi {
|
|||||||
};
|
};
|
||||||
|
|
||||||
await this.apiAuth();
|
await this.apiAuth();
|
||||||
return await this.alfrescoJsApi.upload.uploadFile(file, '', parentFolderId, null, opts);
|
return await this.upload.uploadFile(file, '', parentFolderId, null, opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
97
package-lock.json
generated
97
package-lock.json
generated
@@ -5,29 +5,38 @@
|
|||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@alfresco/adf-content-services": {
|
"@alfresco/adf-content-services": {
|
||||||
"version": "3.0.0-dd25467a98fad2898a2b71d07fa50bb175cea81c",
|
"version": "3.0.0-7c66589b26e57061a07a8d38bfebc2ee05fb1b83",
|
||||||
"resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.0.0-dd25467a98fad2898a2b71d07fa50bb175cea81c.tgz",
|
"resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.0.0-7c66589b26e57061a07a8d38bfebc2ee05fb1b83.tgz",
|
||||||
"integrity": "sha512-lzR6pL/563J9IcSXR/X6p2lqFVMRADrnDglAHk4a1k58QBypfIFsmbLX8h9acMhAn/DydEgjQ6pXxLRuxoVLFg==",
|
"integrity": "sha512-1Cca7AG8vH+U15k125PCiKdTRYb6uQd29x4Idle48urDFUpkUXBF3elnR15CWCwBuw+Idl0HVogAIIbbKsP2CQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@alfresco/adf-core": {
|
"@alfresco/adf-core": {
|
||||||
"version": "3.0.0-dd25467a98fad2898a2b71d07fa50bb175cea81c",
|
"version": "3.0.0-7c66589b26e57061a07a8d38bfebc2ee05fb1b83",
|
||||||
"resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.0.0-dd25467a98fad2898a2b71d07fa50bb175cea81c.tgz",
|
"resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.0.0-7c66589b26e57061a07a8d38bfebc2ee05fb1b83.tgz",
|
||||||
"integrity": "sha512-Dj+mef9GUpyn1eMM6ZgMDqEH+rAZxGb4Xgw01lbZA40XhW3lRqlkh1SwuTBSlNYN8RwTlNJVKb/nT9hpaR1Kag==",
|
"integrity": "sha512-s5E3dAgb7pkB6JP/EjOTlWvddjuykTqR4WxUsVQahGkPYqg7O2PkvkElIVeeerB/oBjXYW1LY8p5HUCZoIiqGg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@alfresco/adf-extensions": {
|
"@alfresco/adf-extensions": {
|
||||||
"version": "3.0.0-dd25467a98fad2898a2b71d07fa50bb175cea81c",
|
"version": "3.0.0-7c66589b26e57061a07a8d38bfebc2ee05fb1b83",
|
||||||
"resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.0.0-dd25467a98fad2898a2b71d07fa50bb175cea81c.tgz",
|
"resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.0.0-7c66589b26e57061a07a8d38bfebc2ee05fb1b83.tgz",
|
||||||
"integrity": "sha512-gEaOWVUmG9OqmcNXjTJYk/IG7T6As4SGuHc3veCNPnikf41yrkQ86/eS4iIWuCC3z/dv+ejZT7x5PVRhAvuXBw==",
|
"integrity": "sha512-he7h49WJeEIv2lVNblVDzRvdKoJmvdf33KDpv078r/JAkd7cAbueOtUKJtYSQWsqDs2e041Q2PXJOQz2sfmJew==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@alfresco/js-api": {
|
||||||
|
"version": "3.0.0-e9c8ed80decc71d2fc6833cef22851b64ce4b604",
|
||||||
|
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.0.0-e9c8ed80decc71d2fc6833cef22851b64ce4b604.tgz",
|
||||||
|
"integrity": "sha512-EgCTW+ZOJGvxVUFu5Ul8e0vnW1aITuxTgOKk5AGMFW4JxJoFqEYuo77oqXJITE/1JFsyeuqG63oOjQs2NDjHHw==",
|
||||||
|
"requires": {
|
||||||
|
"event-emitter": "0.3.4",
|
||||||
|
"superagent": "3.8.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@angular-devkit/architect": {
|
"@angular-devkit/architect": {
|
||||||
"version": "0.11.0",
|
"version": "0.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.11.0.tgz",
|
||||||
@@ -3076,31 +3085,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
|
||||||
"integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo="
|
"integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo="
|
||||||
},
|
},
|
||||||
"alfresco-js-api": {
|
|
||||||
"version": "3.0.0-beta7",
|
|
||||||
"resolved": "https://registry.npmjs.org/alfresco-js-api/-/alfresco-js-api-3.0.0-beta7.tgz",
|
|
||||||
"integrity": "sha512-gpIi2+zcSkkrccRJDxqFP0HrO525GdylGr3elLysmUQH1NMROWMGjbpcZbmQEsWR0eIunQPPxbvYq2lzwgomog==",
|
|
||||||
"requires": {
|
|
||||||
"event-emitter": "0.3.4",
|
|
||||||
"superagent": "3.8.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"alfresco-js-api-node": {
|
|
||||||
"version": "3.0.0-beta6",
|
|
||||||
"resolved": "https://registry.npmjs.org/alfresco-js-api-node/-/alfresco-js-api-node-3.0.0-beta6.tgz",
|
|
||||||
"integrity": "sha512-tKy+D4feKvtsKb6X/g1SRFmVMBKcJenWCZ6ejPwaQLw1t+jn+iBTnRsrGWJ2bGowhDUIIvB1D+X+Wt/ZbU0R6g==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"event-emitter": "0.3.4",
|
|
||||||
"superagent": "3.8.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"align-text": {
|
"align-text": {
|
||||||
"version": "0.1.4",
|
"version": "0.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
|
||||||
"integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
|
"integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"kind-of": "^3.0.2",
|
"kind-of": "^3.0.2",
|
||||||
"longest": "^1.0.1",
|
"longest": "^1.0.1",
|
||||||
@@ -5673,9 +5662,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"es5-ext": {
|
"es5-ext": {
|
||||||
"version": "0.10.46",
|
"version": "0.10.47",
|
||||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz",
|
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.47.tgz",
|
||||||
"integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==",
|
"integrity": "sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"es6-iterator": "~2.0.3",
|
"es6-iterator": "~2.0.3",
|
||||||
"es6-symbol": "~3.1.1",
|
"es6-symbol": "~3.1.1",
|
||||||
@@ -6444,8 +6433,7 @@
|
|||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
||||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"aproba": {
|
"aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
@@ -6469,15 +6457,13 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
@@ -6494,22 +6480,19 @@
|
|||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
|
||||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"console-control-strings": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
||||||
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
|
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
@@ -6640,8 +6623,7 @@
|
|||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
@@ -6655,7 +6637,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
||||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "^1.0.0"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
@@ -6672,7 +6653,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
@@ -6681,15 +6661,13 @@
|
|||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "2.2.4",
|
"version": "2.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz",
|
||||||
"integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
|
"integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.1.1",
|
"safe-buffer": "^5.1.1",
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
@@ -6710,7 +6688,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "0.0.8"
|
||||||
}
|
}
|
||||||
@@ -6799,8 +6776,7 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
|
||||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
@@ -6814,7 +6790,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
@@ -6910,8 +6885,7 @@
|
|||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
|
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"safer-buffer": {
|
"safer-buffer": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
@@ -6953,7 +6927,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "^1.0.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
@@ -6975,7 +6948,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "^2.0.0"
|
"ansi-regex": "^2.0.0"
|
||||||
}
|
}
|
||||||
@@ -7024,15 +6996,13 @@
|
|||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"yallist": {
|
"yallist": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
|
||||||
"integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
|
"integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -10386,8 +10356,7 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
|
||||||
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
|
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"loose-envify": {
|
"loose-envify": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
|
@@ -32,9 +32,10 @@
|
|||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@alfresco/adf-content-services": "3.0.0-dd25467a98fad2898a2b71d07fa50bb175cea81c",
|
"@alfresco/adf-content-services": "3.0.0-7c66589b26e57061a07a8d38bfebc2ee05fb1b83",
|
||||||
"@alfresco/adf-core": "3.0.0-dd25467a98fad2898a2b71d07fa50bb175cea81c",
|
"@alfresco/adf-core": "3.0.0-7c66589b26e57061a07a8d38bfebc2ee05fb1b83",
|
||||||
"@alfresco/adf-extensions": "3.0.0-dd25467a98fad2898a2b71d07fa50bb175cea81c",
|
"@alfresco/adf-extensions": "3.0.0-7c66589b26e57061a07a8d38bfebc2ee05fb1b83",
|
||||||
|
"@alfresco/js-api": "3.0.0-e9c8ed80decc71d2fc6833cef22851b64ce4b604",
|
||||||
"@angular/animations": "7.1.4",
|
"@angular/animations": "7.1.4",
|
||||||
"@angular/cdk": "^7.2.0",
|
"@angular/cdk": "^7.2.0",
|
||||||
"@angular/common": "7.1.4",
|
"@angular/common": "7.1.4",
|
||||||
@@ -55,7 +56,6 @@
|
|||||||
"@ngrx/store": "^7.0.0",
|
"@ngrx/store": "^7.0.0",
|
||||||
"@ngrx/store-devtools": "^7.0.0",
|
"@ngrx/store-devtools": "^7.0.0",
|
||||||
"@ngx-translate/core": "^10.0.2",
|
"@ngx-translate/core": "^10.0.2",
|
||||||
"alfresco-js-api": "3.0.0-beta7",
|
|
||||||
"core-js": "^2.5.7",
|
"core-js": "^2.5.7",
|
||||||
"hammerjs": "2.0.8",
|
"hammerjs": "2.0.8",
|
||||||
"minimatch-browser": "^1.0.0",
|
"minimatch-browser": "^1.0.0",
|
||||||
@@ -75,7 +75,6 @@
|
|||||||
"@types/jasminewd2": "^2.0.2",
|
"@types/jasminewd2": "^2.0.2",
|
||||||
"@types/node": "9.3.0",
|
"@types/node": "9.3.0",
|
||||||
"@types/selenium-webdriver": "^3.0.8",
|
"@types/selenium-webdriver": "^3.0.8",
|
||||||
"alfresco-js-api-node": "3.0.0-beta6",
|
|
||||||
"chrome-remote-interface": "^0.26.1",
|
"chrome-remote-interface": "^0.26.1",
|
||||||
"codelyzer": "^4.5.0",
|
"codelyzer": "^4.5.0",
|
||||||
"cspell": "^3.1.3",
|
"cspell": "^3.1.3",
|
||||||
|
@@ -1,104 +1,45 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
eval JS_API=true
|
|
||||||
eval GNU=false
|
eval GNU=false
|
||||||
eval EXEC_COMPONENT=true
|
|
||||||
eval DIFFERENT_JS_API=false
|
|
||||||
eval AUTO=false
|
|
||||||
|
|
||||||
eval libs=( "core"
|
eval libs=( "@alfresco/adf-core"
|
||||||
"content-services"
|
"@alfresco/adf-content-services"
|
||||||
"extensions"
|
"@alfresco/adf-extensions"
|
||||||
#"process-services"
|
"@alfresco/js-api"
|
||||||
#"insights"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
cd ${DIR}/..
|
cd ${DIR}/..
|
||||||
|
|
||||||
prefix="@alfresco/adf-"
|
|
||||||
|
|
||||||
show_help() {
|
show_help() {
|
||||||
echo "Usage: update-version.sh"
|
echo "Usage: update-version.sh -v latest"
|
||||||
echo ""
|
echo ""
|
||||||
echo "-sj or -sjsapi don't update js-api version"
|
echo "-v or -version the new version of the libraries, can also be alpha|beta|latest"
|
||||||
echo "-vj or -versionjsapi to use a different version of js-api"
|
|
||||||
echo "-v or -version version to update"
|
|
||||||
echo "-alpha update last alpha version of js-api and lib automatically"
|
|
||||||
echo "-beta update beta alpha version of js-api and lib automatically"
|
|
||||||
echo "-gnu for gnu"
|
echo "-gnu for gnu"
|
||||||
}
|
}
|
||||||
|
|
||||||
skip_js() {
|
set_gnu_mode() {
|
||||||
echo "====== Skip JS-API change version $1 ====="
|
|
||||||
JS_API=false
|
|
||||||
}
|
|
||||||
|
|
||||||
last_alpha_mode() {
|
|
||||||
echo "====== Auto find last ALPHA version ====="
|
|
||||||
VERSION=$(npm view @alfresco/adf-core@alpha version)
|
|
||||||
|
|
||||||
echo "====== version lib ${VERSION} ====="
|
|
||||||
|
|
||||||
DIFFERENT_JS_API=true
|
|
||||||
VERSION_JS_API=$(npm view alfresco-js-api@alpha version)
|
|
||||||
|
|
||||||
echo "====== version js-api ${DIFFERENT_JS_API} ====="
|
|
||||||
}
|
|
||||||
|
|
||||||
last_beta_mode() {
|
|
||||||
echo "====== Auto find last BETA version ====="
|
|
||||||
VERSION=$(npm view @alfresco/adf-core@beta version)
|
|
||||||
|
|
||||||
echo "====== version lib ${VERSION} ====="
|
|
||||||
|
|
||||||
DIFFERENT_JS_API=true
|
|
||||||
VERSION_JS_API=$(npm view alfresco-js-api@beta version)
|
|
||||||
|
|
||||||
echo "====== version js-api ${DIFFERENT_JS_API} ====="
|
|
||||||
}
|
|
||||||
|
|
||||||
gnu_mode() {
|
|
||||||
echo "====== GNU MODE ====="
|
|
||||||
GNU=true
|
GNU=true
|
||||||
}
|
}
|
||||||
|
|
||||||
version_change() {
|
set_version() {
|
||||||
echo "====== New version $1 ====="
|
|
||||||
VERSION=$1
|
VERSION=$1
|
||||||
}
|
}
|
||||||
|
|
||||||
version_js_change() {
|
update(){
|
||||||
echo "====== Alfresco JS-API version $1 ====="
|
|
||||||
VERSION_JS_API=$1
|
|
||||||
DIFFERENT_JS_API=true
|
|
||||||
}
|
|
||||||
|
|
||||||
update_component_dependency_version(){
|
|
||||||
for (( j=0; j<${libslength}; j++ ));
|
for (( j=0; j<${libslength}; j++ ));
|
||||||
do
|
do
|
||||||
echo "====== UPDATE ${prefix}${libs[$j]} to ${VERSION}======"
|
EXACT_VERSION="${libs[$j]}@${VERSION}"
|
||||||
EXACT_VERSION="${prefix}${libs[$j]}@${VERSION}"
|
echo "====== ${EXACT_VERSION} ======"
|
||||||
npm install -E ${EXACT_VERSION}
|
npm i -E ${EXACT_VERSION}
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
update_component_js_version(){
|
|
||||||
echo "====== UPDATE alfresco-js-api to ${1} ======"
|
|
||||||
PACKAGETOCHANGE="alfresco-js-api"
|
|
||||||
EXACT_VERSION="${PACKAGETOCHANGE}@${1}"
|
|
||||||
npm install -E ${EXACT_VERSION}
|
|
||||||
}
|
|
||||||
|
|
||||||
while [[ $1 == -* ]]; do
|
while [[ $1 == -* ]]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-h|--help|-\?) show_help; exit 0;;
|
-h|--help|-\?) show_help; exit 0;;
|
||||||
-v|version) version_change $2; shift 2;;
|
-v|version) set_version $2; shift 2;;
|
||||||
-sj|sjsapi) skip_js; shift;;
|
-gnu) set_gnu_mode; shift;;
|
||||||
-vj|versionjsapi) version_js_change $2; shift 2;;
|
|
||||||
-gnu) gnu_mode; shift;;
|
|
||||||
-alpha) last_alpha_mode; shift;;
|
|
||||||
-beta) last_beta_mode; shift;;
|
|
||||||
-*) shift;;
|
-*) shift;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -111,25 +52,11 @@ fi
|
|||||||
|
|
||||||
if [[ "${VERSION}" == "" ]]
|
if [[ "${VERSION}" == "" ]]
|
||||||
then
|
then
|
||||||
echo "Version number required"
|
echo "Error: version number is required"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
projectslength=${#projects[@]}
|
|
||||||
libslength=${#libs[@]}
|
libslength=${#libs[@]}
|
||||||
|
|
||||||
if $EXEC_COMPONENT == true; then
|
echo "====== Updating dependencies ======"
|
||||||
echo "====== UPDATE ======"
|
update
|
||||||
|
|
||||||
update_component_dependency_version
|
|
||||||
|
|
||||||
if $JS_API == true; then
|
|
||||||
|
|
||||||
if $DIFFERENT_JS_API == true; then
|
|
||||||
update_component_js_version ${VERSION_JS_API}
|
|
||||||
else
|
|
||||||
update_component_js_version ${VERSION}
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
@@ -50,7 +50,7 @@ import {
|
|||||||
} from './store/states/app.state';
|
} from './store/states/app.state';
|
||||||
import { filter, takeUntil } from 'rxjs/operators';
|
import { filter, takeUntil } from 'rxjs/operators';
|
||||||
import { ContentApiService } from './services/content-api.service';
|
import { ContentApiService } from './services/content-api.service';
|
||||||
import { DiscoveryEntry } from 'alfresco-js-api';
|
import { DiscoveryEntry } from '@alfresco/js-api';
|
||||||
import { AppService } from './services/app.service';
|
import { AppService } from './services/app.service';
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
|
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
import { ExtensionRef } from '@alfresco/adf-extensions';
|
import { ExtensionRef } from '@alfresco/adf-extensions';
|
||||||
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
|
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
|
||||||
import { RepositoryInfo } from 'alfresco-js-api';
|
import { RepositoryInfo } from '@alfresco/js-api';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { AppExtensionService } from '../../extensions/extension.service';
|
import { AppExtensionService } from '../../extensions/extension.service';
|
||||||
|
@@ -29,7 +29,7 @@ import {
|
|||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
Input
|
Input
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { ModuleInfo } from 'alfresco-js-api';
|
import { ModuleInfo } from '@alfresco/js-api';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-module-list',
|
selector: 'app-module-list',
|
||||||
|
@@ -28,7 +28,6 @@ import { CommonModule } from '@angular/common';
|
|||||||
import { GenericErrorComponent } from './generic-error/generic-error.component';
|
import { GenericErrorComponent } from './generic-error/generic-error.component';
|
||||||
import { CoreModule } from '@alfresco/adf-core';
|
import { CoreModule } from '@alfresco/adf-core';
|
||||||
import { LocationLinkComponent } from './location-link/location-link.component';
|
import { LocationLinkComponent } from './location-link/location-link.component';
|
||||||
import { IconComponent } from './icon/icon.component';
|
|
||||||
import { MatIconModule } from '@angular/material';
|
import { MatIconModule } from '@angular/material';
|
||||||
import { ExtensionsModule } from '@alfresco/adf-extensions';
|
import { ExtensionsModule } from '@alfresco/adf-extensions';
|
||||||
|
|
||||||
@@ -39,13 +38,8 @@ import { ExtensionsModule } from '@alfresco/adf-extensions';
|
|||||||
MatIconModule,
|
MatIconModule,
|
||||||
ExtensionsModule
|
ExtensionsModule
|
||||||
],
|
],
|
||||||
declarations: [GenericErrorComponent, LocationLinkComponent, IconComponent],
|
declarations: [GenericErrorComponent, LocationLinkComponent],
|
||||||
exports: [
|
exports: [ExtensionsModule, GenericErrorComponent, LocationLinkComponent],
|
||||||
ExtensionsModule,
|
|
||||||
GenericErrorComponent,
|
|
||||||
LocationLinkComponent,
|
|
||||||
IconComponent
|
|
||||||
],
|
|
||||||
entryComponents: [LocationLinkComponent]
|
entryComponents: [LocationLinkComponent]
|
||||||
})
|
})
|
||||||
export class AppCommonModule {}
|
export class AppCommonModule {}
|
||||||
|
@@ -1,7 +0,0 @@
|
|||||||
<ng-container *ngIf="isCustom; else default">
|
|
||||||
<mat-icon [svgIcon]="value"></mat-icon>
|
|
||||||
</ng-container>
|
|
||||||
|
|
||||||
<ng-template #default>
|
|
||||||
<mat-icon>{{ value }}</mat-icon>
|
|
||||||
</ng-template>
|
|
@@ -1,4 +0,0 @@
|
|||||||
.adf-icon {
|
|
||||||
display: inline-flex;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
@@ -1,58 +0,0 @@
|
|||||||
/*!
|
|
||||||
* @license
|
|
||||||
* Alfresco Example Content Application
|
|
||||||
*
|
|
||||||
* Copyright (C) 2005 - 2018 Alfresco Software Limited
|
|
||||||
*
|
|
||||||
* This file is part of the Alfresco Example Content Application.
|
|
||||||
* If the software was purchased under a paid Alfresco license, the terms of
|
|
||||||
* the paid license agreement will prevail. Otherwise, the software is
|
|
||||||
* provided under the following open source license terms:
|
|
||||||
*
|
|
||||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License
|
|
||||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import {
|
|
||||||
Component,
|
|
||||||
Input,
|
|
||||||
ViewEncapsulation,
|
|
||||||
ChangeDetectionStrategy
|
|
||||||
} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'adf-icon',
|
|
||||||
templateUrl: './icon.component.html',
|
|
||||||
encapsulation: ViewEncapsulation.None,
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
||||||
host: { class: 'adf-icon' },
|
|
||||||
styleUrls: ['./icon.component.scss']
|
|
||||||
})
|
|
||||||
export class IconComponent {
|
|
||||||
private _value = '';
|
|
||||||
private _isCustom = false;
|
|
||||||
|
|
||||||
get value(): string {
|
|
||||||
return this._value;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Input()
|
|
||||||
set value(value: string) {
|
|
||||||
this._value = value || 'settings';
|
|
||||||
this._isCustom = this._value.includes(':');
|
|
||||||
}
|
|
||||||
|
|
||||||
get isCustom(): boolean {
|
|
||||||
return this._isCustom;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -31,7 +31,7 @@ import {
|
|||||||
ViewEncapsulation,
|
ViewEncapsulation,
|
||||||
HostListener
|
HostListener
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { PathInfo, MinimalNodeEntity } from 'alfresco-js-api';
|
import { PathInfo, MinimalNodeEntity } from '@alfresco/js-api';
|
||||||
import { Observable, BehaviorSubject, of } from 'rxjs';
|
import { Observable, BehaviorSubject, of } from 'rxjs';
|
||||||
|
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
|
@@ -146,7 +146,7 @@ describe('FavoriteLibrariesComponent', () => {
|
|||||||
|
|
||||||
it('does not navigate when id is not passed', () => {
|
it('does not navigate when id is not passed', () => {
|
||||||
spyOn(router, 'navigate').and.stub();
|
spyOn(router, 'navigate').and.stub();
|
||||||
component.navigateTo({ entry: { guid: 'guid' } });
|
component.navigateTo(<any>{ entry: { guid: 'guid' } });
|
||||||
|
|
||||||
expect(router.navigate).toHaveBeenCalledWith(['libraries', 'libraryId']);
|
expect(router.navigate).toHaveBeenCalledWith(['libraries', 'libraryId']);
|
||||||
});
|
});
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { SiteEntry, FavoritePaging, Pagination } from 'alfresco-js-api';
|
import { SiteEntry, FavoritePaging, Pagination } from '@alfresco/js-api';
|
||||||
import { AppExtensionService } from '../../extensions/extension.service';
|
import { AppExtensionService } from '../../extensions/extension.service';
|
||||||
import { ContentManagementService } from '../../services/content-management.service';
|
import { ContentManagementService } from '../../services/content-management.service';
|
||||||
import { ContentApiService } from '../../services/content-api.service';
|
import { ContentApiService } from '../../services/content-api.service';
|
||||||
|
@@ -32,7 +32,7 @@ import {
|
|||||||
MinimalNodeEntryEntity,
|
MinimalNodeEntryEntity,
|
||||||
PathElementEntity,
|
PathElementEntity,
|
||||||
PathInfo
|
PathInfo
|
||||||
} from 'alfresco-js-api';
|
} from '@alfresco/js-api';
|
||||||
import { ContentManagementService } from '../../services/content-management.service';
|
import { ContentManagementService } from '../../services/content-management.service';
|
||||||
import { AppStore } from '../../store/states/app.state';
|
import { AppStore } from '../../store/states/app.state';
|
||||||
import { PageComponent } from '../page.component';
|
import { PageComponent } from '../page.component';
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
<app-page-layout-content>
|
<app-page-layout-content>
|
||||||
<div class="main-content">
|
<div class="main-content">
|
||||||
<adf-upload-drag-area [parentId]="node?.id" [disabled]="!canUpload">
|
<adf-upload-drag-area [rootFolderId]="node?.id" [disabled]="!canUpload">
|
||||||
<adf-document-list
|
<adf-document-list
|
||||||
#documentList
|
#documentList
|
||||||
acaDocumentList
|
acaDocumentList
|
||||||
|
@@ -154,11 +154,11 @@ describe('FilesComponent', () => {
|
|||||||
|
|
||||||
it('should call refresh onContentCopied event if parent is the same', () => {
|
it('should call refresh onContentCopied event if parent is the same', () => {
|
||||||
const nodes = [
|
const nodes = [
|
||||||
{ entry: { parentId: '1' } },
|
<any>{ entry: { parentId: '1' } },
|
||||||
{ entry: { parentId: '2' } }
|
<any>{ entry: { parentId: '2' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
component.node = { id: '1' };
|
component.node = <any>{ id: '1' };
|
||||||
|
|
||||||
nodeActionsService.contentCopied.next(nodes);
|
nodeActionsService.contentCopied.next(nodes);
|
||||||
|
|
||||||
@@ -167,11 +167,11 @@ describe('FilesComponent', () => {
|
|||||||
|
|
||||||
it('should not call refresh onContentCopied event when parent mismatch', () => {
|
it('should not call refresh onContentCopied event when parent mismatch', () => {
|
||||||
const nodes = [
|
const nodes = [
|
||||||
{ entry: { parentId: '1' } },
|
<any>{ entry: { parentId: '1' } },
|
||||||
{ entry: { parentId: '2' } }
|
<any>{ entry: { parentId: '2' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
component.node = { id: '3' };
|
component.node = <any>{ id: '3' };
|
||||||
|
|
||||||
nodeActionsService.contentCopied.next(nodes);
|
nodeActionsService.contentCopied.next(nodes);
|
||||||
|
|
||||||
@@ -210,7 +210,7 @@ describe('FilesComponent', () => {
|
|||||||
|
|
||||||
it('should call refresh on fileUploadComplete event if parent node match', fakeAsync(() => {
|
it('should call refresh on fileUploadComplete event if parent node match', fakeAsync(() => {
|
||||||
const file = { file: { options: { parentId: 'parentId' } } };
|
const file = { file: { options: { parentId: 'parentId' } } };
|
||||||
component.node = { id: 'parentId' };
|
component.node = <any>{ id: 'parentId' };
|
||||||
|
|
||||||
uploadService.fileUploadComplete.next(<any>file);
|
uploadService.fileUploadComplete.next(<any>file);
|
||||||
|
|
||||||
@@ -221,7 +221,7 @@ describe('FilesComponent', () => {
|
|||||||
|
|
||||||
it('should not call refresh on fileUploadComplete event if parent mismatch', fakeAsync(() => {
|
it('should not call refresh on fileUploadComplete event if parent mismatch', fakeAsync(() => {
|
||||||
const file = { file: { options: { parentId: 'otherId' } } };
|
const file = { file: { options: { parentId: 'otherId' } } };
|
||||||
component.node = { id: 'parentId' };
|
component.node = <any>{ id: 'parentId' };
|
||||||
|
|
||||||
uploadService.fileUploadComplete.next(<any>file);
|
uploadService.fileUploadComplete.next(<any>file);
|
||||||
|
|
||||||
@@ -232,7 +232,7 @@ describe('FilesComponent', () => {
|
|||||||
|
|
||||||
it('should call refresh on fileUploadDeleted event if parent node match', fakeAsync(() => {
|
it('should call refresh on fileUploadDeleted event if parent node match', fakeAsync(() => {
|
||||||
const file = { file: { options: { parentId: 'parentId' } } };
|
const file = { file: { options: { parentId: 'parentId' } } };
|
||||||
component.node = { id: 'parentId' };
|
component.node = <any>{ id: 'parentId' };
|
||||||
|
|
||||||
uploadService.fileUploadDeleted.next(<any>file);
|
uploadService.fileUploadDeleted.next(<any>file);
|
||||||
|
|
||||||
@@ -243,7 +243,7 @@ describe('FilesComponent', () => {
|
|||||||
|
|
||||||
it('should not call refresh on fileUploadDeleted event if parent mismatch', fakeAsync(() => {
|
it('should not call refresh on fileUploadDeleted event if parent mismatch', fakeAsync(() => {
|
||||||
const file: any = { file: { options: { parentId: 'otherId' } } };
|
const file: any = { file: { options: { parentId: 'otherId' } } };
|
||||||
component.node = { id: 'parentId' };
|
component.node = <any>{ id: 'parentId' };
|
||||||
|
|
||||||
uploadService.fileUploadDeleted.next(file);
|
uploadService.fileUploadDeleted.next(file);
|
||||||
|
|
||||||
@@ -293,7 +293,7 @@ describe('FilesComponent', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should navigate home if node is root', () => {
|
it('should navigate home if node is root', () => {
|
||||||
component.node = {
|
component.node = <any>{
|
||||||
path: {
|
path: {
|
||||||
elements: [{ id: 'node-id' }]
|
elements: [{ id: 'node-id' }]
|
||||||
}
|
}
|
||||||
@@ -307,19 +307,19 @@ describe('FilesComponent', () => {
|
|||||||
|
|
||||||
describe('isSiteContainer', () => {
|
describe('isSiteContainer', () => {
|
||||||
it('should return false if node has no aspectNames', () => {
|
it('should return false if node has no aspectNames', () => {
|
||||||
const mock = { aspectNames: [] };
|
const mock = <any>{ aspectNames: [] };
|
||||||
|
|
||||||
expect(component.isSiteContainer(mock)).toBe(false);
|
expect(component.isSiteContainer(mock)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return false if node is not site container', () => {
|
it('should return false if node is not site container', () => {
|
||||||
const mock = { aspectNames: ['something-else'] };
|
const mock = <any>{ aspectNames: ['something-else'] };
|
||||||
|
|
||||||
expect(component.isSiteContainer(mock)).toBe(false);
|
expect(component.isSiteContainer(mock)).toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return true if node is a site container', () => {
|
it('should return true if node is a site container', () => {
|
||||||
const mock = { aspectNames: ['st:siteContainer'] };
|
const mock = <any>{ aspectNames: ['st:siteContainer'] };
|
||||||
|
|
||||||
expect(component.isSiteContainer(mock)).toBe(true);
|
expect(component.isSiteContainer(mock)).toBe(true);
|
||||||
});
|
});
|
||||||
|
@@ -32,7 +32,7 @@ import {
|
|||||||
MinimalNodeEntryEntity,
|
MinimalNodeEntryEntity,
|
||||||
PathElement,
|
PathElement,
|
||||||
PathElementEntity
|
PathElementEntity
|
||||||
} from 'alfresco-js-api';
|
} from '@alfresco/js-api';
|
||||||
import { ContentManagementService } from '../../services/content-management.service';
|
import { ContentManagementService } from '../../services/content-management.service';
|
||||||
import { NodeActionsService } from '../../services/node-actions.service';
|
import { NodeActionsService } from '../../services/node-actions.service';
|
||||||
import { AppStore } from '../../store/states/app.state';
|
import { AppStore } from '../../store/states/app.state';
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, Input } from '@angular/core';
|
import { Component, Input } from '@angular/core';
|
||||||
import { MinimalNodeEntryEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||||
import { NodePermissionService } from '../../../services/node-permission.service';
|
import { NodePermissionService } from '../../../services/node-permission.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@@ -83,7 +83,7 @@ describe('InfoDrawerComponent', () => {
|
|||||||
|
|
||||||
it('should set displayNode when node is from personal list', () => {
|
it('should set displayNode when node is from personal list', () => {
|
||||||
spyOn(contentApiService, 'getNodeInfo');
|
spyOn(contentApiService, 'getNodeInfo');
|
||||||
const nodeMock = { entry: { id: 'nodeId' } };
|
const nodeMock = <any>{ entry: { id: 'nodeId' } };
|
||||||
component.node = nodeMock;
|
component.node = nodeMock;
|
||||||
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
@@ -109,9 +109,9 @@ describe('InfoDrawerComponent', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should call getNodeInfo() when node is a shared file', async(() => {
|
it('should call getNodeInfo() when node is a shared file', async(() => {
|
||||||
const response = { entry: { id: 'nodeId' } };
|
const response = <any>{ entry: { id: 'nodeId' } };
|
||||||
spyOn(contentApiService, 'getNodeInfo').and.returnValue(of(response));
|
spyOn(contentApiService, 'getNodeInfo').and.returnValue(of(response));
|
||||||
const nodeMock = { entry: { nodeId: 'nodeId' }, isLibrary: false };
|
const nodeMock = <any>{ entry: { nodeId: 'nodeId' }, isLibrary: false };
|
||||||
component.node = nodeMock;
|
component.node = nodeMock;
|
||||||
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
@@ -122,7 +122,7 @@ describe('InfoDrawerComponent', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should call getNodeInfo() when node is a favorite file', async(() => {
|
it('should call getNodeInfo() when node is a favorite file', async(() => {
|
||||||
const response = { entry: { id: 'nodeId' } };
|
const response = <any>{ entry: { id: 'nodeId' } };
|
||||||
spyOn(contentApiService, 'getNodeInfo').and.returnValue(of(response));
|
spyOn(contentApiService, 'getNodeInfo').and.returnValue(of(response));
|
||||||
const nodeMock = <any>{
|
const nodeMock = <any>{
|
||||||
entry: { id: 'nodeId', guid: 'guidId' },
|
entry: { id: 'nodeId', guid: 'guidId' },
|
||||||
@@ -138,7 +138,7 @@ describe('InfoDrawerComponent', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should call getNodeInfo() when node is a recent file', async(() => {
|
it('should call getNodeInfo() when node is a recent file', async(() => {
|
||||||
const response = { entry: { id: 'nodeId' } };
|
const response = <any>{ entry: { id: 'nodeId' } };
|
||||||
spyOn(contentApiService, 'getNodeInfo').and.returnValue(of(response));
|
spyOn(contentApiService, 'getNodeInfo').and.returnValue(of(response));
|
||||||
const nodeMock = <any>{
|
const nodeMock = <any>{
|
||||||
entry: {
|
entry: {
|
||||||
|
@@ -28,7 +28,7 @@ import {
|
|||||||
MinimalNodeEntity,
|
MinimalNodeEntity,
|
||||||
MinimalNodeEntryEntity,
|
MinimalNodeEntryEntity,
|
||||||
SiteEntry
|
SiteEntry
|
||||||
} from 'alfresco-js-api';
|
} from '@alfresco/js-api';
|
||||||
import { ContentApiService } from '../../services/content-api.service';
|
import { ContentApiService } from '../../services/content-api.service';
|
||||||
import { AppExtensionService } from '../../extensions/extension.service';
|
import { AppExtensionService } from '../../extensions/extension.service';
|
||||||
import { SidebarTabRef } from '@alfresco/adf-extensions';
|
import { SidebarTabRef } from '@alfresco/adf-extensions';
|
||||||
@@ -66,7 +66,7 @@ export class InfoDrawerComponent implements OnChanges, OnInit, OnDestroy {
|
|||||||
|
|
||||||
ngOnChanges() {
|
ngOnChanges() {
|
||||||
if (this.node) {
|
if (this.node) {
|
||||||
const entry = this.node.entry;
|
const entry: any = this.node.entry;
|
||||||
|
|
||||||
if (this.isLibraryListNode(this.node)) {
|
if (this.isLibraryListNode(this.node)) {
|
||||||
return this.setDisplayNode(this.node);
|
return this.setDisplayNode(this.node);
|
||||||
@@ -113,19 +113,19 @@ export class InfoDrawerComponent implements OnChanges, OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private setDisplayNode(node: MinimalNodeEntryEntity | SiteEntry) {
|
private setDisplayNode(node: any) {
|
||||||
this.displayNode = node;
|
this.displayNode = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
private isLibraryListNode(node: SiteEntry): boolean {
|
private isLibraryListNode(node: any): boolean {
|
||||||
return (<any>node).isLibrary;
|
return node.isLibrary;
|
||||||
}
|
}
|
||||||
|
|
||||||
private isFavoriteListNode(node: MinimalNodeEntity): boolean {
|
private isFavoriteListNode(node: MinimalNodeEntity): boolean {
|
||||||
return !this.isLibraryListNode(node) && (<any>node).entry.guid;
|
return !this.isLibraryListNode(node) && (<any>node).entry.guid;
|
||||||
}
|
}
|
||||||
|
|
||||||
private isSharedFilesNode(node: MinimalNodeEntity): boolean {
|
private isSharedFilesNode(node: any): boolean {
|
||||||
return !!node.entry.nodeId;
|
return !!node.entry.nodeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,7 +33,7 @@ import { Store } from '@ngrx/store';
|
|||||||
import { UpdateLibraryAction } from '../../../store/actions';
|
import { UpdateLibraryAction } from '../../../store/actions';
|
||||||
import { AppTestingModule } from '../../../testing/app-testing.module';
|
import { AppTestingModule } from '../../../testing/app-testing.module';
|
||||||
import { NO_ERRORS_SCHEMA } from '@angular/core';
|
import { NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
import { Site, SiteBody } from 'alfresco-js-api';
|
import { Site, SiteBody } from '@alfresco/js-api';
|
||||||
import { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-core';
|
import { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-core';
|
||||||
|
|
||||||
describe('LibraryMetadataFormComponent', () => {
|
describe('LibraryMetadataFormComponent', () => {
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
import { Component, Input, OnInit, OnChanges, OnDestroy } from '@angular/core';
|
import { Component, Input, OnInit, OnChanges, OnDestroy } from '@angular/core';
|
||||||
import { FormGroup, FormControl, Validators } from '@angular/forms';
|
import { FormGroup, FormControl, Validators } from '@angular/forms';
|
||||||
import { SiteEntry, SitePaging } from 'alfresco-js-api';
|
import { SiteEntry, SitePaging } from '@alfresco/js-api';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { UpdateLibraryAction } from '../../../store/actions';
|
import { UpdateLibraryAction } from '../../../store/actions';
|
||||||
import { AppStore } from '../../../store/states/app.state';
|
import { AppStore } from '../../../store/states/app.state';
|
||||||
@@ -138,7 +138,9 @@ export class LibraryMetadataFormComponent
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private findLibraryByTitle(libraryTitle: string): Observable<SitePaging> {
|
private findLibraryByTitle(
|
||||||
|
libraryTitle: string
|
||||||
|
): Observable<SitePaging | { list: { entries: any[] } }> {
|
||||||
return from(
|
return from(
|
||||||
this.alfrescoApiService
|
this.alfrescoApiService
|
||||||
.getInstance()
|
.getInstance()
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, Input } from '@angular/core';
|
import { Component, Input } from '@angular/core';
|
||||||
import { SiteEntry } from 'alfresco-js-api';
|
import { SiteEntry } from '@alfresco/js-api';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-metadata-tab',
|
selector: 'app-metadata-tab',
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, Input, ViewEncapsulation } from '@angular/core';
|
import { Component, Input, ViewEncapsulation } from '@angular/core';
|
||||||
import { MinimalNodeEntryEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||||
import { NodePermissionService } from '../../../services/node-permission.service';
|
import { NodePermissionService } from '../../../services/node-permission.service';
|
||||||
import { AppExtensionService } from '../../../extensions/extension.service';
|
import { AppExtensionService } from '../../../extensions/extension.service';
|
||||||
import { AppConfigService } from '@alfresco/adf-core';
|
import { AppConfigService } from '@alfresco/adf-core';
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, Input, OnChanges, OnInit } from '@angular/core';
|
import { Component, Input, OnChanges, OnInit } from '@angular/core';
|
||||||
import { MinimalNodeEntryEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-versions-tab',
|
selector: 'app-versions-tab',
|
||||||
@@ -65,7 +65,7 @@ export class VersionsTabComponent implements OnInit, OnChanges {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private updateState() {
|
private updateState() {
|
||||||
if (this.node && this.node.nodeId) {
|
if (this.node && (<any>this.node).nodeId) {
|
||||||
// workaround for shared files type.
|
// workaround for shared files type.
|
||||||
this.isFileSelected = true;
|
this.isFileSelected = true;
|
||||||
} else {
|
} else {
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
<adf-upload-drag-area [parentId]="currentFolderId" [disabled]="!canUpload">
|
<adf-upload-drag-area [rootFolderId]="currentFolderId" [disabled]="!canUpload">
|
||||||
<adf-sidenav-layout
|
<adf-sidenav-layout
|
||||||
#layout
|
#layout
|
||||||
[sidenavMin]="70"
|
[sidenavMin]="70"
|
||||||
@@ -29,5 +29,5 @@
|
|||||||
</adf-sidenav-layout-content>
|
</adf-sidenav-layout-content>
|
||||||
</adf-sidenav-layout>
|
</adf-sidenav-layout>
|
||||||
|
|
||||||
<app-file-uploading-dialog position="left"></app-file-uploading-dialog>
|
<adf-file-uploading-dialog position="left"></adf-file-uploading-dialog>
|
||||||
</adf-upload-drag-area>
|
</adf-upload-drag-area>
|
||||||
|
@@ -140,7 +140,7 @@ describe('AppLayoutComponent', () => {
|
|||||||
|
|
||||||
it('should reset selection before navigation', done => {
|
it('should reset selection before navigation', done => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
const selection = [{ entry: { id: 'nodeId', name: 'name' } }];
|
const selection = [<any>{ entry: { id: 'nodeId', name: 'name' } }];
|
||||||
store.dispatch(new SetSelectedNodesAction(selection));
|
store.dispatch(new SetSelectedNodesAction(selection));
|
||||||
|
|
||||||
router.navigateByUrl('somewhere/over/the/rainbow');
|
router.navigateByUrl('somewhere/over/the/rainbow');
|
||||||
@@ -153,7 +153,7 @@ describe('AppLayoutComponent', () => {
|
|||||||
|
|
||||||
it('should not reset selection if route is `/search`', done => {
|
it('should not reset selection if route is `/search`', done => {
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
const selection = [{ entry: { id: 'nodeId', name: 'name' } }];
|
const selection = [<any>{ entry: { id: 'nodeId', name: 'name' } }];
|
||||||
store.dispatch(new SetSelectedNodesAction(selection));
|
store.dispatch(new SetSelectedNodesAction(selection));
|
||||||
|
|
||||||
router.navigateByUrl('/search;q=');
|
router.navigateByUrl('/search;q=');
|
||||||
|
@@ -32,7 +32,6 @@ import { RouterModule } from '@angular/router';
|
|||||||
import { AppSidenavModule } from '../sidenav/sidenav.module';
|
import { AppSidenavModule } from '../sidenav/sidenav.module';
|
||||||
import { AppCommonModule } from '../common/common.module';
|
import { AppCommonModule } from '../common/common.module';
|
||||||
import { AppHeaderModule } from '../header/header.module';
|
import { AppHeaderModule } from '../header/header.module';
|
||||||
import { AppUploadingDialogModule } from '../upload-dialog/upload-dialog.module';
|
|
||||||
import { PageLayoutComponent } from './page-layout/page-layout.component';
|
import { PageLayoutComponent } from './page-layout/page-layout.component';
|
||||||
import { PageLayoutHeaderComponent } from './page-layout/page-layout-header.component';
|
import { PageLayoutHeaderComponent } from './page-layout/page-layout-header.component';
|
||||||
import { PageLayoutContentComponent } from './page-layout/page-layout-content.component';
|
import { PageLayoutContentComponent } from './page-layout/page-layout-content.component';
|
||||||
@@ -48,8 +47,7 @@ import { HttpClientModule } from '@angular/common/http';
|
|||||||
AppCommonModule,
|
AppCommonModule,
|
||||||
AppSidenavModule,
|
AppSidenavModule,
|
||||||
AppHeaderModule,
|
AppHeaderModule,
|
||||||
HttpClientModule,
|
HttpClientModule
|
||||||
AppUploadingDialogModule
|
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
AppLayoutComponent,
|
AppLayoutComponent,
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { SiteEntry } from 'alfresco-js-api';
|
import { SiteEntry } from '@alfresco/js-api';
|
||||||
import { AppExtensionService } from '../../extensions/extension.service';
|
import { AppExtensionService } from '../../extensions/extension.service';
|
||||||
import { ContentManagementService } from '../../services/content-management.service';
|
import { ContentManagementService } from '../../services/content-management.service';
|
||||||
import { NavigateLibraryAction } from '../../store/actions';
|
import { NavigateLibraryAction } from '../../store/actions';
|
||||||
|
@@ -30,7 +30,7 @@ import {
|
|||||||
import { ContentActionRef, SelectionState } from '@alfresco/adf-extensions';
|
import { ContentActionRef, SelectionState } from '@alfresco/adf-extensions';
|
||||||
import { OnDestroy, OnInit, ViewChild } from '@angular/core';
|
import { OnDestroy, OnInit, ViewChild } from '@angular/core';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { MinimalNodeEntity, MinimalNodeEntryEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntity, MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||||
import { Observable, Subject, Subscription } from 'rxjs';
|
import { Observable, Subject, Subscription } from 'rxjs';
|
||||||
import { takeUntil } from 'rxjs/operators';
|
import { takeUntil } from 'rxjs/operators';
|
||||||
import { AppExtensionService } from '../extensions/extension.service';
|
import { AppExtensionService } from '../extensions/extension.service';
|
||||||
|
@@ -30,7 +30,7 @@ import {
|
|||||||
import { Component, Input, OnInit, ViewChild } from '@angular/core';
|
import { Component, Input, OnInit, ViewChild } from '@angular/core';
|
||||||
import { MatDialog } from '@angular/material';
|
import { MatDialog } from '@angular/material';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { MinimalNodeEntryEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||||
import { ContentApiService } from '../../../services/content-api.service';
|
import { ContentApiService } from '../../../services/content-api.service';
|
||||||
import { SnackbarErrorAction } from '../../../store/actions/snackbar.actions';
|
import { SnackbarErrorAction } from '../../../store/actions/snackbar.actions';
|
||||||
import { AppStore } from '../../../store/states/app.state';
|
import { AppStore } from '../../../store/states/app.state';
|
||||||
|
@@ -35,7 +35,7 @@ import {
|
|||||||
OnChanges
|
OnChanges
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { AppExtensionService } from '../../extensions/extension.service';
|
import { AppExtensionService } from '../../extensions/extension.service';
|
||||||
import { MinimalNodeEntryEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-preview-extension',
|
selector: 'app-preview-extension',
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
<ng-container *ngIf="nodeId">
|
<ng-container *ngIf="nodeId">
|
||||||
<adf-viewer
|
<adf-viewer
|
||||||
[fileNodeId]="nodeId"
|
[nodeId]="nodeId"
|
||||||
[allowNavigate]="navigateMultiple"
|
[allowNavigate]="navigateMultiple"
|
||||||
[allowSidebar]="hasRightSidebar"
|
[allowRightSidebar]="hasRightSidebar"
|
||||||
[allowPrint]="false"
|
[allowPrint]="false"
|
||||||
[allowDownload]="false"
|
[allowDownload]="false"
|
||||||
[allowFullScreen]="false"
|
[allowFullScreen]="false"
|
||||||
|
@@ -47,7 +47,7 @@ import { ContentApiService } from '../../services/content-api.service';
|
|||||||
import { AppExtensionService } from '../../extensions/extension.service';
|
import { AppExtensionService } from '../../extensions/extension.service';
|
||||||
import { ContentManagementService } from '../../services/content-management.service';
|
import { ContentManagementService } from '../../services/content-management.service';
|
||||||
import { ContentActionRef, ViewerExtensionRef } from '@alfresco/adf-extensions';
|
import { ContentActionRef, ViewerExtensionRef } from '@alfresco/adf-extensions';
|
||||||
import { SearchRequest } from 'alfresco-js-api';
|
import { SearchRequest } from '@alfresco/js-api';
|
||||||
import { AppDataService } from '../../services/data.service';
|
import { AppDataService } from '../../services/data.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
||||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||||
import { ContentManagementService } from '../../services/content-management.service';
|
import { ContentManagementService } from '../../services/content-management.service';
|
||||||
import { PageComponent } from '../page.component';
|
import { PageComponent } from '../page.component';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
import { AlfrescoApiService } from '@alfresco/adf-core';
|
import { AlfrescoApiService } from '@alfresco/adf-core';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { SitePaging } from 'alfresco-js-api';
|
import { SitePaging } from '@alfresco/js-api';
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { NodePaging, Pagination, SiteEntry } from 'alfresco-js-api';
|
import { NodePaging, Pagination, SiteEntry } from '@alfresco/js-api';
|
||||||
import { ActivatedRoute, Params } from '@angular/router';
|
import { ActivatedRoute, Params } from '@angular/router';
|
||||||
import { PageComponent } from '../../page.component';
|
import { PageComponent } from '../../page.component';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
|
@@ -30,7 +30,7 @@ import {
|
|||||||
ViewEncapsulation,
|
ViewEncapsulation,
|
||||||
ChangeDetectionStrategy
|
ChangeDetectionStrategy
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||||
import { ViewFileAction } from '../../../store/actions';
|
import { ViewFileAction } from '../../../store/actions';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppStore } from '../../../store/states/app.state';
|
import { AppStore } from '../../../store/states/app.state';
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, OnInit, ViewChild } from '@angular/core';
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
import { NodePaging, Pagination, MinimalNodeEntity } from 'alfresco-js-api';
|
import { NodePaging, Pagination, MinimalNodeEntity } from '@alfresco/js-api';
|
||||||
import { ActivatedRoute, Params } from '@angular/router';
|
import { ActivatedRoute, Params } from '@angular/router';
|
||||||
import {
|
import {
|
||||||
SearchQueryBuilderService,
|
SearchQueryBuilderService,
|
||||||
|
@@ -24,11 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
|
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
|
||||||
import {
|
import { AppConfigService, StorageService } from '@alfresco/adf-core';
|
||||||
AppConfigService,
|
|
||||||
StorageService,
|
|
||||||
SettingsService
|
|
||||||
} from '@alfresco/adf-core';
|
|
||||||
import { Validators, FormGroup, FormBuilder } from '@angular/forms';
|
import { Validators, FormGroup, FormBuilder } from '@angular/forms';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
@@ -63,7 +59,6 @@ export class SettingsComponent implements OnInit {
|
|||||||
constructor(
|
constructor(
|
||||||
private store: Store<AppStore>,
|
private store: Store<AppStore>,
|
||||||
private appConfig: AppConfigService,
|
private appConfig: AppConfigService,
|
||||||
private settingsService: SettingsService,
|
|
||||||
private storage: StorageService,
|
private storage: StorageService,
|
||||||
private fb: FormBuilder
|
private fb: FormBuilder
|
||||||
) {
|
) {
|
||||||
@@ -106,7 +101,8 @@ export class SettingsComponent implements OnInit {
|
|||||||
|
|
||||||
reset() {
|
reset() {
|
||||||
this.form.reset({
|
this.form.reset({
|
||||||
ecmHost: this.storage.getItem('ecmHost') || this.settingsService.ecmHost
|
ecmHost:
|
||||||
|
this.storage.getItem('ecmHost') || this.appConfig.get<string>('ecmHost')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -36,7 +36,7 @@ import {
|
|||||||
distinctUntilChanged
|
distinctUntilChanged
|
||||||
} from 'rxjs/operators';
|
} from 'rxjs/operators';
|
||||||
import { SharedLinksApiService, NodesApiService } from '@alfresco/adf-core';
|
import { SharedLinksApiService, NodesApiService } from '@alfresco/adf-core';
|
||||||
import { SharedLinkEntry, MinimalNodeEntryEntity } from 'alfresco-js-api';
|
import { SharedLinkEntry, MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||||
import { ConfirmDialogComponent } from '@alfresco/adf-content-services';
|
import { ConfirmDialogComponent } from '@alfresco/adf-content-services';
|
||||||
import * as moment from 'moment';
|
import * as moment from 'moment';
|
||||||
|
|
||||||
|
@@ -1,134 +0,0 @@
|
|||||||
<div
|
|
||||||
*ngIf="isDialogActive"
|
|
||||||
class="adf-upload-dialog"
|
|
||||||
id="upload-dialog"
|
|
||||||
[class.adf-upload-dialog--minimized]="isDialogMinimized"
|
|
||||||
[class.adf-upload-dialog--position-left]="position === 'left'"
|
|
||||||
[class.adf-upload-dialog--position-right]="position === 'right'"
|
|
||||||
>
|
|
||||||
<header class="adf-upload-dialog__header">
|
|
||||||
<button
|
|
||||||
mat-button
|
|
||||||
color="secondary"
|
|
||||||
[disabled]="isConfirmation"
|
|
||||||
(click)="toggleMinimized()"
|
|
||||||
>
|
|
||||||
<mat-icon
|
|
||||||
mat-list-icon
|
|
||||||
title="{{
|
|
||||||
(isDialogMinimized
|
|
||||||
? 'ADF_FILE_UPLOAD.BUTTON.MAXIMIZE'
|
|
||||||
: 'ADF_FILE_UPLOAD.BUTTON.MINIMIZE') | translate
|
|
||||||
}}"
|
|
||||||
>
|
|
||||||
{{ isDialogMinimized ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}
|
|
||||||
</mat-icon>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<span
|
|
||||||
class="adf-upload-dialog__title"
|
|
||||||
*ngIf="!uploadList.isUploadCancelled()"
|
|
||||||
>
|
|
||||||
{{
|
|
||||||
'FILE_UPLOAD.MESSAGES.UPLOAD_COMPLETED'
|
|
||||||
| translate
|
|
||||||
: {
|
|
||||||
completed: totalCompleted,
|
|
||||||
total: filesUploadingList.length
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span
|
|
||||||
class="adf-upload-dialog__title"
|
|
||||||
*ngIf="uploadList.isUploadCancelled()"
|
|
||||||
>
|
|
||||||
{{ 'FILE_UPLOAD.MESSAGES.UPLOAD_CANCELED' | translate }}
|
|
||||||
</span>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<section class="adf-upload-dialog__info" *ngIf="totalErrors">
|
|
||||||
{{
|
|
||||||
(totalErrors > 1
|
|
||||||
? 'FILE_UPLOAD.MESSAGES.UPLOAD_ERRORS'
|
|
||||||
: 'FILE_UPLOAD.MESSAGES.UPLOAD_ERROR')
|
|
||||||
| translate: { total: totalErrors }
|
|
||||||
}}
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section
|
|
||||||
class="adf-upload-dialog__content"
|
|
||||||
[class.adf-upload-dialog--padding]="isConfirmation"
|
|
||||||
>
|
|
||||||
<app-file-uploading-list
|
|
||||||
[class.adf-upload-dialog--hide]="isConfirmation"
|
|
||||||
#uploadList
|
|
||||||
[files]="filesUploadingList"
|
|
||||||
>
|
|
||||||
<ng-template let-file="$implicit">
|
|
||||||
<app-file-uploading-list-row
|
|
||||||
[file]="file"
|
|
||||||
[error]="getFileUploadError(file)"
|
|
||||||
(remove)="uploadList.removeFile(file)"
|
|
||||||
(cancel)="uploadList.cancelFile(file)"
|
|
||||||
>
|
|
||||||
</app-file-uploading-list-row>
|
|
||||||
</ng-template>
|
|
||||||
</app-file-uploading-list>
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="adf-upload-dialog__confirmation"
|
|
||||||
[class.adf-upload-dialog--hide]="!isConfirmation"
|
|
||||||
>
|
|
||||||
<p class="adf-upload-dialog__confirmation--title">
|
|
||||||
{{ 'ADF_FILE_UPLOAD.CONFIRMATION.MESSAGE.TITLE' | translate }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="adf-upload-dialog__confirmation--text">
|
|
||||||
{{ 'ADF_FILE_UPLOAD.CONFIRMATION.MESSAGE.TEXT' | translate }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<footer class="adf-upload-dialog__actions" *ngIf="!isConfirmation">
|
|
||||||
<button
|
|
||||||
id="adf-upload-dialog-cancel-all"
|
|
||||||
color="primary"
|
|
||||||
mat-button
|
|
||||||
*ngIf="!uploadList.isUploadCompleted() && !uploadList.isUploadCancelled()"
|
|
||||||
(click)="toggleConfirmation()"
|
|
||||||
>
|
|
||||||
{{ 'ADF_FILE_UPLOAD.BUTTON.CANCEL_ALL' | translate }}
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="adf-upload-dialog-close"
|
|
||||||
*ngIf="uploadList.isUploadCompleted() || uploadList.isUploadCancelled()"
|
|
||||||
mat-button
|
|
||||||
color="primary"
|
|
||||||
(click)="close()"
|
|
||||||
>
|
|
||||||
{{ 'ADF_FILE_UPLOAD.BUTTON.CLOSE' | translate }}
|
|
||||||
</button>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<footer class="adf-upload-dialog__actions" *ngIf="isConfirmation">
|
|
||||||
<button
|
|
||||||
id="adf-upload-dialog-cancel"
|
|
||||||
color="secondary"
|
|
||||||
mat-button
|
|
||||||
(click)="cancelAllUploads()"
|
|
||||||
>
|
|
||||||
{{ 'ADF_FILE_UPLOAD.CONFIRMATION.BUTTON.CANCEL' | translate }}
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="adf-upload-dialog-confirm"
|
|
||||||
mat-button
|
|
||||||
color="primary"
|
|
||||||
(click)="toggleConfirmation()"
|
|
||||||
>
|
|
||||||
{{ 'ADF_FILE_UPLOAD.CONFIRMATION.BUTTON.CONTINUE' | translate }}
|
|
||||||
</button>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
@@ -1,195 +0,0 @@
|
|||||||
/*!
|
|
||||||
* @license
|
|
||||||
* Copyright 2016 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 {
|
|
||||||
FileModel,
|
|
||||||
FileUploadCompleteEvent,
|
|
||||||
FileUploadDeleteEvent,
|
|
||||||
FileUploadErrorEvent,
|
|
||||||
FileUploadStatus,
|
|
||||||
UploadService
|
|
||||||
} from '@alfresco/adf-core';
|
|
||||||
import {
|
|
||||||
ChangeDetectorRef,
|
|
||||||
Component,
|
|
||||||
Input,
|
|
||||||
Output,
|
|
||||||
EventEmitter,
|
|
||||||
OnDestroy,
|
|
||||||
OnInit,
|
|
||||||
ViewChild
|
|
||||||
} from '@angular/core';
|
|
||||||
import { Subscription, merge } from 'rxjs';
|
|
||||||
import { FileUploadingListComponent } from './file-uploading-list.component';
|
|
||||||
|
|
||||||
// @deprecated file-uploading-dialog TODO remove in 3.0.0
|
|
||||||
@Component({
|
|
||||||
selector: 'app-file-uploading-dialog',
|
|
||||||
templateUrl: './file-uploading-dialog.component.html'
|
|
||||||
})
|
|
||||||
export class FileUploadingDialogComponent implements OnInit, OnDestroy {
|
|
||||||
@ViewChild('uploadList')
|
|
||||||
uploadList: FileUploadingListComponent;
|
|
||||||
|
|
||||||
/** Dialog position. Can be 'left' or 'right'. */
|
|
||||||
@Input()
|
|
||||||
position = 'right';
|
|
||||||
|
|
||||||
/** Emitted when a file in the list has an error. */
|
|
||||||
@Output()
|
|
||||||
error: EventEmitter<any> = new EventEmitter();
|
|
||||||
|
|
||||||
filesUploadingList: FileModel[] = [];
|
|
||||||
isDialogActive = false;
|
|
||||||
totalCompleted = 0;
|
|
||||||
totalErrors = 0;
|
|
||||||
isDialogMinimized = false;
|
|
||||||
isConfirmation = false;
|
|
||||||
|
|
||||||
private listSubscription: Subscription;
|
|
||||||
private counterSubscription: Subscription;
|
|
||||||
private fileUploadSubscription: Subscription;
|
|
||||||
private errorSubscription: Subscription;
|
|
||||||
private errors = [];
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private uploadService: UploadService,
|
|
||||||
private changeDetector: ChangeDetectorRef
|
|
||||||
) {}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
this.listSubscription = this.uploadService.queueChanged.subscribe(
|
|
||||||
(fileList: FileModel[]) => {
|
|
||||||
this.filesUploadingList = fileList;
|
|
||||||
|
|
||||||
if (this.filesUploadingList.length) {
|
|
||||||
this.isDialogActive = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
this.counterSubscription = merge(
|
|
||||||
this.uploadService.fileUploadComplete,
|
|
||||||
this.uploadService.fileUploadDeleted
|
|
||||||
).subscribe((event: FileUploadDeleteEvent | FileUploadCompleteEvent) => {
|
|
||||||
this.totalCompleted = event.totalComplete;
|
|
||||||
this.changeDetector.detectChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
// todo: move to ADF ACA-2051
|
|
||||||
this.errorSubscription = this.uploadService.fileUploadError.subscribe(
|
|
||||||
(event: FileUploadErrorEvent) => {
|
|
||||||
const statusCode = (event.error || {}).response
|
|
||||||
? event.error.response.statusCode
|
|
||||||
: null;
|
|
||||||
this.errors.push({
|
|
||||||
fileName: event.file.name,
|
|
||||||
status: statusCode,
|
|
||||||
message: this.getUploadErrorMessage(statusCode)
|
|
||||||
});
|
|
||||||
this.totalErrors = event.totalError;
|
|
||||||
this.changeDetector.detectChanges();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
this.fileUploadSubscription = this.uploadService.fileUpload.subscribe(
|
|
||||||
event => {
|
|
||||||
this.changeDetector.detectChanges();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
this.uploadService.fileDeleted.subscribe(objId => {
|
|
||||||
if (this.filesUploadingList) {
|
|
||||||
const file = this.filesUploadingList.find(item => {
|
|
||||||
return item.data.entry.id === objId;
|
|
||||||
});
|
|
||||||
if (file) {
|
|
||||||
file.status = FileUploadStatus.Cancelled;
|
|
||||||
this.changeDetector.detectChanges();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
getFileUploadError(file) {
|
|
||||||
return this.errors.find(error => (error.fileName = file.name));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Toggle confirmation message.
|
|
||||||
*/
|
|
||||||
toggleConfirmation() {
|
|
||||||
this.isConfirmation = !this.isConfirmation;
|
|
||||||
|
|
||||||
if (this.isDialogMinimized) {
|
|
||||||
this.isDialogMinimized = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cancel uploads and hide confirmation
|
|
||||||
*/
|
|
||||||
cancelAllUploads() {
|
|
||||||
this.toggleConfirmation();
|
|
||||||
|
|
||||||
this.uploadList.cancelAllFiles();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Toggle dialog minimized state.
|
|
||||||
*/
|
|
||||||
toggleMinimized(): void {
|
|
||||||
this.isDialogMinimized = !this.isDialogMinimized;
|
|
||||||
this.changeDetector.detectChanges();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dismiss dialog
|
|
||||||
*/
|
|
||||||
close(): void {
|
|
||||||
this.isConfirmation = false;
|
|
||||||
this.totalCompleted = 0;
|
|
||||||
this.totalErrors = 0;
|
|
||||||
this.filesUploadingList = [];
|
|
||||||
this.isDialogActive = false;
|
|
||||||
this.isDialogMinimized = false;
|
|
||||||
this.uploadService.clearQueue();
|
|
||||||
this.changeDetector.detectChanges();
|
|
||||||
this.errors = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnDestroy() {
|
|
||||||
this.uploadService.clearQueue();
|
|
||||||
this.listSubscription.unsubscribe();
|
|
||||||
this.counterSubscription.unsubscribe();
|
|
||||||
this.fileUploadSubscription.unsubscribe();
|
|
||||||
this.errorSubscription.unsubscribe();
|
|
||||||
}
|
|
||||||
|
|
||||||
// todo: move to ADF ACA-2051
|
|
||||||
private getUploadErrorMessage(status) {
|
|
||||||
const messages = {
|
|
||||||
500: 'APP.MESSAGES.UPLOAD.ERROR.500',
|
|
||||||
504: 'APP.MESSAGES.UPLOAD.ERROR.504',
|
|
||||||
403: 'APP.MESSAGES.UPLOAD.ERROR.403',
|
|
||||||
404: 'APP.MESSAGES.UPLOAD.ERROR.404',
|
|
||||||
generic: 'APP.MESSAGES.UPLOAD.ERROR.GENERIC'
|
|
||||||
};
|
|
||||||
|
|
||||||
return messages[status] || messages['generic'];
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,94 +0,0 @@
|
|||||||
<div class="adf-file-uploading-row">
|
|
||||||
<mat-icon mat-list-icon class="adf-file-uploading-row__type">
|
|
||||||
insert_drive_file
|
|
||||||
</mat-icon>
|
|
||||||
|
|
||||||
<span class="adf-file-uploading-row__name" title="{{ file.name }}">
|
|
||||||
{{ file.name }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
file.status === FileUploadStatus.Progress ||
|
|
||||||
file.status === FileUploadStatus.Starting
|
|
||||||
"
|
|
||||||
(click)="onCancel(file)"
|
|
||||||
class="adf-file-uploading-row__group adf-file-uploading-row__group--toggle"
|
|
||||||
title="{{ 'ADF_FILE_UPLOAD.BUTTON.CANCEL_FILE' | translate }}"
|
|
||||||
>
|
|
||||||
<span class="adf-file-uploading-row__status">
|
|
||||||
{{ file.progress.loaded | adfFileSize }} /
|
|
||||||
{{ file.progress.total | adfFileSize }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<mat-icon
|
|
||||||
mat-list-icon
|
|
||||||
class="adf-file-uploading-row__action adf-file-uploading-row__action--cancel"
|
|
||||||
>
|
|
||||||
clear
|
|
||||||
</mat-icon>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
*ngIf="file.status === FileUploadStatus.Complete"
|
|
||||||
(click)="onRemove(file)"
|
|
||||||
class="adf-file-uploading-row__group adf-file-uploading-row__group--toggle"
|
|
||||||
title="{{ 'ADF_FILE_UPLOAD.BUTTON.REMOVE_FILE' | translate }}"
|
|
||||||
>
|
|
||||||
<mat-icon
|
|
||||||
mat-list-icon
|
|
||||||
class="adf-file-uploading-row__status adf-file-uploading-row__status--done"
|
|
||||||
>
|
|
||||||
check_circle
|
|
||||||
</mat-icon>
|
|
||||||
|
|
||||||
<mat-icon
|
|
||||||
mat-list-icon
|
|
||||||
class="adf-file-uploading-row__action adf-file-uploading-row__action--remove"
|
|
||||||
>
|
|
||||||
remove_circle
|
|
||||||
</mat-icon>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
*ngIf="file.status === FileUploadStatus.Pending"
|
|
||||||
(click)="onCancel(file)"
|
|
||||||
class="adf-file-uploading-row__group adf-file-uploading-row__group--toggle"
|
|
||||||
>
|
|
||||||
<mat-icon
|
|
||||||
mat-list-icon
|
|
||||||
class="adf-file-uploading-row__status adf-file-uploading-row__status--pending"
|
|
||||||
>
|
|
||||||
schedule
|
|
||||||
</mat-icon>
|
|
||||||
|
|
||||||
<mat-icon
|
|
||||||
mat-list-icon
|
|
||||||
class="adf-file-uploading-row__action adf-file-uploading-row__action--remove"
|
|
||||||
>
|
|
||||||
remove_circle
|
|
||||||
</mat-icon>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--todo: move to ADF ACA-2051 -->
|
|
||||||
<div
|
|
||||||
*ngIf="file.status === FileUploadStatus.Error"
|
|
||||||
class="adf-file-uploading-row__block adf-file-uploading-row__status--error"
|
|
||||||
>
|
|
||||||
<mat-icon mat-list-icon [attr.title]="error?.message | translate">
|
|
||||||
report_problem
|
|
||||||
</mat-icon>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
*ngIf="
|
|
||||||
file.status === FileUploadStatus.Cancelled ||
|
|
||||||
file.status === FileUploadStatus.Aborted ||
|
|
||||||
file.status === FileUploadStatus.Deleted
|
|
||||||
"
|
|
||||||
class="adf-file-uploading-row__block adf-file-uploading-row__status--cancelled"
|
|
||||||
>
|
|
||||||
{{ 'ADF_FILE_UPLOAD.STATUS.FILE_CANCELED_STATUS' | translate }}
|
|
||||||
</div>
|
|
||||||
<div></div>
|
|
||||||
</div>
|
|
@@ -1,47 +0,0 @@
|
|||||||
/*!
|
|
||||||
* @license
|
|
||||||
* Copyright 2016 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 { FileModel, FileUploadStatus } from '@alfresco/adf-core';
|
|
||||||
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-file-uploading-list-row',
|
|
||||||
templateUrl: './file-uploading-list-row.component.html'
|
|
||||||
})
|
|
||||||
export class FileUploadingListRowComponent {
|
|
||||||
@Input()
|
|
||||||
file: FileModel;
|
|
||||||
|
|
||||||
@Input()
|
|
||||||
error: any;
|
|
||||||
|
|
||||||
@Output()
|
|
||||||
cancel: EventEmitter<FileModel> = new EventEmitter<FileModel>();
|
|
||||||
|
|
||||||
@Output()
|
|
||||||
remove: EventEmitter<FileModel> = new EventEmitter<FileModel>();
|
|
||||||
|
|
||||||
FileUploadStatus = FileUploadStatus;
|
|
||||||
|
|
||||||
onCancel(file: FileModel): void {
|
|
||||||
this.cancel.emit(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
onRemove(file: FileModel): void {
|
|
||||||
this.remove.emit(file);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,4 +0,0 @@
|
|||||||
<div class="upload-list">
|
|
||||||
<ng-template ngFor [ngForOf]="files" [ngForTemplate]="template">
|
|
||||||
</ng-template>
|
|
||||||
</div>
|
|
@@ -1,180 +0,0 @@
|
|||||||
/*!
|
|
||||||
* @license
|
|
||||||
* Copyright 2016 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 {
|
|
||||||
FileModel,
|
|
||||||
FileUploadStatus,
|
|
||||||
NodesApiService,
|
|
||||||
TranslationService,
|
|
||||||
UploadService
|
|
||||||
} from '@alfresco/adf-core';
|
|
||||||
import {
|
|
||||||
Component,
|
|
||||||
ContentChild,
|
|
||||||
Input,
|
|
||||||
Output,
|
|
||||||
TemplateRef,
|
|
||||||
EventEmitter
|
|
||||||
} from '@angular/core';
|
|
||||||
import { Observable, forkJoin, of } from 'rxjs';
|
|
||||||
import { map, catchError } from 'rxjs/operators';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-file-uploading-list',
|
|
||||||
templateUrl: './file-uploading-list.component.html'
|
|
||||||
})
|
|
||||||
export class FileUploadingListComponent {
|
|
||||||
FileUploadStatus = FileUploadStatus;
|
|
||||||
|
|
||||||
@ContentChild(TemplateRef)
|
|
||||||
template: any;
|
|
||||||
|
|
||||||
@Input()
|
|
||||||
files: FileModel[] = [];
|
|
||||||
|
|
||||||
/** Emitted when a file in the list has an error. */
|
|
||||||
@Output()
|
|
||||||
error: EventEmitter<any> = new EventEmitter();
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
private uploadService: UploadService,
|
|
||||||
private nodesApi: NodesApiService,
|
|
||||||
private translateService: TranslationService
|
|
||||||
) {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cancel file upload
|
|
||||||
*
|
|
||||||
* @param file File model to cancel upload for.
|
|
||||||
*
|
|
||||||
* @memberOf FileUploadingListComponent
|
|
||||||
*/
|
|
||||||
cancelFile(file: FileModel): void {
|
|
||||||
this.uploadService.cancelUpload(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
removeFile(file: FileModel): void {
|
|
||||||
this.deleteNode(file).subscribe(() => {
|
|
||||||
if (file.status === FileUploadStatus.Error) {
|
|
||||||
this.notifyError(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.uploadService.cancelUpload(file);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call the appropriate method for each file, depending on state
|
|
||||||
*/
|
|
||||||
cancelAllFiles(): void {
|
|
||||||
this.getUploadingFiles().forEach(file =>
|
|
||||||
this.uploadService.cancelUpload(file)
|
|
||||||
);
|
|
||||||
|
|
||||||
const deletedFiles = this.files
|
|
||||||
.filter(file => file.status === FileUploadStatus.Complete)
|
|
||||||
.map(file => this.deleteNode(file));
|
|
||||||
|
|
||||||
forkJoin(...deletedFiles).subscribe((files: FileModel[]) => {
|
|
||||||
const errors = files.filter(
|
|
||||||
file => file.status === FileUploadStatus.Error
|
|
||||||
);
|
|
||||||
|
|
||||||
if (errors.length) {
|
|
||||||
this.notifyError(...errors);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.uploadService.cancelUpload(...files);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if all the files are uploaded false if there is at least one file in Progress | Starting | Pending
|
|
||||||
*/
|
|
||||||
isUploadCompleted(): boolean {
|
|
||||||
return (
|
|
||||||
!this.isUploadCancelled() &&
|
|
||||||
Boolean(this.files.length) &&
|
|
||||||
!this.files.some(
|
|
||||||
({ status }) =>
|
|
||||||
status === FileUploadStatus.Starting ||
|
|
||||||
status === FileUploadStatus.Progress ||
|
|
||||||
status === FileUploadStatus.Pending
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if all the files are Cancelled | Aborted | Error. false if there is at least one file in uploading states
|
|
||||||
*/
|
|
||||||
isUploadCancelled(): boolean {
|
|
||||||
return (
|
|
||||||
!!this.files.length &&
|
|
||||||
this.files.every(
|
|
||||||
({ status }) =>
|
|
||||||
status === FileUploadStatus.Aborted ||
|
|
||||||
status === FileUploadStatus.Cancelled ||
|
|
||||||
status === FileUploadStatus.Deleted
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private deleteNode(file: FileModel): Observable<FileModel> {
|
|
||||||
const { id } = file.data.entry;
|
|
||||||
|
|
||||||
return this.nodesApi.deleteNode(id, { permanent: true }).pipe(
|
|
||||||
map(() => {
|
|
||||||
file.status = FileUploadStatus.Deleted;
|
|
||||||
return file;
|
|
||||||
}),
|
|
||||||
catchError(() => {
|
|
||||||
file.status = FileUploadStatus.Error;
|
|
||||||
return of(file);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private notifyError(...files: FileModel[]) {
|
|
||||||
let messageError: string = null;
|
|
||||||
|
|
||||||
if (files.length === 1) {
|
|
||||||
messageError = this.translateService.instant(
|
|
||||||
'FILE_UPLOAD.MESSAGES.REMOVE_FILE_ERROR',
|
|
||||||
{ fileName: files[0].name }
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
messageError = this.translateService.instant(
|
|
||||||
'FILE_UPLOAD.MESSAGES.REMOVE_FILES_ERROR',
|
|
||||||
{ total: files.length }
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.error.emit(messageError);
|
|
||||||
}
|
|
||||||
|
|
||||||
private getUploadingFiles() {
|
|
||||||
return this.files.filter(item => {
|
|
||||||
if (
|
|
||||||
item.status === FileUploadStatus.Pending ||
|
|
||||||
item.status === FileUploadStatus.Progress ||
|
|
||||||
item.status === FileUploadStatus.Starting
|
|
||||||
) {
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,46 +0,0 @@
|
|||||||
/*!
|
|
||||||
* @license
|
|
||||||
* Alfresco Example Content Application
|
|
||||||
*
|
|
||||||
* Copyright (C) 2005 - 2018 Alfresco Software Limited
|
|
||||||
*
|
|
||||||
* This file is part of the Alfresco Example Content Application.
|
|
||||||
* If the software was purchased under a paid Alfresco license, the terms of
|
|
||||||
* the paid license agreement will prevail. Otherwise, the software is
|
|
||||||
* provided under the following open source license terms:
|
|
||||||
*
|
|
||||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public License
|
|
||||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { CoreModule } from '@alfresco/adf-core';
|
|
||||||
import { FileUploadingDialogComponent } from './file-uploading-dialog.component';
|
|
||||||
import { FileUploadingListRowComponent } from './file-uploading-list-row.component';
|
|
||||||
import { FileUploadingListComponent } from './file-uploading-list.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [CommonModule, CoreModule.forChild()],
|
|
||||||
declarations: [
|
|
||||||
FileUploadingDialogComponent,
|
|
||||||
FileUploadingListRowComponent,
|
|
||||||
FileUploadingListComponent
|
|
||||||
],
|
|
||||||
exports: [
|
|
||||||
FileUploadingDialogComponent,
|
|
||||||
FileUploadingListRowComponent,
|
|
||||||
FileUploadingListComponent
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class AppUploadingDialogModule {}
|
|
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
import { Component, Inject, ViewEncapsulation } from '@angular/core';
|
import { Component, Inject, ViewEncapsulation } from '@angular/core';
|
||||||
import { MAT_DIALOG_DATA } from '@angular/material';
|
import { MAT_DIALOG_DATA } from '@angular/material';
|
||||||
import { MinimalNodeEntryEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppStore } from '../../store/states/app.state';
|
import { AppStore } from '../../store/states/app.state';
|
||||||
import { SnackbarErrorAction } from '../../store/actions';
|
import { SnackbarErrorAction } from '../../store/actions';
|
||||||
|
@@ -31,7 +31,7 @@ import { Subscription } from 'rxjs';
|
|||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppStore } from '../store/states/app.state';
|
import { AppStore } from '../store/states/app.state';
|
||||||
import { SetSelectedNodesAction } from '../store/actions';
|
import { SetSelectedNodesAction } from '../store/actions';
|
||||||
import { MinimalNodeEntryEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: '[acaDocumentList]'
|
selector: '[acaDocumentList]'
|
||||||
|
@@ -123,7 +123,7 @@ describe('LibraryFavoriteDirective', () => {
|
|||||||
|
|
||||||
it('should call removeFavoriteSite() on click event when selection is not a favorite', async(() => {
|
it('should call removeFavoriteSite() on click event when selection is not a favorite', async(() => {
|
||||||
spyOn(api.peopleApi, 'getFavoriteSite').and.returnValue(Promise.resolve());
|
spyOn(api.peopleApi, 'getFavoriteSite').and.returnValue(Promise.resolve());
|
||||||
spyOn(api.peopleApi, 'removeFavoriteSite').and.returnValue(
|
spyOn(api.favoritesApi, 'removeFavoriteSite').and.returnValue(
|
||||||
Promise.resolve()
|
Promise.resolve()
|
||||||
);
|
);
|
||||||
component.selection = selection;
|
component.selection = selection;
|
||||||
@@ -138,7 +138,7 @@ describe('LibraryFavoriteDirective', () => {
|
|||||||
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
expect(api.peopleApi.removeFavoriteSite).toHaveBeenCalled();
|
expect(api.favoritesApi.removeFavoriteSite).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
@@ -31,7 +31,7 @@ import {
|
|||||||
Output,
|
Output,
|
||||||
EventEmitter
|
EventEmitter
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { SiteBody, FavoriteBody, FavoriteEntry, Site } from 'alfresco-js-api';
|
import { SiteBody, FavoriteBody, FavoriteEntry, Site } from '@alfresco/js-api';
|
||||||
import { AlfrescoApiService } from '@alfresco/adf-core';
|
import { AlfrescoApiService } from '@alfresco/adf-core';
|
||||||
|
|
||||||
interface LibraryEntity {
|
interface LibraryEntity {
|
||||||
@@ -119,7 +119,7 @@ export class LibraryFavoriteDirective implements OnChanges {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private removeFavorite(favoriteId: string) {
|
private removeFavorite(favoriteId: string) {
|
||||||
this.alfrescoApiService.peopleApi
|
this.alfrescoApiService.favoritesApi
|
||||||
.removeFavoriteSite('-me-', favoriteId)
|
.removeFavoriteSite('-me-', favoriteId)
|
||||||
.then((libraryBody: SiteBody) => {
|
.then((libraryBody: SiteBody) => {
|
||||||
this.targetLibrary.isFavorite = false;
|
this.targetLibrary.isFavorite = false;
|
||||||
|
@@ -31,7 +31,7 @@ import {
|
|||||||
OnChanges,
|
OnChanges,
|
||||||
Output
|
Output
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { SiteEntry, SiteMembershipRequestBody } from 'alfresco-js-api';
|
import { SiteEntry, SiteMembershipRequestBody } from '@alfresco/js-api';
|
||||||
import { AlfrescoApiService } from '@alfresco/adf-core';
|
import { AlfrescoApiService } from '@alfresco/adf-core';
|
||||||
import { BehaviorSubject, from } from 'rxjs';
|
import { BehaviorSubject, from } from 'rxjs';
|
||||||
|
|
||||||
|
@@ -178,7 +178,7 @@ export function canDownloadSelection(
|
|||||||
...args: RuleParameter[]
|
...args: RuleParameter[]
|
||||||
): boolean {
|
): boolean {
|
||||||
if (!context.selection.isEmpty) {
|
if (!context.selection.isEmpty) {
|
||||||
return context.selection.nodes.every(node => {
|
return context.selection.nodes.every((node: any) => {
|
||||||
return (
|
return (
|
||||||
node.entry &&
|
node.entry &&
|
||||||
(node.entry.isFile || node.entry.isFolder || !!node.entry.nodeId)
|
(node.entry.isFile || node.entry.isFolder || !!node.entry.nodeId)
|
||||||
|
@@ -41,7 +41,7 @@ import {
|
|||||||
SiteBody,
|
SiteBody,
|
||||||
SiteEntry,
|
SiteEntry,
|
||||||
FavoriteBody
|
FavoriteBody
|
||||||
} from 'alfresco-js-api';
|
} from '@alfresco/js-api';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
@@ -81,13 +81,13 @@ export class ContentApiService {
|
|||||||
return from(this.api.nodesApi.getNode(nodeId, queryOptions));
|
return from(this.api.nodesApi.getNode(nodeId, queryOptions));
|
||||||
}
|
}
|
||||||
|
|
||||||
getNodeInfo(nodeId: string, options: any = {}): Observable<Node> {
|
getNodeInfo(nodeId: string, options?: any): Observable<Node> {
|
||||||
const defaults = {
|
const defaults = {
|
||||||
include: ['isFavorite', 'allowableOperations']
|
include: ['isFavorite', 'allowableOperations']
|
||||||
};
|
};
|
||||||
const queryOptions = Object.assign(defaults, options);
|
const queryOptions = Object.assign(defaults, options || {});
|
||||||
|
|
||||||
return from(this.api.nodesApi.getNodeInfo(nodeId, queryOptions));
|
return from((<any>this.api.nodesApi).getNodeInfo(nodeId, queryOptions));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -254,7 +254,7 @@ export class ContentApiService {
|
|||||||
|
|
||||||
addFavorite(nodes: Array<MinimalNodeEntity>): Observable<any> {
|
addFavorite(nodes: Array<MinimalNodeEntity>): Observable<any> {
|
||||||
const payload: FavoriteBody[] = nodes.map(node => {
|
const payload: FavoriteBody[] = nodes.map(node => {
|
||||||
const { isFolder, nodeId, id } = node.entry;
|
const { isFolder, nodeId, id } = <any>node.entry;
|
||||||
const siteId = node.entry['guid'];
|
const siteId = node.entry['guid'];
|
||||||
const type = siteId ? 'site' : isFolder ? 'folder' : 'file';
|
const type = siteId ? 'site' : isFolder ? 'folder' : 'file';
|
||||||
const guid = siteId || nodeId || id;
|
const guid = siteId || nodeId || id;
|
||||||
@@ -274,7 +274,7 @@ export class ContentApiService {
|
|||||||
removeFavorite(nodes: Array<MinimalNodeEntity>): Observable<any> {
|
removeFavorite(nodes: Array<MinimalNodeEntity>): Observable<any> {
|
||||||
return from(
|
return from(
|
||||||
Promise.all(
|
Promise.all(
|
||||||
nodes.map(node => {
|
nodes.map((node: any) => {
|
||||||
const id = node.entry.nodeId || node.entry.id;
|
const id = node.entry.nodeId || node.entry.id;
|
||||||
return this.api.favoritesApi.removeFavoriteSite('-me-', id);
|
return this.api.favoritesApi.removeFavoriteSite('-me-', id);
|
||||||
})
|
})
|
||||||
|
@@ -91,7 +91,9 @@ describe('ContentManagementService', () => {
|
|||||||
of('OPERATION.SUCCES.CONTENT.COPY')
|
of('OPERATION.SUCCES.CONTENT.COPY')
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: 'node-to-copy-id', name: 'name' } }];
|
const selection = [
|
||||||
|
<any>{ entry: { id: 'node-to-copy-id', name: 'name' } }
|
||||||
|
];
|
||||||
const createdItems = [{ entry: { id: 'copy-id', name: 'name' } }];
|
const createdItems = [{ entry: { id: 'copy-id', name: 'name' } }];
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
@@ -109,16 +111,16 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: 'node-to-copy-1', name: 'name1' } },
|
<any>{ entry: { id: 'node-to-copy-1', name: 'name1' } },
|
||||||
{ entry: { id: 'node-to-copy-2', name: 'name2' } }
|
<any>{ entry: { id: 'node-to-copy-2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
const createdItems = [
|
const createdItems = [
|
||||||
{ entry: { id: 'copy-of-node-1', name: 'name1' } },
|
<any>{ entry: { id: 'copy-of-node-1', name: 'name1' } },
|
||||||
{ entry: { id: 'copy-of-node-2', name: 'name2' } }
|
<any>{ entry: { id: 'copy-of-node-2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
nodeActions.contentCopied.next(<any>createdItems);
|
nodeActions.contentCopied.next(createdItems);
|
||||||
|
|
||||||
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
||||||
expect(snackBar.open['calls'].argsFor(0)[0]).toBe(
|
expect(snackBar.open['calls'].argsFor(0)[0]).toBe(
|
||||||
@@ -132,13 +134,15 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: 'node-to-copy-1', name: 'name1' } },
|
<any>{ entry: { id: 'node-to-copy-1', name: 'name1' } },
|
||||||
{ entry: { id: 'node-to-copy-2', name: 'name2' } }
|
<any>{ entry: { id: 'node-to-copy-2', name: 'name2' } }
|
||||||
|
];
|
||||||
|
const createdItems = [
|
||||||
|
<any>{ entry: { id: 'copy-of-node-1', name: 'name1' } }
|
||||||
];
|
];
|
||||||
const createdItems = [{ entry: { id: 'copy-of-node-1', name: 'name1' } }];
|
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
nodeActions.contentCopied.next(<any>createdItems);
|
nodeActions.contentCopied.next(createdItems);
|
||||||
|
|
||||||
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
||||||
expect(snackBar.open['calls'].argsFor(0)[0]).toBe(
|
expect(snackBar.open['calls'].argsFor(0)[0]).toBe(
|
||||||
@@ -152,17 +156,17 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: 'node-to-copy-0', name: 'name0' } },
|
<any>{ entry: { id: 'node-to-copy-0', name: 'name0' } },
|
||||||
{ entry: { id: 'node-to-copy-1', name: 'name1' } },
|
<any>{ entry: { id: 'node-to-copy-1', name: 'name1' } },
|
||||||
{ entry: { id: 'node-to-copy-2', name: 'name2' } }
|
<any>{ entry: { id: 'node-to-copy-2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
const createdItems = [
|
const createdItems = [
|
||||||
{ entry: { id: 'copy-of-node-0', name: 'name0' } },
|
<any>{ entry: { id: 'copy-of-node-0', name: 'name0' } },
|
||||||
{ entry: { id: 'copy-of-node-1', name: 'name1' } }
|
<any>{ entry: { id: 'copy-of-node-1', name: 'name1' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
nodeActions.contentCopied.next(<any>createdItems);
|
nodeActions.contentCopied.next(createdItems);
|
||||||
|
|
||||||
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
||||||
expect(snackBar.open['calls'].argsFor(0)[0]).toBe(
|
expect(snackBar.open['calls'].argsFor(0)[0]).toBe(
|
||||||
@@ -176,9 +180,9 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: 'node-to-copy-0', name: 'name0' } },
|
<any>{ entry: { id: 'node-to-copy-0', name: 'name0' } },
|
||||||
{ entry: { id: 'node-to-copy-1', name: 'name1' } },
|
<any>{ entry: { id: 'node-to-copy-1', name: 'name1' } },
|
||||||
{ entry: { id: 'node-to-copy-2', name: 'name2' } }
|
<any>{ entry: { id: 'node-to-copy-2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
const createdItems = [];
|
const createdItems = [];
|
||||||
|
|
||||||
@@ -196,7 +200,7 @@ describe('ContentManagementService', () => {
|
|||||||
of('OPERATION.SUCCES.CONTENT.COPY')
|
of('OPERATION.SUCCES.CONTENT.COPY')
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: 'node-to-copy', name: 'name' } }];
|
const selection = [<any>{ entry: { id: 'node-to-copy', name: 'name' } }];
|
||||||
const createdItems = [];
|
const createdItems = [];
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
@@ -211,7 +215,9 @@ describe('ContentManagementService', () => {
|
|||||||
it('notifies error if success message was not emitted', () => {
|
it('notifies error if success message was not emitted', () => {
|
||||||
spyOn(nodeActions, 'copyNodes').and.returnValue(of(''));
|
spyOn(nodeActions, 'copyNodes').and.returnValue(of(''));
|
||||||
|
|
||||||
const selection = [{ entry: { id: 'node-to-copy-id', name: 'name' } }];
|
const selection = [
|
||||||
|
<any>{ entry: { id: 'node-to-copy-id', name: 'name' } }
|
||||||
|
];
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
nodeActions.contentCopied.next();
|
nodeActions.contentCopied.next();
|
||||||
@@ -227,7 +233,7 @@ describe('ContentManagementService', () => {
|
|||||||
throwError(new Error(JSON.stringify({ error: { statusCode: 403 } })))
|
throwError(new Error(JSON.stringify({ error: { statusCode: 403 } })))
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name' } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name' } }];
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
|
|
||||||
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
||||||
@@ -241,7 +247,7 @@ describe('ContentManagementService', () => {
|
|||||||
throwError(new Error(JSON.stringify({ error: { statusCode: 404 } })))
|
throwError(new Error(JSON.stringify({ error: { statusCode: 404 } })))
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name' } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name' } }];
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
|
|
||||||
@@ -266,7 +272,9 @@ describe('ContentManagementService', () => {
|
|||||||
it('should delete the newly created node on Undo action', () => {
|
it('should delete the newly created node on Undo action', () => {
|
||||||
spyOn(contentApi, 'deleteNode').and.returnValue(of(null));
|
spyOn(contentApi, 'deleteNode').and.returnValue(of(null));
|
||||||
|
|
||||||
const selection = [{ entry: { id: 'node-to-copy-id', name: 'name' } }];
|
const selection = [
|
||||||
|
<any>{ entry: { id: 'node-to-copy-id', name: 'name' } }
|
||||||
|
];
|
||||||
const createdItems = [{ entry: { id: 'copy-id', name: 'name' } }];
|
const createdItems = [{ entry: { id: 'copy-id', name: 'name' } }];
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
@@ -289,8 +297,8 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: 'node-to-copy-1', name: 'name1' } },
|
<any>{ entry: { id: 'node-to-copy-1', name: 'name1' } },
|
||||||
{
|
<any>{
|
||||||
entry: {
|
entry: {
|
||||||
id: 'node-to-copy-2',
|
id: 'node-to-copy-2',
|
||||||
name: 'folder-with-name-already-existing-on-destination'
|
name: 'folder-with-name-already-existing-on-destination'
|
||||||
@@ -330,11 +338,13 @@ describe('ContentManagementService', () => {
|
|||||||
it('notifies when error occurs on Undo action', () => {
|
it('notifies when error occurs on Undo action', () => {
|
||||||
spyOn(contentApi, 'deleteNode').and.returnValue(throwError(null));
|
spyOn(contentApi, 'deleteNode').and.returnValue(throwError(null));
|
||||||
|
|
||||||
const selection = [{ entry: { id: 'node-to-copy-id', name: 'name' } }];
|
const selection = [
|
||||||
const createdItems = [{ entry: { id: 'copy-id', name: 'name' } }];
|
<any>{ entry: { id: 'node-to-copy-id', name: 'name' } }
|
||||||
|
];
|
||||||
|
const createdItems = [<any>{ entry: { id: 'copy-id', name: 'name' } }];
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
nodeActions.contentCopied.next(<any>createdItems);
|
nodeActions.contentCopied.next(createdItems);
|
||||||
|
|
||||||
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
||||||
expect(contentApi.deleteNode).toHaveBeenCalled();
|
expect(contentApi.deleteNode).toHaveBeenCalled();
|
||||||
@@ -348,11 +358,13 @@ describe('ContentManagementService', () => {
|
|||||||
throwError(new Error('oops!'))
|
throwError(new Error('oops!'))
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: 'node-to-copy-id', name: 'name' } }];
|
const selection = [
|
||||||
const createdItems = [{ entry: { id: 'copy-id', name: 'name' } }];
|
<any>{ entry: { id: 'node-to-copy-id', name: 'name' } }
|
||||||
|
];
|
||||||
|
const createdItems = [<any>{ entry: { id: 'copy-id', name: 'name' } }];
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
nodeActions.contentCopied.next(<any>createdItems);
|
nodeActions.contentCopied.next(createdItems);
|
||||||
|
|
||||||
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
||||||
expect(contentApi.deleteNode).toHaveBeenCalled();
|
expect(contentApi.deleteNode).toHaveBeenCalled();
|
||||||
@@ -366,11 +378,13 @@ describe('ContentManagementService', () => {
|
|||||||
throwError(new Error(JSON.stringify({ error: { statusCode: 403 } })))
|
throwError(new Error(JSON.stringify({ error: { statusCode: 403 } })))
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: 'node-to-copy-id', name: 'name' } }];
|
const selection = [
|
||||||
const createdItems = [{ entry: { id: 'copy-id', name: 'name' } }];
|
<any>{ entry: { id: 'node-to-copy-id', name: 'name' } }
|
||||||
|
];
|
||||||
|
const createdItems = [<any>{ entry: { id: 'copy-id', name: 'name' } }];
|
||||||
|
|
||||||
store.dispatch(new CopyNodesAction(selection));
|
store.dispatch(new CopyNodesAction(selection));
|
||||||
nodeActions.contentCopied.next(<any>createdItems);
|
nodeActions.contentCopied.next(createdItems);
|
||||||
|
|
||||||
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
expect(nodeActions.copyNodes).toHaveBeenCalled();
|
||||||
expect(contentApi.deleteNode).toHaveBeenCalled();
|
expect(contentApi.deleteNode).toHaveBeenCalled();
|
||||||
@@ -412,7 +426,7 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
spyOn(nodeActions, 'processResponse').and.returnValue(moveResponse);
|
spyOn(nodeActions, 'processResponse').and.returnValue(moveResponse);
|
||||||
|
|
||||||
const selection = node;
|
const selection: any = node;
|
||||||
store.dispatch(new MoveNodesAction(selection));
|
store.dispatch(new MoveNodesAction(selection));
|
||||||
|
|
||||||
nodeActions.contentMoved.next(moveResponse);
|
nodeActions.contentMoved.next(moveResponse);
|
||||||
@@ -439,7 +453,7 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
spyOn(nodeActions, 'processResponse').and.returnValue(moveResponse);
|
spyOn(nodeActions, 'processResponse').and.returnValue(moveResponse);
|
||||||
|
|
||||||
const selection = nodes;
|
const selection: any = nodes;
|
||||||
|
|
||||||
store.dispatch(new MoveNodesAction(selection));
|
store.dispatch(new MoveNodesAction(selection));
|
||||||
nodeActions.contentMoved.next(moveResponse);
|
nodeActions.contentMoved.next(moveResponse);
|
||||||
@@ -451,7 +465,7 @@ describe('ContentManagementService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('notifies partial move of a node', () => {
|
it('notifies partial move of a node', () => {
|
||||||
const nodes = [{ entry: { id: '1', name: 'name' } }];
|
const nodes = [<any>{ entry: { id: '1', name: 'name' } }];
|
||||||
const moveResponse = {
|
const moveResponse = {
|
||||||
succeeded: [],
|
succeeded: [],
|
||||||
failed: [],
|
failed: [],
|
||||||
@@ -476,8 +490,8 @@ describe('ContentManagementService', () => {
|
|||||||
|
|
||||||
it('notifies partial move of multiple nodes', () => {
|
it('notifies partial move of multiple nodes', () => {
|
||||||
const nodes = [
|
const nodes = [
|
||||||
{ entry: { id: '1', name: 'name' } },
|
<any>{ entry: { id: '1', name: 'name' } },
|
||||||
{ entry: { id: '2', name: 'name2' } }
|
<any>{ entry: { id: '2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
const moveResponse = {
|
const moveResponse = {
|
||||||
succeeded: [],
|
succeeded: [],
|
||||||
@@ -503,8 +517,8 @@ describe('ContentManagementService', () => {
|
|||||||
|
|
||||||
it('notifies successful move and the number of nodes that could not be moved', () => {
|
it('notifies successful move and the number of nodes that could not be moved', () => {
|
||||||
const nodes = [
|
const nodes = [
|
||||||
{ entry: { id: '1', name: 'name' } },
|
<any>{ entry: { id: '1', name: 'name' } },
|
||||||
{ entry: { id: '2', name: 'name2' } }
|
<any>{ entry: { id: '2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
const moveResponse = {
|
const moveResponse = {
|
||||||
succeeded: [nodes[0]],
|
succeeded: [nodes[0]],
|
||||||
@@ -529,8 +543,8 @@ describe('ContentManagementService', () => {
|
|||||||
|
|
||||||
it('notifies successful move and the number of partially moved ones', () => {
|
it('notifies successful move and the number of partially moved ones', () => {
|
||||||
const nodes = [
|
const nodes = [
|
||||||
{ entry: { id: '1', name: 'name' } },
|
<any>{ entry: { id: '1', name: 'name' } },
|
||||||
{ entry: { id: '2', name: 'name2' } }
|
<any>{ entry: { id: '2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
const moveResponse = {
|
const moveResponse = {
|
||||||
succeeded: [nodes[0]],
|
succeeded: [nodes[0]],
|
||||||
@@ -553,7 +567,7 @@ describe('ContentManagementService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('notifies error if success message was not emitted', () => {
|
it('notifies error if success message was not emitted', () => {
|
||||||
const nodes = [{ entry: { id: 'node-to-move-id', name: 'name' } }];
|
const nodes = [<any>{ entry: { id: 'node-to-move-id', name: 'name' } }];
|
||||||
const moveResponse = {
|
const moveResponse = {
|
||||||
succeeded: [],
|
succeeded: [],
|
||||||
failed: [],
|
failed: [],
|
||||||
@@ -576,7 +590,7 @@ describe('ContentManagementService', () => {
|
|||||||
throwError(new Error(JSON.stringify({ error: { statusCode: 403 } })))
|
throwError(new Error(JSON.stringify({ error: { statusCode: 403 } })))
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name' } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name' } }];
|
||||||
store.dispatch(new MoveNodesAction(selection));
|
store.dispatch(new MoveNodesAction(selection));
|
||||||
|
|
||||||
expect(nodeActions.moveNodes).toHaveBeenCalled();
|
expect(nodeActions.moveNodes).toHaveBeenCalled();
|
||||||
@@ -590,7 +604,7 @@ describe('ContentManagementService', () => {
|
|||||||
throwError(new Error(JSON.stringify({ error: { statusCode: 404 } })))
|
throwError(new Error(JSON.stringify({ error: { statusCode: 404 } })))
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name' } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name' } }];
|
||||||
store.dispatch(new MoveNodesAction(selection));
|
store.dispatch(new MoveNodesAction(selection));
|
||||||
|
|
||||||
expect(nodeActions.moveNodes).toHaveBeenCalled();
|
expect(nodeActions.moveNodes).toHaveBeenCalled();
|
||||||
@@ -604,7 +618,7 @@ describe('ContentManagementService', () => {
|
|||||||
throwError(new Error(JSON.stringify({ error: { statusCode: 409 } })))
|
throwError(new Error(JSON.stringify({ error: { statusCode: 409 } })))
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name' } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name' } }];
|
||||||
store.dispatch(new MoveNodesAction(selection));
|
store.dispatch(new MoveNodesAction(selection));
|
||||||
|
|
||||||
expect(nodeActions.moveNodes).toHaveBeenCalled();
|
expect(nodeActions.moveNodes).toHaveBeenCalled();
|
||||||
@@ -614,7 +628,7 @@ describe('ContentManagementService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('notifies error if move response has only failed items', () => {
|
it('notifies error if move response has only failed items', () => {
|
||||||
const nodes = [{ entry: { id: '1', name: 'name' } }];
|
const nodes = [<any>{ entry: { id: '1', name: 'name' } }];
|
||||||
const moveResponse = {
|
const moveResponse = {
|
||||||
succeeded: [],
|
succeeded: [],
|
||||||
failed: [{}],
|
failed: [{}],
|
||||||
@@ -668,7 +682,7 @@ describe('ContentManagementService', () => {
|
|||||||
const node = {
|
const node = {
|
||||||
entry: { id: 'node-to-move-id', name: 'name', parentId: initialParent }
|
entry: { id: 'node-to-move-id', name: 'name', parentId: initialParent }
|
||||||
};
|
};
|
||||||
const selection = [node];
|
const selection = [<any>node];
|
||||||
|
|
||||||
spyOn(nodeActions, 'moveNodeAction').and.returnValue(of({}));
|
spyOn(nodeActions, 'moveNodeAction').and.returnValue(of({}));
|
||||||
|
|
||||||
@@ -699,7 +713,7 @@ describe('ContentManagementService', () => {
|
|||||||
parentId: initialParent
|
parentId: initialParent
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const selection = [node];
|
const selection = [<any>node];
|
||||||
|
|
||||||
spyOn(nodeActions, 'moveNodeAction').and.returnValue(of({}));
|
spyOn(nodeActions, 'moveNodeAction').and.returnValue(of({}));
|
||||||
|
|
||||||
@@ -734,7 +748,7 @@ describe('ContentManagementService', () => {
|
|||||||
isFolder: true
|
isFolder: true
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const selection = [node];
|
const selection = [<any>node];
|
||||||
|
|
||||||
const itemMoved = {}; // folder was empty
|
const itemMoved = {}; // folder was empty
|
||||||
nodeActions.moveDeletedEntries = [node]; // folder got deleted
|
nodeActions.moveDeletedEntries = [node]; // folder got deleted
|
||||||
@@ -770,7 +784,7 @@ describe('ContentManagementService', () => {
|
|||||||
parentId: initialParent
|
parentId: initialParent
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const selection = [node];
|
const selection = [<any>node];
|
||||||
|
|
||||||
const afterMoveParentId = 'parent-id-1';
|
const afterMoveParentId = 'parent-id-1';
|
||||||
const childMoved = {
|
const childMoved = {
|
||||||
@@ -805,7 +819,7 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const initialParent = 'parent-id-0';
|
const initialParent = 'parent-id-0';
|
||||||
const node = {
|
const node: any = {
|
||||||
entry: { id: 'node-to-move-id', name: 'name', parentId: initialParent }
|
entry: { id: 'node-to-move-id', name: 'name', parentId: initialParent }
|
||||||
};
|
};
|
||||||
const selection = [node];
|
const selection = [node];
|
||||||
@@ -841,7 +855,7 @@ describe('ContentManagementService', () => {
|
|||||||
const node = {
|
const node = {
|
||||||
entry: { id: 'node-to-move-id', name: 'name', parentId: initialParent }
|
entry: { id: 'node-to-move-id', name: 'name', parentId: initialParent }
|
||||||
};
|
};
|
||||||
const selection = [node];
|
const selection = [<any>node];
|
||||||
|
|
||||||
const childMoved = {
|
const childMoved = {
|
||||||
entry: { id: 'child-of-node-to-move-id', name: 'child-name' }
|
entry: { id: 'child-of-node-to-move-id', name: 'child-name' }
|
||||||
@@ -873,7 +887,7 @@ describe('ContentManagementService', () => {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name1' } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name1' } }];
|
||||||
|
|
||||||
store.dispatch(new DeleteNodesAction(selection));
|
store.dispatch(new DeleteNodesAction(selection));
|
||||||
}));
|
}));
|
||||||
@@ -888,7 +902,7 @@ describe('ContentManagementService', () => {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name1' } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name1' } }];
|
||||||
|
|
||||||
store.dispatch(new DeleteNodesAction(selection));
|
store.dispatch(new DeleteNodesAction(selection));
|
||||||
}));
|
}));
|
||||||
@@ -904,8 +918,8 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: '1', name: 'name1' } },
|
<any>{ entry: { id: '1', name: 'name1' } },
|
||||||
{ entry: { id: '2', name: 'name2' } }
|
<any>{ entry: { id: '2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new DeleteNodesAction(selection));
|
store.dispatch(new DeleteNodesAction(selection));
|
||||||
@@ -922,8 +936,8 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: '1', name: 'name1' } },
|
<any>{ entry: { id: '1', name: 'name1' } },
|
||||||
{ entry: { id: '2', name: 'name2' } }
|
<any>{ entry: { id: '2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new DeleteNodesAction(selection));
|
store.dispatch(new DeleteNodesAction(selection));
|
||||||
@@ -946,8 +960,8 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: '1', name: 'name1' } },
|
<any>{ entry: { id: '1', name: 'name1' } },
|
||||||
{ entry: { id: '2', name: 'name2' } }
|
<any>{ entry: { id: '2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new DeleteNodesAction(selection));
|
store.dispatch(new DeleteNodesAction(selection));
|
||||||
@@ -976,9 +990,9 @@ describe('ContentManagementService', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: '1', name: 'name1' } },
|
<any>{ entry: { id: '1', name: 'name1' } },
|
||||||
{ entry: { id: '2', name: 'name2' } },
|
<any>{ entry: { id: '2', name: 'name2' } },
|
||||||
{ entry: { id: '3', name: 'name3' } }
|
<any>{ entry: { id: '3', name: 'name3' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new DeleteNodesAction(selection));
|
store.dispatch(new DeleteNodesAction(selection));
|
||||||
@@ -1004,7 +1018,7 @@ describe('ContentManagementService', () => {
|
|||||||
it('call purge nodes if selection is not empty', fakeAsync(() => {
|
it('call purge nodes if selection is not empty', fakeAsync(() => {
|
||||||
spyOn(contentApi, 'purgeDeletedNode').and.returnValue(of({}));
|
spyOn(contentApi, 'purgeDeletedNode').and.returnValue(of({}));
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1' } }];
|
const selection = [<any>{ entry: { id: '1' } }];
|
||||||
store.dispatch(new PurgeDeletedNodesAction(selection));
|
store.dispatch(new PurgeDeletedNodesAction(selection));
|
||||||
|
|
||||||
expect(contentApi.purgeDeletedNode).toHaveBeenCalled();
|
expect(contentApi.purgeDeletedNode).toHaveBeenCalled();
|
||||||
@@ -1034,9 +1048,9 @@ describe('ContentManagementService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: '1', name: 'name1' } },
|
<any>{ entry: { id: '1', name: 'name1' } },
|
||||||
{ entry: { id: '2', name: 'name2' } },
|
<any>{ entry: { id: '2', name: 'name2' } },
|
||||||
{ entry: { id: '3', name: 'name3' } }
|
<any>{ entry: { id: '3', name: 'name3' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new PurgeDeletedNodesAction(selection));
|
store.dispatch(new PurgeDeletedNodesAction(selection));
|
||||||
@@ -1069,10 +1083,10 @@ describe('ContentManagementService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: '1', name: 'name1' } },
|
<any>{ entry: { id: '1', name: 'name1' } },
|
||||||
{ entry: { id: '2', name: 'name2' } },
|
<any>{ entry: { id: '2', name: 'name2' } },
|
||||||
{ entry: { id: '3', name: 'name3' } },
|
<any>{ entry: { id: '3', name: 'name3' } },
|
||||||
{ entry: { id: '4', name: 'name4' } }
|
<any>{ entry: { id: '4', name: 'name4' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new PurgeDeletedNodesAction(selection));
|
store.dispatch(new PurgeDeletedNodesAction(selection));
|
||||||
@@ -1088,7 +1102,7 @@ describe('ContentManagementService', () => {
|
|||||||
|
|
||||||
spyOn(contentApi, 'purgeDeletedNode').and.returnValue(of({}));
|
spyOn(contentApi, 'purgeDeletedNode').and.returnValue(of({}));
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name1' } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name1' } }];
|
||||||
|
|
||||||
store.dispatch(new PurgeDeletedNodesAction(selection));
|
store.dispatch(new PurgeDeletedNodesAction(selection));
|
||||||
}));
|
}));
|
||||||
@@ -1103,7 +1117,7 @@ describe('ContentManagementService', () => {
|
|||||||
|
|
||||||
spyOn(contentApi, 'purgeDeletedNode').and.returnValue(throwError({}));
|
spyOn(contentApi, 'purgeDeletedNode').and.returnValue(throwError({}));
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name1' } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name1' } }];
|
||||||
|
|
||||||
store.dispatch(new PurgeDeletedNodesAction(selection));
|
store.dispatch(new PurgeDeletedNodesAction(selection));
|
||||||
}));
|
}));
|
||||||
@@ -1126,8 +1140,8 @@ describe('ContentManagementService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: '1', name: 'name1' } },
|
<any>{ entry: { id: '1', name: 'name1' } },
|
||||||
{ entry: { id: '2', name: 'name2' } }
|
<any>{ entry: { id: '2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new PurgeDeletedNodesAction(selection));
|
store.dispatch(new PurgeDeletedNodesAction(selection));
|
||||||
@@ -1151,8 +1165,8 @@ describe('ContentManagementService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: '1', name: 'name1' } },
|
<any>{ entry: { id: '1', name: 'name1' } },
|
||||||
{ entry: { id: '2', name: 'name2' } }
|
<any>{ entry: { id: '2', name: 'name2' } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new PurgeDeletedNodesAction(selection));
|
store.dispatch(new PurgeDeletedNodesAction(selection));
|
||||||
@@ -1173,7 +1187,7 @@ describe('ContentManagementService', () => {
|
|||||||
it('does not restore nodes if selection has nodes without path', () => {
|
it('does not restore nodes if selection has nodes without path', () => {
|
||||||
spyOn(contentApi, 'restoreNode');
|
spyOn(contentApi, 'restoreNode');
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1' } }];
|
const selection = [<any>{ entry: { id: '1' } }];
|
||||||
|
|
||||||
store.dispatch(new RestoreDeletedNodesAction(selection));
|
store.dispatch(new RestoreDeletedNodesAction(selection));
|
||||||
|
|
||||||
@@ -1198,7 +1212,7 @@ describe('ContentManagementService', () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{
|
<any>{
|
||||||
entry: {
|
entry: {
|
||||||
id: '1',
|
id: '1',
|
||||||
path
|
path
|
||||||
@@ -1234,7 +1248,7 @@ describe('ContentManagementService', () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{
|
<any>{
|
||||||
entry: {
|
entry: {
|
||||||
id: '1',
|
id: '1',
|
||||||
path
|
path
|
||||||
@@ -1269,7 +1283,7 @@ describe('ContentManagementService', () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{
|
<any>{
|
||||||
entry: {
|
entry: {
|
||||||
id: '1',
|
id: '1',
|
||||||
path
|
path
|
||||||
@@ -1324,9 +1338,9 @@ describe('ContentManagementService', () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: '1', name: 'name1', path } },
|
<any>{ entry: { id: '1', name: 'name1', path } },
|
||||||
{ entry: { id: '2', name: 'name2', path } },
|
<any>{ entry: { id: '2', name: 'name2', path } },
|
||||||
{ entry: { id: '3', name: 'name3', path } }
|
<any>{ entry: { id: '3', name: 'name3', path } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new RestoreDeletedNodesAction(selection));
|
store.dispatch(new RestoreDeletedNodesAction(selection));
|
||||||
@@ -1350,7 +1364,7 @@ describe('ContentManagementService', () => {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name1', path } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name1', path } }];
|
||||||
|
|
||||||
store.dispatch(new RestoreDeletedNodesAction(selection));
|
store.dispatch(new RestoreDeletedNodesAction(selection));
|
||||||
}));
|
}));
|
||||||
@@ -1374,7 +1388,7 @@ describe('ContentManagementService', () => {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name1', path } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name1', path } }];
|
||||||
|
|
||||||
store.dispatch(new RestoreDeletedNodesAction(selection));
|
store.dispatch(new RestoreDeletedNodesAction(selection));
|
||||||
}));
|
}));
|
||||||
@@ -1398,7 +1412,7 @@ describe('ContentManagementService', () => {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name1', path } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name1', path } }];
|
||||||
|
|
||||||
store.dispatch(new RestoreDeletedNodesAction(selection));
|
store.dispatch(new RestoreDeletedNodesAction(selection));
|
||||||
}));
|
}));
|
||||||
@@ -1429,8 +1443,8 @@ describe('ContentManagementService', () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{ entry: { id: '1', name: 'name1', path } },
|
<any>{ entry: { id: '1', name: 'name1', path } },
|
||||||
{ entry: { id: '2', name: 'name2', path } }
|
<any>{ entry: { id: '2', name: 'name2', path } }
|
||||||
];
|
];
|
||||||
|
|
||||||
store.dispatch(new RestoreDeletedNodesAction(selection));
|
store.dispatch(new RestoreDeletedNodesAction(selection));
|
||||||
@@ -1453,7 +1467,7 @@ describe('ContentManagementService', () => {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
const selection = [{ entry: { id: '1', name: 'name1', path } }];
|
const selection = [<any>{ entry: { id: '1', name: 'name1', path } }];
|
||||||
|
|
||||||
store.dispatch(new RestoreDeletedNodesAction(selection));
|
store.dispatch(new RestoreDeletedNodesAction(selection));
|
||||||
}));
|
}));
|
||||||
@@ -1476,7 +1490,7 @@ describe('ContentManagementService', () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const selection = [
|
const selection = [
|
||||||
{
|
<any>{
|
||||||
entry: {
|
entry: {
|
||||||
id: '1',
|
id: '1',
|
||||||
name: 'name1',
|
name: 'name1',
|
||||||
@@ -1492,7 +1506,7 @@ describe('ContentManagementService', () => {
|
|||||||
|
|
||||||
describe('Share Node', () => {
|
describe('Share Node', () => {
|
||||||
it('should open dialog for nodes without requesting getNodeInfo', fakeAsync(() => {
|
it('should open dialog for nodes without requesting getNodeInfo', fakeAsync(() => {
|
||||||
const node = { entry: { id: '1', name: 'name1' } };
|
const node = <any>{ entry: { id: '1', name: 'name1' } };
|
||||||
spyOn(contentApi, 'getNodeInfo').and.returnValue(of({}));
|
spyOn(contentApi, 'getNodeInfo').and.returnValue(of({}));
|
||||||
spyOn(dialog, 'open').and.returnValue({
|
spyOn(dialog, 'open').and.returnValue({
|
||||||
afterClosed() {
|
afterClosed() {
|
||||||
@@ -1507,7 +1521,7 @@ describe('ContentManagementService', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should open dialog with getNodeInfo data when `id` property is missing', fakeAsync(() => {
|
it('should open dialog with getNodeInfo data when `id` property is missing', fakeAsync(() => {
|
||||||
const node = { entry: { nodeId: '1', name: 'name1' } };
|
const node = <any>{ entry: { nodeId: '1', name: 'name1' } };
|
||||||
spyOn(contentApi, 'getNodeInfo').and.returnValue(of({}));
|
spyOn(contentApi, 'getNodeInfo').and.returnValue(of({}));
|
||||||
spyOn(dialog, 'open').and.returnValue({
|
spyOn(dialog, 'open').and.returnValue({
|
||||||
afterClosed() {
|
afterClosed() {
|
||||||
@@ -1522,7 +1536,7 @@ describe('ContentManagementService', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should update node selection after dialog is closed', fakeAsync(() => {
|
it('should update node selection after dialog is closed', fakeAsync(() => {
|
||||||
const node = { entry: { id: '1', name: 'name1' } };
|
const node = <any>{ entry: { id: '1', name: 'name1' } };
|
||||||
spyOn(store, 'dispatch').and.callThrough();
|
spyOn(store, 'dispatch').and.callThrough();
|
||||||
spyOn(dialog, 'open').and.returnValue({
|
spyOn(dialog, 'open').and.returnValue({
|
||||||
afterClosed() {
|
afterClosed() {
|
||||||
@@ -1538,7 +1552,7 @@ describe('ContentManagementService', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should emit event when node is un-shared', fakeAsync(() => {
|
it('should emit event when node is un-shared', fakeAsync(() => {
|
||||||
const node = { entry: { id: '1', name: 'name1' } };
|
const node = <any>{ entry: { id: '1', name: 'name1' } };
|
||||||
spyOn(contentManagementService.linksUnshared, 'next').and.callThrough();
|
spyOn(contentManagementService.linksUnshared, 'next').and.callThrough();
|
||||||
spyOn(dialog, 'open').and.returnValue({
|
spyOn(dialog, 'open').and.returnValue({
|
||||||
afterClosed: () => of(node)
|
afterClosed: () => of(node)
|
||||||
|
@@ -52,7 +52,7 @@ import {
|
|||||||
DeletedNodesPaging,
|
DeletedNodesPaging,
|
||||||
PathInfoEntity,
|
PathInfoEntity,
|
||||||
SiteBody
|
SiteBody
|
||||||
} from 'alfresco-js-api';
|
} from '@alfresco/js-api';
|
||||||
import { NodePermissionService } from './node-permission.service';
|
import { NodePermissionService } from './node-permission.service';
|
||||||
import { NodeInfo, DeletedNodeInfo, DeleteStatus } from '../store/models';
|
import { NodeInfo, DeletedNodeInfo, DeleteStatus } from '../store/models';
|
||||||
import { ContentApiService } from './content-api.service';
|
import { ContentApiService } from './content-api.service';
|
||||||
@@ -132,7 +132,7 @@ export class ContentManagementService {
|
|||||||
|
|
||||||
managePermissions(node: MinimalNodeEntity): void {
|
managePermissions(node: MinimalNodeEntity): void {
|
||||||
if (node && node.entry) {
|
if (node && node.entry) {
|
||||||
const { nodeId, id } = node.entry;
|
const { nodeId, id } = <any>node.entry;
|
||||||
const siteId = node.entry['guid'];
|
const siteId = node.entry['guid'];
|
||||||
const targetId = siteId || nodeId || id;
|
const targetId = siteId || nodeId || id;
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ export class ContentManagementService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
manageVersions(node: MinimalNodeEntity) {
|
manageVersions(node: any) {
|
||||||
if (node && node.entry) {
|
if (node && node.entry) {
|
||||||
// shared and favorite
|
// shared and favorite
|
||||||
const id = node.entry.nodeId || (<any>node).entry.guid;
|
const id = node.entry.nodeId || (<any>node).entry.guid;
|
||||||
@@ -165,7 +165,7 @@ export class ContentManagementService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private openVersionManagerDialog(node: MinimalNodeEntryEntity) {
|
private openVersionManagerDialog(node: any) {
|
||||||
// workaround Shared
|
// workaround Shared
|
||||||
if (node.isFile || node.nodeId) {
|
if (node.isFile || node.nodeId) {
|
||||||
this.dialogRef.open(NodeVersionsDialogComponent, {
|
this.dialogRef.open(NodeVersionsDialogComponent, {
|
||||||
@@ -180,7 +180,7 @@ export class ContentManagementService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
shareNode(node: MinimalNodeEntity): void {
|
shareNode(node: any): void {
|
||||||
if (node && node.entry) {
|
if (node && node.entry) {
|
||||||
// shared and favorite
|
// shared and favorite
|
||||||
const id = node.entry.nodeId || (<any>node).entry.guid;
|
const id = node.entry.nodeId || (<any>node).entry.guid;
|
||||||
@@ -389,7 +389,7 @@ export class ContentManagementService {
|
|||||||
if (result === true) {
|
if (result === true) {
|
||||||
const nodesToDelete: NodeInfo[] = nodes.map(node => {
|
const nodesToDelete: NodeInfo[] = nodes.map(node => {
|
||||||
const { name } = node.entry;
|
const { name } = node.entry;
|
||||||
const id = node.entry.nodeId || node.entry.id;
|
const id = (<any>node).entry.nodeId || node.entry.id;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id,
|
id,
|
||||||
@@ -973,7 +973,7 @@ export class ContentManagementService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private deleteNode(node: MinimalNodeEntity): Observable<DeletedNodeInfo> {
|
private deleteNode(node: any): Observable<DeletedNodeInfo> {
|
||||||
const { name } = node.entry;
|
const { name } = node.entry;
|
||||||
const id = node.entry.nodeId || node.entry.id;
|
const id = node.entry.nodeId || node.entry.id;
|
||||||
|
|
||||||
@@ -1162,10 +1162,10 @@ export class ContentManagementService {
|
|||||||
return i18nMessageString;
|
return i18nMessageString;
|
||||||
}
|
}
|
||||||
|
|
||||||
printFile(node: MinimalNodeEntity) {
|
printFile(node: any) {
|
||||||
if (node && node.entry) {
|
if (node && node.entry) {
|
||||||
// shared and favorite
|
// shared and favorite
|
||||||
const id = node.entry.nodeId || (<any>node).entry.guid || node.entry.id;
|
const id = node.entry.nodeId || node.entry.guid || node.entry.id;
|
||||||
const mimeType = node.entry.content.mimeType;
|
const mimeType = node.entry.content.mimeType;
|
||||||
|
|
||||||
if (id) {
|
if (id) {
|
||||||
|
@@ -31,7 +31,7 @@ import {
|
|||||||
AlfrescoApiService
|
AlfrescoApiService
|
||||||
} from '@alfresco/adf-core';
|
} from '@alfresco/adf-core';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { PersonEntry, SearchRequest, ResultSetPaging } from 'alfresco-js-api';
|
import { PersonEntry, SearchRequest, ResultSetPaging } from '@alfresco/js-api';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
|
@@ -29,7 +29,7 @@ import { of, throwError } from 'rxjs';
|
|||||||
import { AlfrescoApiService, TranslationService } from '@alfresco/adf-core';
|
import { AlfrescoApiService, TranslationService } from '@alfresco/adf-core';
|
||||||
import { DocumentListService } from '@alfresco/adf-content-services';
|
import { DocumentListService } from '@alfresco/adf-content-services';
|
||||||
import { NodeActionsService } from './node-actions.service';
|
import { NodeActionsService } from './node-actions.service';
|
||||||
import { MinimalNodeEntryEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
|
||||||
import { AppTestingModule } from '../testing/app-testing.module';
|
import { AppTestingModule } from '../testing/app-testing.module';
|
||||||
import { ContentApiService } from '../services/content-api.service';
|
import { ContentApiService } from '../services/content-api.service';
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ class TestNode {
|
|||||||
nodeType?: string,
|
nodeType?: string,
|
||||||
properties?: any
|
properties?: any
|
||||||
) {
|
) {
|
||||||
this.entry = {};
|
this.entry = <any>{};
|
||||||
this.entry.id = id || 'node-id';
|
this.entry.id = id || 'node-id';
|
||||||
this.entry.isFile = isFile;
|
this.entry.isFile = isFile;
|
||||||
this.entry.isFolder = !isFile;
|
this.entry.isFolder = !isFile;
|
||||||
@@ -241,14 +241,14 @@ describe('NodeActionsService', () => {
|
|||||||
describe('getEntryParentId', () => {
|
describe('getEntryParentId', () => {
|
||||||
it('should return the parentId, if that exists on the node entry', () => {
|
it('should return the parentId, if that exists on the node entry', () => {
|
||||||
const parentID = 'parent-id';
|
const parentID = 'parent-id';
|
||||||
const entry = { nodeId: '1234', parentId: parentID };
|
const entry = <any>{ nodeId: '1234', parentId: parentID };
|
||||||
|
|
||||||
expect(service.getEntryParentId(entry)).toBe(parentID);
|
expect(service.getEntryParentId(entry)).toBe(parentID);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should give the last element in path property, if parentId is missing and path exists on the node entry', () => {
|
it('should give the last element in path property, if parentId is missing and path exists on the node entry', () => {
|
||||||
const firstParentId = 'parent-0-id';
|
const firstParentId = 'parent-0-id';
|
||||||
const entry = {
|
const entry = <any>{
|
||||||
nodeId: '1234',
|
nodeId: '1234',
|
||||||
path: { elements: [{ id: 'parent-1-id' }, { id: firstParentId }] }
|
path: { elements: [{ id: 'parent-1-id' }, { id: firstParentId }] }
|
||||||
};
|
};
|
||||||
|
@@ -41,8 +41,9 @@ import {
|
|||||||
import {
|
import {
|
||||||
MinimalNodeEntity,
|
MinimalNodeEntity,
|
||||||
MinimalNodeEntryEntity,
|
MinimalNodeEntryEntity,
|
||||||
SitePaging
|
SitePaging,
|
||||||
} from 'alfresco-js-api';
|
Site
|
||||||
|
} from '@alfresco/js-api';
|
||||||
import { ContentApiService } from '../services/content-api.service';
|
import { ContentApiService } from '../services/content-api.service';
|
||||||
import { catchError, map, mergeMap } from 'rxjs/operators';
|
import { catchError, map, mergeMap } from 'rxjs/operators';
|
||||||
|
|
||||||
@@ -217,24 +218,24 @@ export class NodeActionsService {
|
|||||||
contentEntities[0].entry
|
contentEntities[0].entry
|
||||||
);
|
);
|
||||||
|
|
||||||
const customDropdown: SitePaging = {
|
const customDropdown = new SitePaging({
|
||||||
list: {
|
list: {
|
||||||
entries: [
|
entries: [
|
||||||
{
|
{
|
||||||
entry: {
|
entry: <Site>{
|
||||||
guid: '-my-',
|
guid: '-my-',
|
||||||
title: 'APP.BROWSE.PERSONAL.SIDENAV_LINK.LABEL'
|
title: 'APP.BROWSE.PERSONAL.SIDENAV_LINK.LABEL'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
entry: {
|
entry: <Site>{
|
||||||
guid: '-mysites-',
|
guid: '-mysites-',
|
||||||
title: 'APP.BROWSE.LIBRARIES.SIDENAV_LINK.LABEL'
|
title: 'APP.BROWSE.LIBRARIES.SIDENAV_LINK.LABEL'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
const title = this.getTitleTranslation(action, contentEntities);
|
const title = this.getTitleTranslation(action, contentEntities);
|
||||||
|
|
||||||
@@ -340,7 +341,7 @@ export class NodeActionsService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (node === null && this.isSitesDestinationAvailable) {
|
} else if (node === null && this.isSitesDestinationAvailable) {
|
||||||
node = {
|
node = <any>{
|
||||||
name: this.translation.instant('APP.BROWSE.LIBRARIES.TITLE'),
|
name: this.translation.instant('APP.BROWSE.LIBRARIES.TITLE'),
|
||||||
path: { elements: [] }
|
path: { elements: [] }
|
||||||
};
|
};
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Action } from '@ngrx/store';
|
import { Action } from '@ngrx/store';
|
||||||
import { Node, Person } from 'alfresco-js-api';
|
import { Node, Person } from '@alfresco/js-api';
|
||||||
import { AppState } from '../states';
|
import { AppState } from '../states';
|
||||||
|
|
||||||
export const SET_INITIAL_STATE = 'SET_INITIAL_STATE';
|
export const SET_INITIAL_STATE = 'SET_INITIAL_STATE';
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Action } from '@ngrx/store';
|
import { Action } from '@ngrx/store';
|
||||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||||
|
|
||||||
export const ADD_FAVORITE = 'ADD_FAVORITE';
|
export const ADD_FAVORITE = 'ADD_FAVORITE';
|
||||||
export const REMOVE_FAVORITE = 'REMOVE_FAVORITE';
|
export const REMOVE_FAVORITE = 'REMOVE_FAVORITE';
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Action } from '@ngrx/store';
|
import { Action } from '@ngrx/store';
|
||||||
import { SiteBody } from 'alfresco-js-api';
|
import { SiteBody } from '@alfresco/js-api';
|
||||||
|
|
||||||
export const DELETE_LIBRARY = 'DELETE_LIBRARY';
|
export const DELETE_LIBRARY = 'DELETE_LIBRARY';
|
||||||
export const CREATE_LIBRARY = 'CREATE_LIBRARY';
|
export const CREATE_LIBRARY = 'CREATE_LIBRARY';
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Action } from '@ngrx/store';
|
import { Action } from '@ngrx/store';
|
||||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||||
|
|
||||||
export const SET_SELECTED_NODES = 'SET_SELECTED_NODES';
|
export const SET_SELECTED_NODES = 'SET_SELECTED_NODES';
|
||||||
export const DELETE_NODES = 'DELETE_NODES';
|
export const DELETE_NODES = 'DELETE_NODES';
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Action } from '@ngrx/store';
|
import { Action } from '@ngrx/store';
|
||||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||||
|
|
||||||
export const NAVIGATE_URL = 'NAVIGATE_URL';
|
export const NAVIGATE_URL = 'NAVIGATE_URL';
|
||||||
export const NAVIGATE_ROUTE = 'NAVIGATE_ROUTE';
|
export const NAVIGATE_ROUTE = 'NAVIGATE_ROUTE';
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Action } from '@ngrx/store';
|
import { Action } from '@ngrx/store';
|
||||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||||
|
|
||||||
export const VIEW_FILE = 'VIEW_FILE';
|
export const VIEW_FILE = 'VIEW_FILE';
|
||||||
|
|
||||||
|
@@ -31,7 +31,7 @@ import { map, take } from 'rxjs/operators';
|
|||||||
import { DownloadNodesAction, DOWNLOAD_NODES } from '../actions';
|
import { DownloadNodesAction, DOWNLOAD_NODES } from '../actions';
|
||||||
import { NodeInfo } from '../models';
|
import { NodeInfo } from '../models';
|
||||||
import { ContentApiService } from '../../services/content-api.service';
|
import { ContentApiService } from '../../services/content-api.service';
|
||||||
import { MinimalNodeEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntity } from '@alfresco/js-api';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppStore } from '../states';
|
import { AppStore } from '../states';
|
||||||
import { appSelection } from '../selectors/app.selectors';
|
import { appSelection } from '../selectors/app.selectors';
|
||||||
@@ -66,7 +66,7 @@ export class DownloadEffects {
|
|||||||
|
|
||||||
private downloadNodes(toDownload: Array<MinimalNodeEntity>) {
|
private downloadNodes(toDownload: Array<MinimalNodeEntity>) {
|
||||||
const nodes = toDownload.map(node => {
|
const nodes = toDownload.map(node => {
|
||||||
const { id, nodeId, name, isFile, isFolder } = node.entry;
|
const { id, nodeId, name, isFile, isFolder } = <any>node.entry;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: nodeId || id,
|
id: nodeId || id,
|
||||||
|
@@ -44,7 +44,6 @@ import { Store } from '@ngrx/store';
|
|||||||
import { AppStore } from '../states';
|
import { AppStore } from '../states';
|
||||||
import { appSelection } from '../selectors/app.selectors';
|
import { appSelection } from '../selectors/app.selectors';
|
||||||
import { ContentApiService } from '../../services/content-api.service';
|
import { ContentApiService } from '../../services/content-api.service';
|
||||||
import { SiteBody } from 'alfresco-js-api-node';
|
|
||||||
import { SnackbarErrorAction } from '../actions/snackbar.actions';
|
import { SnackbarErrorAction } from '../actions/snackbar.actions';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
@@ -136,7 +135,7 @@ export class LibraryEffects {
|
|||||||
const { id } = selection.library.entry;
|
const { id } = selection.library.entry;
|
||||||
const { title, description, visibility } = action.payload;
|
const { title, description, visibility } = action.payload;
|
||||||
|
|
||||||
const siteBody = <SiteBody>{
|
const siteBody = {
|
||||||
title,
|
title,
|
||||||
description,
|
description,
|
||||||
visibility
|
visibility
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { Actions, Effect, ofType } from '@ngrx/effects';
|
import { Actions, Effect, ofType } from '@ngrx/effects';
|
||||||
import { MinimalNodeEntryEntity, PathInfoEntity } from 'alfresco-js-api';
|
import { MinimalNodeEntryEntity, PathInfoEntity } from '@alfresco/js-api';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import {
|
import {
|
||||||
NavigateRouteAction,
|
NavigateRouteAction,
|
||||||
|
@@ -56,7 +56,7 @@ export class ViewerEffects {
|
|||||||
ofType<ViewFileAction>(VIEW_FILE),
|
ofType<ViewFileAction>(VIEW_FILE),
|
||||||
map(action => {
|
map(action => {
|
||||||
if (action.payload && action.payload.entry) {
|
if (action.payload && action.payload.entry) {
|
||||||
const { id, nodeId, isFile } = action.payload.entry;
|
const { id, nodeId, isFile } = <any>action.payload.entry;
|
||||||
|
|
||||||
if (isFile || nodeId) {
|
if (isFile || nodeId) {
|
||||||
this.displayPreview(nodeId || id, action.parentId);
|
this.displayPreview(nodeId || id, action.parentId);
|
||||||
@@ -67,7 +67,7 @@ export class ViewerEffects {
|
|||||||
.pipe(take(1))
|
.pipe(take(1))
|
||||||
.subscribe(result => {
|
.subscribe(result => {
|
||||||
if (result.selection && result.selection.file) {
|
if (result.selection && result.selection.file) {
|
||||||
const { id, nodeId, isFile } = result.selection.file.entry;
|
const { id, nodeId, isFile } = <any>result.selection.file.entry;
|
||||||
|
|
||||||
if (isFile || nodeId) {
|
if (isFile || nodeId) {
|
||||||
const parentId = result.folder ? result.folder.id : null;
|
const parentId = result.folder ? result.folder.id : null;
|
||||||
|
@@ -189,7 +189,7 @@ function updateSelectedNodes(
|
|||||||
last = nodes[nodes.length - 1];
|
last = nodes[nodes.length - 1];
|
||||||
|
|
||||||
if (nodes.length === 1) {
|
if (nodes.length === 1) {
|
||||||
file = nodes.find(entity => {
|
file = nodes.find((entity: any) => {
|
||||||
// workaround Shared
|
// workaround Shared
|
||||||
return entity.entry.isFile || entity.entry.nodeId ? true : false;
|
return entity.entry.isFile || entity.entry.nodeId ? true : false;
|
||||||
});
|
});
|
||||||
@@ -197,7 +197,9 @@ function updateSelectedNodes(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const libraries = [...action.payload].filter((node: any) => node.isLibrary);
|
const libraries: any[] = [...action.payload].filter(
|
||||||
|
(node: any) => node.isLibrary
|
||||||
|
);
|
||||||
if (libraries.length === 1) {
|
if (libraries.length === 1) {
|
||||||
library = libraries[0];
|
library = libraries[0];
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user