Example #1
0
        private void AddPathsToFolder(IEnumerable <string> paths, RemoteFolder rootFolder)
        {
            var spitPaths = paths.Where(p => !string.IsNullOrEmpty(p))
                            .Select(p => p.Split(new[] { '/' }, 2));

            var pathLookup = spitPaths.GroupBy(p => p[0], p => p.Length > 1 ? p[1]: null);

            foreach (var path in pathLookup)
            {
                var key          = path.Key;
                var shortedPaths = path.ToArray();

                if (shortedPaths.Length == 1 && string.IsNullOrEmpty(shortedPaths[0]))
                {
                    rootFolder.Files.Add(new RemotePath
                    {
                        Name         = key,
                        ParentFolder = rootFolder
                    });
                    continue;
                }

                var subfolder = rootFolder.SubFolders.FirstOrDefault(f => f.Name == key);
                if (subfolder == null)
                {
                    subfolder = new RemoteFolder {
                        Name = key, ParentFolder = rootFolder
                    };
                    rootFolder.SubFolders.Add(subfolder);
                }

                AddPathsToFolder(shortedPaths, subfolder);
            }
        }
Example #2
0
        private async void UpdateFiles()
        {
            filesRootFolder = new RemoteFolder {
                Name = "root"
            };

            var filePaths = await api.GetFiles();

            AddPathsToFolder(filePaths, filesRootFolder);
            OnPropertyChanged(nameof(FilesRootFolder));
        }