private async Task operationCallDeleteFileAsync(string filename, bool checkHash = true) { Debug.WriteLine("Operation CallDelete"); _folderSyncState.DeleteFileInLocalStatus(filename); if (await _serverManager.FileExistsAsync(filename)) { HttpStatusCode deleteResponseCode = HttpStatusCode.NoContent; try { string hash = ""; if (_folderSyncState.RemoteFile(filename) != null) { hash = _folderSyncState.RemoteFile(filename).Hash(); } deleteResponseCode = await _serverManager.DeleteFileAsync(filename, checkHash?hash : null); } catch (Exception ex) { userNotification(filename, SyncNotification.ServerDeleteFail, ex.Message); return; } if (deleteResponseCode == HttpStatusCode.OK) { _folderSyncState.DeleteFileInServerStatus(filename); userNotification(filename, SyncNotification.SuccessfulServerDelete); } else if (deleteResponseCode == HttpStatusCode.Ambiguous) //File in Server is modified. User must decide. { userConfirmationCall(new SyncConflict() { Filename = filename, ConflictType = SyncConflictType.NewerVersionRemoteAndLocalDeleted }); } else { userNotification(filename, SyncNotification.ServerDeleteFail, deleteResponseCode.ToString()); } } else { userNotification(filename, SyncNotification.GeneralInfo, "File doesn't exist on Server"); _folderSyncState.DeleteFileInServerStatus(filename); } }