public async Task <IResult <Folder> > Search(string nameToSearch, int page)
        {
            var homePathResult = _pathManager.Combine(_configuration.HomeFolderPath, _configuration.HomeFolderName);

            if (!homePathResult.IsSuccess)
            {
                return(new FailureResult <Folder>(homePathResult.Exception));
            }

            var homeFolderResult = _folderProvider.GetFolder(homePathResult.Data);

            if (!homeFolderResult.IsSuccess)
            {
                return(new FailureResult <Folder>(homeFolderResult.Exception));
            }

            var loadSearchResults = await homeFolderResult.Data.LoadSearchPageAsync(nameToSearch, page);

            if (!loadSearchResults.IsSuccess)
            {
                return(new FailureResult <Folder>(loadSearchResults.Exception));
            }

            return(new SuccessResult <Folder>(homeFolderResult.Data));
        }
        public async Task SetDiscs(IEnumerable <AddedDiscInfo> discs, CancellationToken cancellationToken)
        {
            ClearDiscItems();

            var discsList      = discs.ToList();
            var libraryArtists = await artistService.GetAllArtists(cancellationToken);

            var availableGenres = await genreService.GetAllGenres(cancellationToken);

            // For genre guessing we use all discs, including deleted.
            var allDiscs = await discService.GetAllDiscs(cancellationToken);

            foreach (var addedDiscInfo in discsList)
            {
                var parentFolder = await folderProvider.GetFolder(addedDiscInfo.DestinationFolderPath, cancellationToken);

                var folderExists = parentFolder != null;

                var existingDisc = parentFolder?.Discs.SingleOrDefault(d => d.TreeTitle == addedDiscInfo.TreeTitle);

                var availableArtists = BuildAvailableArtistsList(addedDiscInfo, libraryArtists);

                DiscViewItem discViewItem = existingDisc != null ?
                                            new ExistingDiscViewItem(existingDisc, addedDiscInfo, availableArtists, availableGenres) :
                                            new NewDiscViewItem(addedDiscInfo, folderExists, availableArtists, availableGenres, GuessArtistGenre(allDiscs, addedDiscInfo.Artist));

                discViewItem.PropertyChanged += DiscItem_PropertyChanged;
                Discs.Add(discViewItem);
            }
        }
Exemple #3
0
        public async Task <IResult <Void> > CreateFolderAsync(
            string name,
            string path,
            IFolderProvider <T> folderProvider = null)
        {
            folderProvider = folderProvider ?? FolderProvider;

            var folderResult = folderProvider.GetFolder(path);

            if (!folderResult.IsSuccess)
            {
                return(new FailureResult(folderResult.Exception));
            }

            var addChildFolderResult = await folderResult.Data.AddChildFolderAsync(name);

            if (!addChildFolderResult.IsSuccess)
            {
                return(new FailureResult(addChildFolderResult.Exception));
            }

            return(new SuccessResult());
        }