mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-12 17:04:57 +00:00
Added documentation. Fixed PR review comments
This commit is contained in:
parent
559cb504c1
commit
e31f5886fc
87
docs/content-services/services/extension-manager.service.md
Normal file
87
docs/content-services/services/extension-manager.service.md
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
---
|
||||||
|
Title: Extension Manager service
|
||||||
|
Added: v2.0.0
|
||||||
|
Status: Active
|
||||||
|
Last reviewed: 2025-04-04
|
||||||
|
---
|
||||||
|
|
||||||
|
# [Extension Manager service](../../../lib/content-services/src/lib/extensions-manager/services/extension-manager.service.ts "Defined in document-actions.service.ts")
|
||||||
|
|
||||||
|
Implements the functionalities related to Extension Management
|
||||||
|
|
||||||
|
## Class members
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
- **getPluginInfo**(nodeEntry: [`Observable<ExtensionInfoModel>`](#ExtensionInfoModel)): `boolean`<br/>
|
||||||
|
Fetches the extension configuration from a running application
|
||||||
|
- _instanceUrl:_ string - URL of the running application
|
||||||
|
- **Returns** `Observable<ExtensionInfoModel>` - Observable emitting the extension configuration for the application
|
||||||
|
- **getSavedPluginState**(key: `string`): [`Observable<ExtensionCompositionEntry>`](#ExtensionCompositionEntry)<br/>
|
||||||
|
Fetches the saved extension configuration from the database
|
||||||
|
- _instanceId:_ `string` - Unique id under which the extension configuration is saved
|
||||||
|
- **Returns** `Observable<ExtensionCompositionEntry>` - Observable emitting the saved extension state
|
||||||
|
- **getDefaultPluginState**(instanceUrl: `string`: `Observable<AppConfigPluginRef>`<br/>
|
||||||
|
Fetches the states of plugins from a running application
|
||||||
|
- _instanceUrl:_ string - URL of the running application
|
||||||
|
- **Returns** `Observable<AppConfigPluginRef>` - Observable emitting the plugin state of a running application
|
||||||
|
- **publishExtensionConfig**(key: `string`, pluginConfig: [`ExtensionComposition`](#ExtensionComposition)): `Observable<void>`<br/>
|
||||||
|
Publishes the extensions configuration to the database
|
||||||
|
- _instanceId:_ `string` - Id to use to identify the application
|
||||||
|
- _pluginConfig:_ [`ExtensionComposition`](#ExtensionComposition) - The extension configuration to be saved
|
||||||
|
- **Returns** `Observable<void>` - Observable emitting no value
|
||||||
|
|
||||||
|
## Details
|
||||||
|
|
||||||
|
This service provides methods necessary to publish and fetch extensions configuration
|
||||||
|
|
||||||
|
# Models
|
||||||
|
|
||||||
|
## ExtensionCompositionEntry
|
||||||
|
|
||||||
|
**Properties**
|
||||||
|
|
||||||
|
| Name | Type |
|
||||||
|
|-----------|-----------------------------------------------|
|
||||||
|
| **entry** | [ExtensionComposition](#ExtensionComposition) |
|
||||||
|
|
||||||
|
## ExtensionComposition
|
||||||
|
|
||||||
|
**Properties**
|
||||||
|
|
||||||
|
| Name | Type |
|
||||||
|
|---------------|----------------------------------------------------------------------------|
|
||||||
|
| **appConfig** | [AppConfigPluginRef](#AppConfigPluginRef) |
|
||||||
|
| **rules** | [RuleRef[]]((../../../lib/extensions/src/lib/config/rule.extensions.ts)) |
|
||||||
|
| **routes** | [RouteRef[]](../../../lib/extensions/src/lib/config/routing.extensions.ts) |
|
||||||
|
| **actions** | [ActionRef[]](../../../lib/extensions/src/lib/config/action.extensions.ts) |
|
||||||
|
| **features** | [key: string]: any |
|
||||||
|
|
||||||
|
## ExtensionInfoModel
|
||||||
|
|
||||||
|
**Properties**
|
||||||
|
|
||||||
|
| Name | Type |
|
||||||
|
|-----------------------|----------------------------------------------------------------------------|
|
||||||
|
| **$id** | string |
|
||||||
|
| **$name** | string |
|
||||||
|
| **$version** | string |
|
||||||
|
| **$vendor** | string |
|
||||||
|
| **$license** | string |
|
||||||
|
| **$description** | string |
|
||||||
|
| **$dependencies** | Array<string> |
|
||||||
|
| **$$compatibilities** | Array<string> |
|
||||||
|
| **extensionId** | string |
|
||||||
|
| **appConfig** | [AppConfigPluginRef](#AppConfigPluginRef) |
|
||||||
|
| **rules** | [RuleRef[]]((../../../lib/extensions/src/lib/config/rule.extensions.ts)) |
|
||||||
|
| **routes** | [RouteRef[]](../../../lib/extensions/src/lib/config/routing.extensions.ts) |
|
||||||
|
| **actions** | [ActionRef[]](../../../lib/extensions/src/lib/config/action.extensions.ts) |
|
||||||
|
| **features** | [key: string]: any |
|
||||||
|
|
||||||
|
## AppConfigPluginRef
|
||||||
|
|
||||||
|
**Properties**
|
||||||
|
|
||||||
|
| Name | Type |
|
||||||
|
|-------------|----------------------------|
|
||||||
|
| **plugins** | { [key: string]: boolean } |
|
@ -17,10 +17,11 @@
|
|||||||
|
|
||||||
import { ExtensionManagerService } from './extension-manager.service';
|
import { ExtensionManagerService } from './extension-manager.service';
|
||||||
import { TestBed } from '@angular/core/testing';
|
import { TestBed } from '@angular/core/testing';
|
||||||
import { CoreTestingModule } from '../testing/core.testing.module';
|
|
||||||
import { ExtensionComposition, ExtensionCompositionEntry } from '@alfresco/js-api';
|
|
||||||
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
|
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
|
||||||
import { first } from 'rxjs/operators';
|
import { first } from 'rxjs/operators';
|
||||||
|
import { ExtensionCompositionEntry } from '../models/extension-composition-entry';
|
||||||
|
import { ExtensionComposition } from '../models/extension-composition';
|
||||||
|
import { CoreTestingModule } from '@alfresco/adf-core';
|
||||||
|
|
||||||
describe('ExtensionManagerService', () => {
|
describe('ExtensionManagerService', () => {
|
||||||
let extensionManagerService: ExtensionManagerService;
|
let extensionManagerService: ExtensionManagerService;
|
||||||
@ -51,7 +52,7 @@ describe('ExtensionManagerService', () => {
|
|||||||
expect(putSpy).toHaveBeenCalledOnceWith('test-instance-id', extensionComposition);
|
expect(putSpy).toHaveBeenCalledOnceWith('test-instance-id', extensionComposition);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should fetch extension info from pluginInfo.json of a running instance of ADW', (done) => {
|
it('should fetch extension info from pluginInfo.json', (done) => {
|
||||||
extensionManagerService
|
extensionManagerService
|
||||||
.getPluginInfo('test-adw-url')
|
.getPluginInfo('test-adw-url')
|
||||||
.pipe(first())
|
.pipe(first())
|
||||||
@ -65,7 +66,7 @@ describe('ExtensionManagerService', () => {
|
|||||||
httpTestingController.verify();
|
httpTestingController.verify();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should fetch extension defaults from appConfig.json of a running instance of ADW', (done) => {
|
it('should fetch extension defaults from appConfig.json', (done) => {
|
||||||
extensionManagerService
|
extensionManagerService
|
||||||
.getDefaultPluginState('test-adw-url')
|
.getDefaultPluginState('test-adw-url')
|
||||||
.pipe(first())
|
.pipe(first())
|
||||||
|
@ -34,14 +34,26 @@ export class ExtensionManagerService {
|
|||||||
private _settingsApi: SettingsApi;
|
private _settingsApi: SettingsApi;
|
||||||
|
|
||||||
get settingsApi(): SettingsApi {
|
get settingsApi(): SettingsApi {
|
||||||
this._settingsApi = this._settingsApi ?? new SettingsApi(this.apiService.getInstance());
|
this._settingsApi ??= new SettingsApi(this.apiService.getInstance());
|
||||||
return this._settingsApi;
|
return this._settingsApi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches the extension configuration from a running application
|
||||||
|
*
|
||||||
|
* @param instanceUrl URL of the running application
|
||||||
|
* @returns Observable<ExtensionInfoModel>
|
||||||
|
*/
|
||||||
getPluginInfo(instanceUrl: string): Observable<ExtensionInfoModel[]> {
|
getPluginInfo(instanceUrl: string): Observable<ExtensionInfoModel[]> {
|
||||||
return this.httpClient.get<ExtensionInfoModel[]>(`${instanceUrl}/pluginInfo.json`);
|
return this.httpClient.get<ExtensionInfoModel[]>(`${instanceUrl}/pluginInfo.json`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches the saved extension configuration from the database
|
||||||
|
*
|
||||||
|
* @param instanceId Unique id under which the extension configuration is saved
|
||||||
|
* @returns Observable<ExtensionCompositionEntry>
|
||||||
|
*/
|
||||||
getSavedPluginState(instanceId: string): Observable<ExtensionCompositionEntry> {
|
getSavedPluginState(instanceId: string): Observable<ExtensionCompositionEntry> {
|
||||||
// TODO: Update below code once backend APIs are working
|
// TODO: Update below code once backend APIs are working
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
@ -50,10 +62,23 @@ export class ExtensionManagerService {
|
|||||||
// return from(this.settingsApi.getSavedExtensionState(instanceId));
|
// return from(this.settingsApi.getSavedExtensionState(instanceId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches the states of plugins from a running application
|
||||||
|
*
|
||||||
|
* @param instanceUrl URL of the running application
|
||||||
|
* @returns Observable<AppConfigPluginRef>
|
||||||
|
*/
|
||||||
getDefaultPluginState(instanceUrl: string): Observable<AppConfigPluginRef> {
|
getDefaultPluginState(instanceUrl: string): Observable<AppConfigPluginRef> {
|
||||||
return this.httpClient.get<AppConfigPluginRef>(`${instanceUrl}/app.config.json`);
|
return this.httpClient.get<AppConfigPluginRef>(`${instanceUrl}/app.config.json`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Publishes the extensions configuration to the database
|
||||||
|
*
|
||||||
|
* @param instanceId Id to use to identify the application
|
||||||
|
* @param pluginConfig The extension configuration to be saved
|
||||||
|
* @returns void
|
||||||
|
*/
|
||||||
publishExtensionConfig(instanceId: string, pluginConfig: ExtensionComposition): Observable<void> {
|
publishExtensionConfig(instanceId: string, pluginConfig: ExtensionComposition): Observable<void> {
|
||||||
return from(this.settingsApi.publishExtensionConfig(instanceId, pluginConfig));
|
return from(this.settingsApi.publishExtensionConfig(instanceId, pluginConfig));
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,7 @@ export class SettingsApi extends BaseApi {
|
|||||||
/**
|
/**
|
||||||
* Gets the published extension configuration from
|
* Gets the published extension configuration from
|
||||||
* the database
|
* the database
|
||||||
* @param instanceId Unique ID for a running instance of ADW
|
* @param instanceId Unique ID for which configuration is to be fetched
|
||||||
* for which configuration is to be fetched
|
|
||||||
*/
|
*/
|
||||||
getSavedExtensionState(instanceId: string): Promise<any> {
|
getSavedExtensionState(instanceId: string): Promise<any> {
|
||||||
throwIfNotDefined(instanceId, 'instanceId');
|
throwIfNotDefined(instanceId, 'instanceId');
|
||||||
@ -39,12 +38,9 @@ export class SettingsApi extends BaseApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Publish the extension configuration for an ADW instance
|
* Publish the extension configuration in the database
|
||||||
* in the database
|
* @param instanceId Unique ID for which configuration is to be published
|
||||||
* @param instanceId Unique ID for a running instance of ADW
|
* @param extensionConfig Extension configuration that is to be saved
|
||||||
* for which configuration is to be published
|
|
||||||
* @param extensionConfig Extension configuration that is to
|
|
||||||
* be saved
|
|
||||||
*/
|
*/
|
||||||
publishExtensionConfig(instanceId: string, extensionConfig: any): Promise<void> {
|
publishExtensionConfig(instanceId: string, extensionConfig: any): Promise<void> {
|
||||||
throwIfNotDefined(instanceId, 'instanceId');
|
throwIfNotDefined(instanceId, 'instanceId');
|
||||||
|
55
lib/js-api/src/api/content-rest-api/docs/SettingsApi.md
Normal file
55
lib/js-api/src/api/content-rest-api/docs/SettingsApi.md
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# SettingsApi
|
||||||
|
|
||||||
|
All URIs are relative to *https://localhost/alfresco/api/-default-/public/alfresco/versions/1/*
|
||||||
|
|
||||||
|
| Method | HTTP request | Description |
|
||||||
|
|--------------------------------------------------------|--------------------------------|-------------------------------------------------------|
|
||||||
|
| [getSavedExtensionState](#getSavedExtensionState) | **GET** /settings/{instanceId} | Gets the extension configuration saved on the backend |
|
||||||
|
| [publishExtensionConfig](#publishExtensionComposition) | **PUT** /settings/{instanceId} | Saves an extension configuration on the backend |
|
||||||
|
|
||||||
|
## getSavedExtensionState
|
||||||
|
|
||||||
|
Gets the extension configuration saved on the backend
|
||||||
|
|
||||||
|
> this endpoint is available in <GET VERSION INFO HERE>**Alfresco 7.0.0** and newer versions.
|
||||||
|
|
||||||
|
**Parameters**
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
|----------------|--------|----------------|-------|
|
||||||
|
| **instanceId** | string | The identifier | |
|
||||||
|
|
||||||
|
**Return type**: [ExtensionCompositionEntry](#ExtensionCompositionEntry)
|
||||||
|
|
||||||
|
## publishExtensionComposition
|
||||||
|
|
||||||
|
Saves an extension configuration on the backend
|
||||||
|
|
||||||
|
**Parameters**
|
||||||
|
|
||||||
|
| Name | Type | Description |
|
||||||
|
|---------------------|-----------------------------------------------|-----------------------------------------|
|
||||||
|
| **instanceId** | string | The identifier |
|
||||||
|
| **extensionConfig** | [ExtensionComposition](#ExtensionComposition) | The extension configuration to be saved |
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
import {AlfrescoApi, SitesApi} from '@alfresco/js-api';
|
||||||
|
|
||||||
|
const alfrescoApi = new AlfrescoApi(/*..*/);
|
||||||
|
const settingsApi = new SettingsApi(alfrescoApi);
|
||||||
|
|
||||||
|
const extensionConfig = new ExtensionComposition();
|
||||||
|
extensionConfig = {
|
||||||
|
appConfig: {},
|
||||||
|
features: {},
|
||||||
|
actions: [],
|
||||||
|
rules: [],
|
||||||
|
routes: []
|
||||||
|
}
|
||||||
|
|
||||||
|
settingsApi.publishExtensionConfig(`<instanceId>`, extensionConfig).then(() => {
|
||||||
|
console.log('API called successfully.');
|
||||||
|
});
|
||||||
|
```
|
Loading…
x
Reference in New Issue
Block a user