EmbyCrackedClient/web/settings/notifications.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
6.6 KiB
JavaScript

import ListPage from"./../list/list.js";import globalize from"./../modules/common/globalize.js";import"./../modules/emby-elements/emby-button/emby-button.js";import"./../modules/emby-elements/emby-button/paper-icon-button-light.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";import appRouter from"./../modules/approuter.js";import layoutManager from"./../modules/layoutmanager.js";import{appHost}from"./../modules/common/servicelocator.js";import EntryEditor from"./notificationeditor.js";import pluginManager from"./../modules/common/pluginmanager.js";import"./usernotificationcontroller.js";function showActionSheet(options){return Emby.importModule("./modules/actionsheet/actionsheet.js").then(function(ActionSheet){return ActionSheet.show(options)})}function getConfiguredNotifications(instance){var apiClient=instance.getApiClient();return apiClient.getJSON(apiClient.getUrl("Notifications/Services/Configured",{UserId:instance.getUserId()}))}function getEventTypes(instance){return instance.getApiClient().getNotificationTypes({userId:instance.getUserId()})}function mapService(service){return service.Icon||(service.Icon="notifications"),service}function getService(services,id){return services.filter(function(i){return i.Id===id})[0]}function getSetupModuleUrl(url,apiClient){return pluginManager.getConfigurationResourceUrl(url)}function getDefaultEntry(instance,service){var apiClient=instance.getApiClient();return apiClient.getJSON(apiClient.getUrl("Notifications/Services/Defaults",{UserId:instance.getUserId(),NotifierKey:service.Id}))}function addEntryWithService(instance,service){getEventTypes(instance).then(function(allEventTypes){getDefaultEntry(instance,service).then(function(entry){let apiClient=instance.getApiClient();require([getSetupModuleUrl(entry.SetupModuleUrl,apiClient)],function(EntryFormEditor){EntryFormEditor=EntryFormEditor.setFormValues?EntryFormEditor:new EntryFormEditor({apiClient:apiClient});(new EntryEditor).show({entry:entry,apiClient:apiClient,eventTypes:allEventTypes,entryFormEditor:EntryFormEditor,userId:instance.getUserId()})})})})}function showNewItemDialog(e){let instance=this,apiClient=instance.getApiClient();return apiClient.getJSON(apiClient.getUrl("Notifications/Services",{UserId:instance.getUserId()})).then(function(services){return apiClient.getCurrentUser().then(function(currentUser){currentUser=currentUser.Policy.IsAdministrator&&appHost.supports("serversetup")?globalize.translate("ForAdditionalNotificationOptions",'<a href="'+appRouter.getRouteUrl("PluginCatalog")+'" is="emby-linkbutton" class="button-link">',"</a>"):globalize.translate("ForAdditionalNotificationOptions","","");return showActionSheet({positionTo:e.target.closest("button"),positionY:"bottom",items:services.map(mapService),title:globalize.translate("AddNotification"),bottomText:currentUser,hasItemIcon:!0}).then(function(id){id=getService(services,id);addEntryWithService(instance,id)})})})}function UserNotificationsView(view,params){this.enableAlphaNumericShortcuts=!1,this.enableTotalRecordCountDisplay=!1,this.hasOtherViewButtons=!0,this.supportsViewSettings=!1,ListPage.apply(this,arguments),addNewItemButton(this,view),view.querySelector(".btnAddItem").addEventListener("click",showNewItemDialog.bind(this)),this.itemsContainer.setAttribute("data-monitor","UserNotifications")}function addNewItemButton(instance,view){view.querySelector(".itemsViewSettingsContainer").classList.add("itemsViewSettingsContainer-align-start","readOnlyContent"),view.querySelector(".listTotalRecordCount").insertAdjacentHTML("afterend",'<div><p style="margin-top:0;">'+globalize.translate("NotificationsDescription")+'</p><button is="emby-button" type="button" class="itemsViewSettingsContainer-button raised raised-mini btnAddItem submit" title="'+globalize.translate("AddNotification")+'" aria-label="'+globalize.translate("AddNotification")+'"><i class="md-icon button-icon button-icon-left">&#xe145;</i><span class="emby-button-text">'+globalize.translate("AddNotification")+"</span></button></div>"),instance.itemsContainer.classList.add("readOnlyContent")}function normalizeItem(instance,item,allEventTypes){item.Type="UserNotification",item.ServerId=instance.getApiClient().serverId();let eventIds=item.EventIds||[];instance=allEventTypes.filter(function(eventInfo){return!!eventInfo.Events.filter(function(subEvent){return eventIds.includes(subEvent.Id)}).length});item.EventNames=instance.map(function(eventInfo){return eventInfo.Name}).join(", ")}function normalizeItems(instance,items,allEventTypes){for(let i=0,length=items.length;i<length;i++)normalizeItem(instance,items[i],allEventTypes)}require(["flexStyles"]),Object.assign(UserNotificationsView.prototype,ListPage.prototype),UserNotificationsView.prototype.supportsAlphaPicker=function(){return!1},UserNotificationsView.prototype.getEmptyListMessage=function(){return Promise.resolve("")},UserNotificationsView.prototype.setTitle=function(){},UserNotificationsView.prototype.getItemTypes=function(){return["UserNotification"]},UserNotificationsView.prototype.getItems=function(query){let instance=this;return getConfiguredNotifications(instance).then(function(notifications){return getEventTypes(instance).then(function(allEventTypes){return normalizeItems(instance,notifications,allEventTypes),Promise.resolve({Items:notifications,TotalRecordCount:notifications.length})})})},UserNotificationsView.prototype.getSettingsKey=function(){return"usernotifications"},UserNotificationsView.prototype.getBaseListRendererOptions=function(){var options=ListPage.prototype.getBaseListRendererOptions.apply(this,arguments);return options.draggable=!1,options.draggableXActions=!0,options.action=layoutManager.tv?"menu":"edit",options},UserNotificationsView.prototype.getCardOptions=function(items,settings){var options=ListPage.prototype.getCardOptions.apply(this,arguments);return options.fields.push("Name","EventNames"),options},UserNotificationsView.prototype.getListViewOptions=function(items,settings){var options=ListPage.prototype.getListViewOptions.apply(this,arguments),index=(options.enableDefaultIcon=!0,options.defaultBackground=!1,options.deleteButton=!0,options.moreButton=!1,options.largeHeading=!0,options.buttonCommands=["edit","delete"],options.fields.push("ServiceName","FriendlyName","EventNames"),options.fields.indexOf("Name"));return-1<index&&options.fields.splice(index,1),options},UserNotificationsView.prototype.getUserId=function(){return this.params.userId||this.getApiClient().getCurrentUserId()},UserNotificationsView.prototype.getViewSettingDefaults=function(){var viewSettings=ListPage.prototype.getViewSettingDefaults.apply(this,arguments);return viewSettings.imageType="list",viewSettings};export default UserNotificationsView;