internal override async Task <bool> CreateFolderAsync(string name, string path, bool replaceSpaces = true) { if (path.NullEmpty()) { return(false); } SmartItem item = GetServerItem(name, path); if (item == null) { item = InsertItem(new SmartItem(name, path, DateTime.Now.Ticks)); } if (item != null) { item.Status = ItemStatus.Creating; TransferEvents.ItemStatusChanged(item); } bool created = await _createServerFolderAsync(path + name); AppHistory.Add(name, path, " ", path + name, (created) ? ItemStatus.Created : ItemStatus.CreateError); item = GetServerItem(name, path); if (item != null) { item.HasError = !created; item.Status = (created) ? ItemStatus.Created : ItemStatus.CreateError; TransferEvents.ItemStatusChanged(item); } return(created); }
internal override async Task <bool> ChangePermissionsync(SmartItem item, string permission) { SmartItem eitem; if (await _commandChmodAsync(item.FullName, permission)) { eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem != null) { eitem.Status = ItemStatus.PermissionChanged; TransferEvents.ItemStatusChanged(eitem); } AppHistory.Add(item.ItemName, item.ItemFolder, item.Permissions, permission, ItemStatus.PermissionChanged); item.Permissions = permission; return(true); } else if (await retryAsync()) { return(await ChangePermissionsync(item, permission)); } AppHistory.Add(item.ItemName, item.ItemFolder, item.Permissions, permission, ItemStatus.PermissionError); eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem != null) { eitem.Status = ItemStatus.PermissionError; TransferEvents.ItemStatusChanged(eitem); } return(false); }
internal override async Task <bool> DeleteItemAsync(SmartItem item) { SmartItem eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem != null) { eitem.Status = ItemStatus.Deleting; TransferEvents.ItemStatusChanged(eitem); } bool deleted = false; if (item.IsFile) { if (await _commandDeleAsync(item.FullName)) { deleted = true; } } else if (isRMDA) { if (await _commandRmdaAsync(item.FullName)) { deleted = true; } } else if (await _deleteFolderAsync(item.FullName)) { deleted = true; } if (deleted) { AppHistory.Add(item.ItemName, item.ItemFolder, item.ItemFolder, " ", ItemStatus.Deleted); eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem != null) { Items.Remove(eitem); } return(true); } else if (await retryAsync()) { return(await DeleteItemAsync(item)); } AppHistory.Add(item.ItemName, item.ItemFolder, item.ItemFolder, " ", ItemStatus.DeleteError); eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem != null) { eitem.Status = ItemStatus.DeleteError; TransferEvents.ItemStatusChanged(eitem); } return(false); }
internal override async Task <bool> RenameItemAsync(SmartItem item, string toName) { string newName = item.ItemFolder + toName; SmartItem eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem != null) { eitem.Status = ItemStatus.Renaming; TransferEvents.ItemStatusChanged(eitem); } if (await commandRnfrAsync(item.FullName) && await commandRntoAsync(newName)) { AppHistory.Add(toName, item.ItemFolder, item.ItemName, toName, ItemStatus.Renamed); eitem = GetServerItem(item.ItemName, item.ItemFolder, null, true); if (eitem != null) { eitem.ItemName = toName; eitem.FullName = newName; eitem.Status = ItemStatus.Renamed; TransferEvents.ItemStatusChanged(eitem); } return(true); } else if (await retryAsync()) { return(await RenameItemAsync(item, toName)); } AppHistory.Add(item.ItemName, item.ItemFolder, item.ItemName, toName, ItemStatus.RenameError); eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem != null) { eitem.Status = ItemStatus.RenameError; TransferEvents.ItemStatusChanged(eitem); } return(false); }
internal override async Task <bool> MoveItemAsync(SmartItem item, string toPath) { SmartItem eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem != null) { eitem.Status = ItemStatus.Moving; TransferEvents.ItemStatusChanged(eitem); } if (await commandRnfrAsync(item.FullName) && await commandRntoAsync(toPath + item.ItemName)) { AppHistory.Add(item.ItemName, toPath, item.ItemFolder, toPath, ItemStatus.Moved); eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem != null) { Items.Remove(eitem); } return(true); } else if (await retryAsync()) { return(await MoveItemAsync(item, toPath)); } AppHistory.Add(item.ItemName, item.ItemFolder, item.ItemFolder, toPath, ItemStatus.MoveError); eitem = GetServerItem(item.ItemName, item.ItemFolder); if (eitem != null) { eitem.Status = ItemStatus.MoveError; TransferEvents.ItemStatusChanged(eitem); } return(false); }