diff --git a/GitUI/CommandsDialogs/FormCommit.cs b/GitUI/CommandsDialogs/FormCommit.cs index 5648f06babe..054e9807b3a 100644 --- a/GitUI/CommandsDialogs/FormCommit.cs +++ b/GitUI/CommandsDialogs/FormCommit.cs @@ -1947,14 +1947,10 @@ private void Stage(IReadOnlyList items) unstagedFiles.RemoveAll( item => { - if (!item.IsSubmodule) - { - return false; - } - - Task? statusTask = item.GetSubmoduleStatusAsync(); - Validates.NotNull(statusTask); - if (!statusTask.IsCompleted) + if (!item.IsSubmodule + || item.GetSubmoduleStatusAsync() is not Task statusTask + || statusTask is null + || !statusTask.IsCompleted) { return false; } diff --git a/GitUI/GitUIExtensions.cs b/GitUI/GitUIExtensions.cs index 174e9bf40e8..195a1ae31aa 100644 --- a/GitUI/GitUIExtensions.cs +++ b/GitUI/GitUIExtensions.cs @@ -112,18 +112,14 @@ void OpenWithDiffTool() : diffOfConflict; } - if (file.IsSubmodule) + if (file.IsSubmodule + && file.GetSubmoduleStatusAsync() is Task task) { // Patch already evaluated - Task? task = file.GetSubmoduleStatusAsync(); - - if (task is not null) - { - var status = ThreadHelper.JoinableTaskFactory.Run(() => task); - return status is not null - ? LocalizationHelpers.ProcessSubmoduleStatus(fileViewer.Module, status) - : $"Failed to get status for submodule \"{file.Name}\""; - } + var status = ThreadHelper.JoinableTaskFactory.Run(() => task); + return status is not null + ? LocalizationHelpers.ProcessSubmoduleStatus(fileViewer.Module, status) + : $"Failed to get status for submodule \"{file.Name}\""; } var patch = GetItemPatch(fileViewer.Module, file, firstId, selectedId, diff --git a/GitUI/UserControls/FileStatusList.cs b/GitUI/UserControls/FileStatusList.cs index bdf5b6f3c17..064dedc71c0 100644 --- a/GitUI/UserControls/FileStatusList.cs +++ b/GitUI/UserControls/FileStatusList.cs @@ -780,14 +780,13 @@ private ToolStripMenuItem CreateOpenSubmoduleMenuItem() private static string AppendItemSubmoduleStatus(string text, GitItemStatus item) { - if (item.IsSubmodule) + if (item.IsSubmodule + && item.GetSubmoduleStatusAsync() is Task task + && task is not null + && task.IsCompleted + && task.CompletedResult() is not null) { - Task? task = item.GetSubmoduleStatusAsync(); - - if (task != null && task.IsCompleted && task.CompletedResult() is not null) - { - text += task.CompletedResult()!.AddedAndRemovedString(); - } + text += task.CompletedResult()!.AddedAndRemovedString(); } return text; @@ -926,8 +925,10 @@ private void UpdateFileStatusListView(bool updateCausedByFilter = false) listItem.ImageIndex = GetItemImageIndex(item); } - Task? task = item.GetSubmoduleStatusAsync(); - if (task is not null && !task.IsCompleted) + if (item.IsSubmodule + && item.GetSubmoduleStatusAsync() is Task task + && task is not null + && !task.IsCompleted) { var capturedItem = item; @@ -1020,14 +1021,11 @@ static string GetItemImageKey(GitItemStatus gitItemStatus) if (gitItemStatus.IsSubmodule) { - Task? task = gitItemStatus.GetSubmoduleStatusAsync(); - if (task is null || !task.IsCompleted) - { - return gitItemStatus.IsDirty ? nameof(Images.SubmoduleDirty) : nameof(Images.SubmodulesManage); - } - - var status = task.CompletedResult(); - if (status is null) + if (gitItemStatus.GetSubmoduleStatusAsync() is not Task task + || task is null + || !task.IsCompleted + || task.CompletedResult() is not GitSubmoduleStatus status + || status is null) { return gitItemStatus.IsDirty ? nameof(Images.SubmoduleDirty) : nameof(Images.SubmodulesManage); }