Esempio n. 1
0
        protected override async Task ExecuteInternal()
        {
            var renamedEventArgs = FileSystemEventArgs
                                   .OfType <RenamedEventArgs>()
                                   .ToList();

            foreach (var renamedEventArg in renamedEventArgs)
            {
                var oldRelativePath = renamedEventArg.OldFullPath.Replace(AccountObject.Path, "")
                                      .Trim(Path.DirectorySeparatorChar);
                var newRelativePath = renamedEventArg.FullPath.Replace(AccountObject.Path, "")
                                      .Trim(Path.DirectorySeparatorChar);

                if (AccountObject.IgnoredFolders.Any(y =>
                                                     oldRelativePath.StartsWith(y, StringComparison.InvariantCultureIgnoreCase)))
                {
                    return;
                }

                var file = await FileRepository.FindAsync(AccountObject.Token, oldRelativePath);

                if (file == null)
                {
                    //something wrong
                    return;
                }

                file.Name   = Path.GetFileName(newRelativePath);
                file.Status = FileStatus.LocallyRenamed;

                if (!file.IsFolder)
                {
                    file.LastWrite = File.GetLastWriteTime(Path.Combine(AccountObject.Path, newRelativePath)).Ticks;
                }
            }

            await FileRepository.SaveAsync();
        }