| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | using MediaBrowser.Common.Configuration;using MediaBrowser.Controller.Entities;using System;using System.IO;using System.Linq;using System.Runtime.Serialization;using System.Threading;using System.Threading.Tasks;using CommonIO;using MediaBrowser.Controller.Providers;namespace MediaBrowser.Server.Implementations.Devices{    public class CameraUploadsFolder : BasePluginFolder, ISupportsUserSpecificView    {        public CameraUploadsFolder()        {            Name = "Camera Uploads";        }        public override bool IsVisible(User user)        {            if (!user.Policy.EnableAllFolders && !user.Policy.EnabledFolders.Contains(Id.ToString("N"), StringComparer.OrdinalIgnoreCase))            {                return false;            }            return base.IsVisible(user) && HasChildren();        }        [IgnoreDataMember]        public override string CollectionType        {            get { return Model.Entities.CollectionType.Photos; }        }        public override string GetClientTypeName()        {            return typeof(CollectionFolder).Name;        }        private bool? _hasChildren;        private bool HasChildren()        {            if (!_hasChildren.HasValue)            {                _hasChildren = LibraryManager.GetItemIds(new InternalItemsQuery { ParentId = Id }).Count > 0;            }            return _hasChildren.Value;        }        protected override Task ValidateChildrenInternal(IProgress<double> progress, CancellationToken cancellationToken, bool recursive, bool refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService)        {            _hasChildren = null;            return base.ValidateChildrenInternal(progress, cancellationToken, recursive, refreshChildMetadata, refreshOptions, directoryService);        }        [IgnoreDataMember]        public bool EnableUserSpecificView        {            get { return true; }        }    }    public class CameraUploadsDynamicFolder : IVirtualFolderCreator    {        private readonly IApplicationPaths _appPaths;        private readonly IFileSystem _fileSystem;        public CameraUploadsDynamicFolder(IApplicationPaths appPaths, IFileSystem fileSystem)        {            _appPaths = appPaths;            _fileSystem = fileSystem;        }        public BasePluginFolder GetFolder()        {            var path = Path.Combine(_appPaths.DataPath, "camerauploads");            _fileSystem.CreateDirectory(path);            return new CameraUploadsFolder            {                Path = path            };        }    }}
 |