From 417b377427664c85ecbf56af0ee4701d5dbb3575 Mon Sep 17 00:00:00 2001 From: Guilherme Leme Date: Fri, 6 Dec 2024 16:03:08 -0300 Subject: [PATCH 1/2] [sendDisplayNotification] - Added possibility for the plugin developer block the notifications, so none are displayed to the user --- .../component.tsx | 9 +++++++++ src/ui-commands/notification/commands.ts | 14 +++++++++++++- src/ui-commands/notification/enums.ts | 1 + src/ui-commands/notification/types.ts | 5 +++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/samples/sample-action-button-dropdown-plugin/src/components/sample-action-button-dropdown-plugin-item/component.tsx b/samples/sample-action-button-dropdown-plugin/src/components/sample-action-button-dropdown-plugin-item/component.tsx index 26f3ca19..fc004a10 100644 --- a/samples/sample-action-button-dropdown-plugin/src/components/sample-action-button-dropdown-plugin-item/component.tsx +++ b/samples/sample-action-button-dropdown-plugin/src/components/sample-action-button-dropdown-plugin-item/component.tsx @@ -128,6 +128,15 @@ function SampleActionButtonDropdownPlugin( handleFetchPresentationData(currentPresentation); }, }), + new ActionButtonDropdownOption({ + label: 'Stop notifications', + icon: 'copy', + tooltip: 'this is a button injected by plugin', + allowed: true, + onClick: () => { + pluginApi.uiCommands.notification.setDisplayNotifications(false); + }, + }), new ActionButtonDropdownOption({ label: showingGenericContentInPresentationArea ? 'Return previous presentation content' : 'Set different content in presentation area', icon: 'copy', diff --git a/src/ui-commands/notification/commands.ts b/src/ui-commands/notification/commands.ts index 07ebbefe..c388f5c2 100644 --- a/src/ui-commands/notification/commands.ts +++ b/src/ui-commands/notification/commands.ts @@ -1,5 +1,5 @@ import { NotificationEnum } from './enums'; -import { SendNotificationCommandArguments } from './types'; +import { SendNotificationCommandArguments, SetDisplayNotificationsArguments } from './types'; export const notification = { /** @@ -14,4 +14,16 @@ export const notification = { }), ); }, + /** + * Decides if notifications stop being displayed. + */ + setDisplayNotifications: (isNotificationDisplaying: boolean) => { + window.dispatchEvent( + new CustomEvent< + SetDisplayNotificationsArguments + >(NotificationEnum.SET_DISPLAY, { + detail: { isNotificationDisplaying }, + }), + ); + }, }; diff --git a/src/ui-commands/notification/enums.ts b/src/ui-commands/notification/enums.ts index 1d4519d3..3e0f7c21 100644 --- a/src/ui-commands/notification/enums.ts +++ b/src/ui-commands/notification/enums.ts @@ -1,5 +1,6 @@ export enum NotificationEnum { SEND = 'SEND_NOTIFICATION', + SET_DISPLAY = 'SET_DISPLAY' } export enum NotificationTypeUiCommand { diff --git a/src/ui-commands/notification/types.ts b/src/ui-commands/notification/types.ts index 8159c8f0..6c6cc7ed 100644 --- a/src/ui-commands/notification/types.ts +++ b/src/ui-commands/notification/types.ts @@ -15,6 +15,11 @@ export interface SendNotificationCommandArguments { small?: boolean; } +export interface SetDisplayNotificationsArguments { + isNotificationDisplaying: boolean; +} + export interface UiCommandsNotificationObject { send: (information: SendNotificationCommandArguments) => void; + setDisplayNotifications: (isNotificationDisplaying: boolean) => void; } From 110c6de2998334ce88daec1bfab14490c62bd1cc Mon Sep 17 00:00:00 2001 From: Guilherme Leme Date: Fri, 13 Dec 2024 13:52:42 -0300 Subject: [PATCH 2/2] [sendDisplayNotification] - changed the name of the ui-command --- .../component.tsx | 2 +- src/ui-commands/notification/commands.ts | 10 +++++----- src/ui-commands/notification/enums.ts | 4 ++-- src/ui-commands/notification/types.ts | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/samples/sample-action-button-dropdown-plugin/src/components/sample-action-button-dropdown-plugin-item/component.tsx b/samples/sample-action-button-dropdown-plugin/src/components/sample-action-button-dropdown-plugin-item/component.tsx index 729d60d9..54afac99 100644 --- a/samples/sample-action-button-dropdown-plugin/src/components/sample-action-button-dropdown-plugin-item/component.tsx +++ b/samples/sample-action-button-dropdown-plugin/src/components/sample-action-button-dropdown-plugin-item/component.tsx @@ -149,7 +149,7 @@ function SampleActionButtonDropdownPlugin( tooltip: 'this is a button injected by plugin', allowed: true, onClick: () => { - pluginApi.uiCommands.notification.setDisplayNotifications(false); + pluginApi.uiCommands.notification.setEnabledDisplayNotifications(false); }, }), new ActionButtonDropdownOption({ diff --git a/src/ui-commands/notification/commands.ts b/src/ui-commands/notification/commands.ts index c388f5c2..f9b819bc 100644 --- a/src/ui-commands/notification/commands.ts +++ b/src/ui-commands/notification/commands.ts @@ -1,5 +1,5 @@ import { NotificationEnum } from './enums'; -import { SendNotificationCommandArguments, SetDisplayNotificationsArguments } from './types'; +import { SendNotificationCommandArguments, SetEnableDisplayNotificationsArguments } from './types'; export const notification = { /** @@ -17,12 +17,12 @@ export const notification = { /** * Decides if notifications stop being displayed. */ - setDisplayNotifications: (isNotificationDisplaying: boolean) => { + setEnabledDisplayNotifications: (isNotificationDisplayEnabled: boolean) => { window.dispatchEvent( new CustomEvent< - SetDisplayNotificationsArguments - >(NotificationEnum.SET_DISPLAY, { - detail: { isNotificationDisplaying }, + SetEnableDisplayNotificationsArguments + >(NotificationEnum.SET_ENABLED_DISPLAY, { + detail: { isNotificationDisplayEnabled }, }), ); }, diff --git a/src/ui-commands/notification/enums.ts b/src/ui-commands/notification/enums.ts index 3e0f7c21..7052d607 100644 --- a/src/ui-commands/notification/enums.ts +++ b/src/ui-commands/notification/enums.ts @@ -1,6 +1,6 @@ export enum NotificationEnum { - SEND = 'SEND_NOTIFICATION', - SET_DISPLAY = 'SET_DISPLAY' + SEND = 'SEND_NOTIFICATION_COMMAND', + SET_ENABLED_DISPLAY = 'SET_ENABLED_DISPLAY_COMMAND' } export enum NotificationTypeUiCommand { diff --git a/src/ui-commands/notification/types.ts b/src/ui-commands/notification/types.ts index 6c6cc7ed..6bb25427 100644 --- a/src/ui-commands/notification/types.ts +++ b/src/ui-commands/notification/types.ts @@ -15,11 +15,11 @@ export interface SendNotificationCommandArguments { small?: boolean; } -export interface SetDisplayNotificationsArguments { - isNotificationDisplaying: boolean; +export interface SetEnableDisplayNotificationsArguments { + isNotificationDisplayEnabled: boolean; } export interface UiCommandsNotificationObject { send: (information: SendNotificationCommandArguments) => void; - setDisplayNotifications: (isNotificationDisplaying: boolean) => void; + setEnabledDisplayNotifications: (isNotificationDisplayEnabled: boolean) => void; }