ringcentral-widgets
Version:
RingCentral Integration Widget Library
78 lines (74 loc) • 1.93 kB
text/typescript
import {
RcUIModuleV2,
UIFunctions,
UIProps,
} from '@ringcentral-integration/core';
import { Module } from 'ringcentral-integration/lib/di';
import { AlertRenderer } from '../../components/AlertRenderer';
import {
NotificationMessage,
NotificationPanelProps,
} from '../../components/NotificationPanel/NotificationPanel.interface';
import { NotificationContainerProps } from '../../containers/NotificationContainer/NotificationContainer.interface';
import { Deps } from './AlertUI.interface';
export class AlertUI extends RcUIModuleV2<Deps> {
constructor(deps: Deps) {
super({ deps });
}
getUIProps({
className,
classes,
size,
messageAlign,
fullWidth,
}: NotificationContainerProps): UIProps<NotificationPanelProps> {
return {
className,
classes,
size,
messageAlign,
fullWidth,
currentLocale: this._deps.locale.currentLocale,
messages: this._deps.alert.messages as NotificationMessage[],
brand: this._deps.brand.fullName,
};
}
getUIFunctions({
getAdditionalRenderer,
regionSettingsUrl,
callingSettingsUrl,
}: NotificationContainerProps): UIFunctions<NotificationPanelProps> {
return {
getRenderer: (message: NotificationMessage) => {
if (getAdditionalRenderer) {
const renderer = getAdditionalRenderer()(message);
if (renderer) {
return renderer;
}
}
return AlertRenderer(
this._deps.alert,
this._deps.brand,
this._deps.rateLimiter,
this._deps.routerInteraction,
regionSettingsUrl,
callingSettingsUrl,
)(message);
},
dismiss: (id: string) => this._deps.alert.dismiss(id),
};
}
}