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 { 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 { 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', () => {
|
||||
let extensionManagerService: ExtensionManagerService;
|
||||
@ -51,7 +52,7 @@ describe('ExtensionManagerService', () => {
|
||||
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
|
||||
.getPluginInfo('test-adw-url')
|
||||
.pipe(first())
|
||||
@ -65,7 +66,7 @@ describe('ExtensionManagerService', () => {
|
||||
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
|
||||
.getDefaultPluginState('test-adw-url')
|
||||
.pipe(first())
|
||||
|
@ -34,14 +34,26 @@ export class ExtensionManagerService {
|
||||
private _settingsApi: SettingsApi;
|
||||
|
||||
get settingsApi(): SettingsApi {
|
||||
this._settingsApi = this._settingsApi ?? new SettingsApi(this.apiService.getInstance());
|
||||
this._settingsApi ??= new SettingsApi(this.apiService.getInstance());
|
||||
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[]> {
|
||||
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> {
|
||||
// TODO: Update below code once backend APIs are working
|
||||
// eslint-disable-next-line no-console
|
||||
@ -50,10 +62,23 @@ export class ExtensionManagerService {
|
||||
// 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> {
|
||||
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> {
|
||||
return from(this.settingsApi.publishExtensionConfig(instanceId, pluginConfig));
|
||||
}
|
||||
|
@ -22,8 +22,7 @@ export class SettingsApi extends BaseApi {
|
||||
/**
|
||||
* Gets the published extension configuration from
|
||||
* the database
|
||||
* @param instanceId Unique ID for a running instance of ADW
|
||||
* for which configuration is to be fetched
|
||||
* @param instanceId Unique ID for which configuration is to be fetched
|
||||
*/
|
||||
getSavedExtensionState(instanceId: string): Promise<any> {
|
||||
throwIfNotDefined(instanceId, 'instanceId');
|
||||
@ -39,12 +38,9 @@ export class SettingsApi extends BaseApi {
|
||||
}
|
||||
|
||||
/**
|
||||
* Publish the extension configuration for an ADW instance
|
||||
* in the database
|
||||
* @param instanceId Unique ID for a running instance of ADW
|
||||
* for which configuration is to be published
|
||||
* @param extensionConfig Extension configuration that is to
|
||||
* be saved
|
||||
* Publish the extension configuration in the database
|
||||
* @param instanceId Unique ID for which configuration is to be published
|
||||
* @param extensionConfig Extension configuration that is to be saved
|
||||
*/
|
||||
publishExtensionConfig(instanceId: string, extensionConfig: any): Promise<void> {
|
||||
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