UNPKG

outsystems-ui

Version:
177 lines (154 loc) 5.06 kB
// eslint-disable-next-line @typescript-eslint/no-unused-vars namespace OutSystems.OSUI.Patterns.NotificationAPI { const _notificationMap = new Map<string, OSFramework.OSUI.Patterns.Notification.INotification>(); /** * Function that will change the property of a given Notification. * * @export * @param {string} notificationId * @param {string} propertyName * @param {*} propertyValue */ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any export function ChangeProperty(notificationId: string, propertyName: string, propertyValue: any): string { const result = OutSystems.OSUI.Utils.CreateApiResponse({ errorCode: ErrorCodes.Notification.FailChangeProperty, callback: () => { const notification = GetNotificationById(notificationId); notification.changeProperty(propertyName, propertyValue); }, }); return result; } /** * Create the new Notification instance and add it to the notificationsMap * * @export * @param {string} notificationId * @param {string} configs * @return {*} {OSFramework.OSUI.Patterns.Notification.INotification} */ export function Create( notificationId: string, configs: string ): OSFramework.OSUI.Patterns.Notification.INotification { if (_notificationMap.has(notificationId)) { throw new Error( `There is already a ${OSFramework.OSUI.GlobalEnum.PatternName.Notification} registered under id: ${notificationId}` ); } const _newNotification = new OSFramework.OSUI.Patterns.Notification.Notification( notificationId, JSON.parse(configs) ); _notificationMap.set(notificationId, _newNotification); return _newNotification; } /** * Function that will destroy the instance of the given Notification * * @export * @param {string} notificationId */ export function Dispose(notificationId: string): string { const result = OutSystems.OSUI.Utils.CreateApiResponse({ errorCode: ErrorCodes.Notification.FailDispose, callback: () => { const notification = GetNotificationById(notificationId); notification.dispose(); _notificationMap.delete(notificationId); }, }); return result; } /** * Fucntion that will return the Map with all the Notification instances at the page * * @export * @return {*} {Array<string>} */ export function GetAllNotifications(): Array<string> { return OSFramework.OSUI.Helper.MapOperation.ExportKeys(_notificationMap); } /** * Function that gets the instance of Notification, by a given ID. * * @export * @param {string} notificationId * @return {*} {OSFramework.OSUI.Patterns.Notification.INotification} */ export function GetNotificationById(notificationId: string): OSFramework.OSUI.Patterns.Notification.INotification { return OSFramework.OSUI.Helper.MapOperation.FindInMap( 'Notification', notificationId, _notificationMap ) as OSFramework.OSUI.Patterns.Notification.INotification; } /** * Function that will Show a given notification. * * @export * @param {string} notificationId ID of the notification that will be hidden */ export function Hide(notificationId: string): string { const result = OutSystems.OSUI.Utils.CreateApiResponse({ errorCode: ErrorCodes.Notification.FailHide, callback: () => { const notification = GetNotificationById(notificationId); notification.hide(); }, }); return result; } /** * Function that will initialize the pattern instance. * * @export * @param {string} notificationId * @return {*} {OSFramework.OSUI.Patterns.Notification.INotification} */ export function Initialize(notificationId: string): OSFramework.OSUI.Patterns.Notification.INotification { const notification = GetNotificationById(notificationId); notification.build(); return notification; } /** * Function to register a provider callback * * @export * @param {string} notificationId * @param {string} eventName * @param {OSFramework.OSUI.GlobalCallbacks.OSGeneric} callback * @return {*} {string} Return Message Success or message of error info if it's the case. */ export function RegisterCallback( notificationId: string, eventName: string, callback: OSFramework.OSUI.GlobalCallbacks.OSGeneric ): string { const result = OutSystems.OSUI.Utils.CreateApiResponse({ errorCode: ErrorCodes.Notification.FailRegisterCallback, callback: () => { const _notificationItem = this.GetNotificationById(notificationId); _notificationItem.registerCallback(eventName, callback); }, }); return result; } /** * Function that will open a given notification. * * @export * @param {string} notificationId ID of the notification that will be shown */ export function Show(notificationId: string): string { const result = OutSystems.OSUI.Utils.CreateApiResponse({ errorCode: ErrorCodes.Notification.FailShow, callback: () => { const notification = GetNotificationById(notificationId); notification.show(); }, }); return result; } }