1 line
No EOL
6.9 KiB
JavaScript
1 line
No EOL
6.9 KiB
JavaScript
import connectionManager from"./../emby-apiclient/connectionmanager.js";import"./../emby-elements/emby-button/emby-button.js";import"./../emby-elements/emby-select/emby-select.js";import"./../emby-elements/emby-scroller/emby-scroller.js";import"./../emby-elements/emby-itemscontainer/emby-itemscontainer.js";import"./../emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js";import dialogHelper from"./../dialoghelper/dialoghelper.js";import layoutManager from"./../layoutmanager.js";import dom from"./../dom.js";import globalize from"./../common/globalize.js";import focusManager from"./../focusmanager.js";import listView from"./../listview/listview.js";import itemShortcuts from"./../shortcuts.js";import formHelper from"./../common/responsehelper.js";function ItemAccessDialog(){}function getEditorHtml(options){let html="";html=(html+='<div is="emby-scroller" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" class="formDialogContent virtualScrollerScrollContainer">')+'<div class="scrollSlider"><form class="dialogContentInner dialog-content-centered padded-left padded-right">';options=options.item;return html=(html=(html+='<div class="selectContainer flex-shrink-zero">')+('<select is="emby-select" class="selectVisibility emby-select-dynamicfielddescription" required="required" label="'+globalize.translate("Visibility")+'" data-menu="custom">'))+('<option value="private" data-description="'+globalize.translate("MakePrivateDescription")+'">'+globalize.translate("Private")+"</option>"),"Playlist"===options.Type?html+='<option value="public" data-description="'+globalize.translate("MakePublicDescription")+'">'+globalize.translate("Collaborative")+"</option>":html+='<option value="public" data-description="'+globalize.translate("MakePublicDescription")+'">'+globalize.translate("Public")+"</option>",html=(html=(html=(html=(html=(html=(html=(html=(html+="</select>")+'<div class="fieldDescription dynamicFieldDescription hide"></div>'+"</div>")+'<div class="userItemAccessContainer hide">'+'<div class="flex secondaryText" style="margin:2em 0 0;">')+('<h3 class="flex-grow" style="margin:0;">'+globalize.translate("User"))+"</h3>")+('<h3 style="margin:0;">'+globalize.translate("Access")))+"</h3>"+"</div>")+'<div is="emby-itemscontainer" data-virtualscrolllayout="vertical-grid" class="itemsContainer allItemsContainer itemsContainer-defaultCardSize vertical-wrap padded-bottom-page">'+"</div>")+"</div>"+"</form>")+"</div>"+"</div>"}function autoFocus(){var dlg=this.dlg;focusManager.autoFocus(dlg,{skipIfNotEnabled:!0})}function onDialogClosed(){return this.result?(this.cleanup(),Promise.resolve()):(this.cleanup(),Promise.reject())}function onItemAction(e){layoutManager.tv&&e.target.closest(".listItem").querySelector("select").click()}function onAllItemsContainerUpgraded(){this.itemsContainer.resume({refresh:!0}).then(autoFocus.bind(this))}function onOpened(){var itemsContainer=this.itemsContainer;itemsContainer.resume?onAllItemsContainerUpgraded.call(this):dom.addEventListener(itemsContainer,"upgraded",onAllItemsContainerUpgraded.bind(this),{once:!0})}function onVisibilityChange(e){let instance=this,options=instance.options;var item=options.item;let apiClient=connectionManager.getApiClient(item);e=e.target.value;let promise;return(promise="public"===e?apiClient.makePublic(item.Id):apiClient.makePrivate(item.Id)).then(function(){return apiClient.getItem(apiClient.getCurrentUserId(),options.item.Id,{fields:"ShareLevel",ExcludeFields:"Chapters,MediaSources,MediaStreams,People,Overview,Subviews"}).then(function(item){options.item=item,instance.itemsContainer.refreshItems()})})}function onUserAccessChange(e){var item=this.options.item,e=e.target;let itemsContainer=this.itemsContainer;var itemElement=itemShortcuts.getItemElementFromChildNode(e,!1,itemsContainer),itemElement=itemsContainer.getItemFromElement(itemElement),e=e.value;connectionManager.getApiClient(itemElement).updateUserItemAccess({UserIds:[itemElement.Id],ItemIds:[item.Id],ItemAccess:e}).then(function(){itemsContainer.refreshItems()},formHelper.handleErrorResponse)}require(["material-icons","formDialogStyle"]),ItemAccessDialog.prototype.getItems=function(query){let instance=this;var options=instance.options,options=connectionManager.getApiClient(options.item);return options.isMinServerVersion("4.8.0.62")?(query=Object.assign({ItemId:instance.options.item.Id,ExcludeUserIds:options.getCurrentUserId()},query),options.getUsersForItemAccess(query).then(function(result){var itemAccessItem=instance.options.item,items=result.Items;for(let i=0,length=items.length;i<length;i++)items[i].itemAccessItem=itemAccessItem;return result})):Promise.resolve({Items:[],TotalRecordCount:0})},ItemAccessDialog.prototype.getCardOptions=function(items){var fields=["Name"],fields=(fields.push("ProductionYear"),fields.push("ParentName"),{enableDefaultIcon:!0,action:"custom",fields:fields,draggable:!1,draggableXActions:!1,multiSelect:!1,contextMenu:!1,hoverPlayButton:!1,imageSize:"small",enableUserDataButtons:!1,mediaInfo:!1,itemAccessSelection:!0});return fields},ItemAccessDialog.prototype.getListOptions=function(items){return{renderer:listView,options:this.getCardOptions(items),virtualScrollLayout:"vertical-list"}},ItemAccessDialog.prototype.show=function(options){var item=options.item,dialogOptions={removeOnClose:!0,scrollY:!1,autoFocus:!1},dialogOptions=(layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small",dialogHelper.createDialog(dialogOptions));dialogOptions.classList.add("formDialog");let html="";html=(html+='<div class="formDialogHeader">')+'<button type="button" is="emby-dialogclosebutton" closetype="done"></button><h3 class="formDialogHeaderTitle">',"Playlist"===item.Type?html+=globalize.translate("HeaderManageCollaboration"):html+=globalize.translate("HeaderManageAccess"),html=(html+="</h3></div>")+getEditorHtml(options),dialogOptions.innerHTML=html;var selectVisibility=dialogOptions.querySelector(".selectVisibility"),selectVisibility=(selectVisibility.addEventListener("change",onVisibilityChange.bind(this)),selectVisibility.singleValue=item.CanMakePublic?"private":"public",this.dlg=dialogOptions,this.options=options,dialogOptions.querySelector(".allItemsContainer")),item=(selectVisibility.addEventListener("action-null",onItemAction.bind(this)),selectVisibility.fetchData=this.getItems.bind(this),selectVisibility.getListOptions=this.getListOptions.bind(this),selectVisibility.addEventListener("change",onUserAccessChange.bind(this)),selectVisibility.parentContainer=selectVisibility.closest(".userItemAccessContainer"),this.itemsContainer=selectVisibility,dialogOptions.addEventListener("opened",onOpened.bind(this)),onDialogClosed.bind(this));return dialogHelper.open(dialogOptions).then(item,item)},ItemAccessDialog.prototype.closeDialog=function(){var dlg=this.dlg;dlg&&dialogHelper.close(dlg)},ItemAccessDialog.prototype.cleanup=function(){this.listName=null,this.options=null,this.dlg=null,this.itemsContainer=null};export default ItemAccessDialog; |