@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
171 lines (170 loc) • 5.94 kB
TypeScript
import { Observable, ReplaySubject } from 'rxjs';
import { RpcNotification } from '../rpc/notification/rpc-notification-model';
import { Rpc } from '../rpc/rpc';
import { RpcWorkItem } from '../rpc/work-item/rpc-work-item-model';
import { RpcWorkItemFind, RpcWorkItemFindResult } from '../rpc/work-item-find/rpc-work-item-find-model';
import { Notification, NotificationEvent } from './notification';
import { NotificationMessage } from './notification-message';
import { NotificationState } from './notification-state';
import { PowerShellWorkItemMessage } from './powershell-notification';
import { SocketMessage } from './socket-signalr';
import { RecoveredWorkItem } from './work-item-request';
/**
* Mock the IFrameService class in app folder
*/
export declare class IFrameService {
getActiveToolIFrameData: () => {
entryPoint: {
name: string;
parentModule: {
name: string;
};
};
};
}
/**
* Notification manager class.
*/
export declare class NotificationManager {
private rpc;
private collection;
private psSessionIdToNotificationIdMap;
private notificationIdToPsSessionIdMap;
private rpcNotifySubscription;
private rpcQuerySubscription;
private changedEventSubject;
private rpcWorkItemFindSubjectServer;
private rpcNotificationSubjectServer;
private iFrameService;
/**
* Initializes a new instance of the NotificationManager class.
*
* @param rpc the RPC object.
*/
constructor(rpc: Rpc);
/**
* register iframe service from shell
* @param iFrameService the iframe service from shell
*/
registerIFrameService(iFrameService: any): void;
/**
* Gets the items from current notification collection including dismissed.
*/
get items(): Notification[];
/**
* Gets the subject of notification changed event.
*/
get changed(): ReplaySubject<NotificationEvent>;
/**
* Initializes the rpc notification call.
*/
initialize(): void;
/**
* Stop the notification manager.
*/
uninitialize(): void;
/**
* Find a notification.
*
* @param id the notification id.
*/
find(id: string): Notification;
/**
* Remove a notification.
* There is no dismiss API on the gateway, this just remove from the list.
* Don't remove active notification. Use dismiss api instead, so it doesn't displays to .items property.
*
* @param id the session id (notification id).
* @return boolean true if removed.
*/
remove(id: string): boolean;
/**
* Dismiss a notification to mark dismiss property.
*
* @param id the session id (notification id).
* @return boolean true if dismissed.
*/
dismiss(id: string): boolean;
/**
* Set dismissed to false for notification updated that was previously dismissed
*
* @param id the session id (notification id).
* @return boolean true if undismissed.
*/
undismiss(id: string): boolean;
/**
* Add notification from WorkItem.
*
* @param psSessionId the psSession ID.
* @param workItem the RPC work item.
* @param state the initial state.
* @param object the object from query result.
* @return notification the notification object.
*/
addFromWorkItem(notificationId: string, workItem: RpcWorkItem, state: NotificationState): void;
/**
* Update an existing work item with psSession Id information.
*
* @param notificationId the id of the notification.
* @param psSessionId the psSession ID.
* @param workItem the work item.
* @param state the state of the work item.
* @param object the object from query result.
*/
updateWorkItemWithPsSession(notificationId: string, psSessionId: string, workItem: RpcWorkItem, state: NotificationState, object: any): boolean;
/**
* Add notification from Recover.
*
* @param id the notification ID.
* @param workItem the RPC work item.
* @param state the initial state.
* @param object the object from query result.
* @return notification the notification object.
*/
addFromRecover(recover: RecoveredWorkItem): void;
/**
* Add initial notification for Message Notification.
*
* @param id the notification ID.
* @param workItem the RPC work item.
* @param state the initial state.
* @param object the object from query result.
* @return notification the notification object.
*/
addForNotificationMessage(state: NotificationState, message: NotificationMessage): boolean;
/**
* Update notification from socket message.
*
* @param psSessionId the psSession ID.
* @param message the socket message.
*/
updateFromMessage(psSessionId: string, message: SocketMessage<PowerShellWorkItemMessage>): boolean;
/**
* Update notification from socket message.
*
* @param psSessionId the psSession ID.
* @param message the socket message.
*/
updateFromNotificationMessage(state: NotificationState, item: NotificationMessage): boolean;
/**
* Add or update client notification.
*
* @param clientNotification the client notification object.
* @param Observable the observable of void.
*/
notify(clientNotification: RpcNotification): Observable<any>;
/**
* Find current work item by the typeId/sourceName/nodeName.
*
* @param workItemFind the query notification object.
* @param RpcWorkItemFindResult the result of query.
*/
workItemFind(workItemFind: RpcWorkItemFind): RpcWorkItemFindResult;
/**
* Add an event to report the change of notification data or collection.
*
* @param changeEvent the changed event.
* @param notification the notification object. (optional)
*/
private addEvent;
}