Codeunit 9041 Data Admin. Page Notification, source in 29
Source29
src/Layers/W1/BaseApp/System/DataAdministration/DataAdminPageNotification.Codeunit.al91 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace System.DataAdministration;
using System.Environment.Configuration;
using System.Threading;
codeunit 9041 "Data Admin. Page Notification"
{
Access = Internal;
var
RefreshNotificationNameTxt: Label 'Suggest the Refresh action on the Data Administration page.';
RefreshNotificationDescriptionTxt: Label 'Suggests the Refresh action or scheduling a job queue entry on the Data Administration page';
RefreshNotificationTxt: Label 'Use the Refresh action to update the data on the page. For large databases this can take a while.';
RefreshActionTxt: Label 'Refresh';
ScheduleJQActionTxt: Label 'Schedule background refresh';
HideNotificationTxt: Label 'Don''t show again';
procedure ShowRefreshNotification()
var
NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt.";
RefreshNotification: Notification;
BlankRecordId: RecordId;
begin
if IsNotificationEnabledForCurrentUser() then begin
RefreshNotification.Id(GetNotificationID());
RefreshNotification.Message(RefreshNotificationTxt);
RefreshNotification.Scope(NOTIFICATIONSCOPE::LocalScope);
RefreshNotification.AddAction(
RefreshActionTxt, CODEUNIT::"Data Admin. Page Notification", 'RefreshTableInformationCache');
RefreshNotification.AddAction(
ScheduleJQActionTxt, CODEUNIT::"Data Admin. Page Notification", 'ScheduleTableInfoRefreshJobQueue');
RefreshNotification.AddAction(
HideNotificationTxt, CODEUNIT::"Data Admin. Page Notification", 'DontNotifyCurrentUserAgain');
NotificationLifecycleMgt.SendNotification(RefreshNotification, BlankRecordId);
end
end;
procedure RefreshTableInformationCache(Notification: Notification)
var
TableInformationCache: Codeunit "Table Information Cache";
begin
TableInformationCache.RefreshTableInformationCache();
end;
procedure ScheduleTableInfoRefreshJobQueue(Notification: Notification)
var
ScheduleTableInfoRefreshJQ: Codeunit "Schedule Table Info Refresh JQ";
begin
ScheduleTableInfoRefreshJQ.ScheduleTableInfoRefreshJobQueue();
end;
procedure DontNotifyCurrentUserAgain(Notification: Notification)
var
MyNotifications: Record "My Notifications";
begin
if not MyNotifications.Disable(GetNotificationID()) then
MyNotifications.InsertDefault(GetNotificationID(), RefreshNotificationNameTxt, RefreshNotificationDescriptionTxt, false);
end;
procedure RecallNotificationForCurrentUser()
var
NotificationToRecall: Notification;
begin
NotificationToRecall.Id := GetNotificationID();
NotificationToRecall.Recall();
end;
local procedure GetNotificationID(): Guid
begin
exit('e055ea6b-a761-4cfa-8077-37666b1bba45');
end;
local procedure IsNotificationEnabledForCurrentUser(): Boolean
var
MyNotifications: Record "My Notifications";
begin
exit(MyNotifications.IsEnabled(GetNotificationID()));
end;
[EventSubscriber(ObjectType::Page, Page::"My Notifications", 'OnInitializingNotificationWithDefaultState', '', false, false)]
local procedure InsertDefaultStateOnInitializingNotificationWithDefaultState()
var
MyNotifications: Record "My Notifications";
begin
MyNotifications.InsertDefault(GetNotificationID(), RefreshNotificationNameTxt, RefreshNotificationDescriptionTxt, true);
end;
}