From e15a34963212d33040e425cfe03891a62174273d Mon Sep 17 00:00:00 2001 From: Rex Lorenzo Date: Wed, 22 Jul 2026 20:42:53 -0700 Subject: [PATCH] refactor(async): drop fake-async Task.Run wrappers - convert controller actions and view components with no real async work to synchronous signatures - keep the two legitimate Task.Run offloads (blocking LDAP bind, network-share File.Exists) with comments explaining why --- test/RAPS/RAPSControllerTests.cs | 7 +- .../Controllers/DirectoryController.cs | 14 +- web/Areas/RAPS/Controllers/RAPSController.cs | 123 +++++++++--------- web/Areas/Students/Services/PhotoService.cs | 2 + web/Classes/HealthChecks/LdapHealthCheck.cs | 2 + .../Shared/Components/CMSBlocks/CMSBlocks.cs | 4 +- .../EmulationBanner/EmulationBanner.cs | 6 +- .../Shared/Components/LeftNav/LeftNav.cs | 4 +- .../Shared/Components/MainNav/MainNav.cs | 4 +- .../Shared/Components/MiniNav/MiniNav.cs | 4 +- .../Components/ProfilePic/ProfilePic.cs | 4 +- .../SessionTimeout/SessionTimeout.cs | 4 +- .../Shared/Components/VueCdn/VueCdnCreate.cs | 4 +- .../Shared/Components/VueCdn/VueCdnInit.cs | 4 +- .../VueTableDefault/VueTableDefault.cs | 4 +- 15 files changed, 99 insertions(+), 91 deletions(-) diff --git a/test/RAPS/RAPSControllerTests.cs b/test/RAPS/RAPSControllerTests.cs index 2ceef2788..2f8071a0a 100644 --- a/test/RAPS/RAPSControllerTests.cs +++ b/test/RAPS/RAPSControllerTests.cs @@ -68,7 +68,7 @@ public async Task RolePermissions_ReturnsView_ForValidRoleId() using var context = await CreateContextAsync(connection); var controller = CreateController(context); - var result = await controller.RolePermissions(5); + var result = controller.RolePermissions(5); var view = Assert.IsType(result); Assert.Equal(5, view.ViewData["roleId"]); @@ -215,6 +215,11 @@ public async Task GroupSync_RunsSyncInItsOwnScope_WhenGroupExists() scope.Received(1).Dispose(); } + private static Task AssertBadRequestForInvalidModelStateAsync(Func action) + { + return AssertBadRequestForInvalidModelStateAsync(c => Task.FromResult(action(c))); + } + private static async Task AssertBadRequestForInvalidModelStateAsync(Func> action) { using var connection = await OpenConnectionAsync(); diff --git a/web/Areas/Directory/Controllers/DirectoryController.cs b/web/Areas/Directory/Controllers/DirectoryController.cs index 40858bc7f..ba2b6b285 100644 --- a/web/Areas/Directory/Controllers/DirectoryController.cs +++ b/web/Areas/Directory/Controllers/DirectoryController.cs @@ -33,19 +33,19 @@ public DirectoryController(AAUDContext aaud, RAPSContext rapsContext) /// Directory home page /// [Route("")] - public async Task Index(string? useExample) + public ActionResult Index(string? useExample) { - return await Task.Run(() => View("~/Areas/Directory/Views/Card.cshtml")); + return View("~/Areas/Directory/Views/Card.cshtml"); } /// /// Directory home page /// [Route("nav")] - public async Task>> Nav() + public ActionResult> Nav() { var nav = new List(); - return await Task.Run(() => nav); + return nav; } @@ -105,12 +105,12 @@ public async Task>> GetUCD(stri /// /// Directory results /// - /// User ID + /// Mothra ID [Route("userInfo/{mothraID}")] - public async Task DirectoryResult(string mothraID) + public IActionResult DirectoryResult(string mothraID) { // pull in the user based on uid - return await Task.Run(() => View("~/Areas/Directory/Views/UserInfo.cshtml")); + return View("~/Areas/Directory/Views/UserInfo.cshtml"); } /// diff --git a/web/Areas/RAPS/Controllers/RAPSController.cs b/web/Areas/RAPS/Controllers/RAPSController.cs index 10aa59977..bd1d7d515 100644 --- a/web/Areas/RAPS/Controllers/RAPSController.cs +++ b/web/Areas/RAPS/Controllers/RAPSController.cs @@ -78,19 +78,19 @@ public override async Task OnActionExecutionAsync(ActionExecutingContext context /// RAPS home page /// [Route("/[area]/{instance?}")] - public async Task Index(string? instance) + public ActionResult Index(string? instance) { ViewData["KeyColumnName"] = "RoleId"; instance ??= _securityService.GetDefaultInstanceForUser(); return instance.ToUpper() switch { - "VIPER" => await Task.Run(() => Redirect("~/raps/VIPER/rolelist")), - "VMACS.VMTH" => await Task.Run(() => Redirect("~/raps/VMACS.VMTH/rolelist")), - "VMACS.VMLF" => await Task.Run(() => Redirect("~/raps/VMACS.VMLF/rolelist")), - "VMACS.UCVMCSD" => await Task.Run(() => Redirect("~/raps/VMACS.UCVMCSD/rolelist")), - "VIPERFORMS" => await Task.Run(() => Redirect("~/raps/ViperForms/rolelist")), - _ => await Task.Run(() => View("~/Views/Home/403.cshtml")), + "VIPER" => Redirect("~/raps/VIPER/rolelist"), + "VMACS.VMTH" => Redirect("~/raps/VMACS.VMTH/rolelist"), + "VMACS.VMLF" => Redirect("~/raps/VMACS.VMLF/rolelist"), + "VMACS.UCVMCSD" => Redirect("~/raps/VMACS.UCVMCSD/rolelist"), + "VIPERFORMS" => Redirect("~/raps/ViperForms/rolelist"), + _ => View("~/Views/Home/403.cshtml"), }; } @@ -221,23 +221,23 @@ public async Task Nav(int? roleId, int? permissionId, string? memberId, /// RAPS Role List. Will show ListAdmin or List view. /// Open to admins, IT people for VMACS roles, and Role "owners" for their roles. /// - /// RAPS Instance + /// RAPS Instance [Route("/[area]/{instance}/[action]")] - public async Task RoleList(string instance) + public IActionResult RoleList(string instance) { if (UserHelper.HasPermission(_RAPSContext, UserHelper.GetCurrentUser(), "RAPS.Admin")) { - return await Task.Run(() => View("~/Areas/RAPS/Views/Roles/ListAdmin.cshtml")); + return View("~/Areas/RAPS/Views/Roles/ListAdmin.cshtml"); } if (_securityService.IsAllowedTo("ViewAllRoles", instance) || !_securityService.GetControlledRoleIds(UserHelper.GetCurrentUser()?.MothraId).IsNullOrEmpty()) { - return await Task.Run(() => View("~/Areas/RAPS/Views/Roles/List.cshtml")); + return View("~/Areas/RAPS/Views/Roles/List.cshtml"); } //TODO: Should probably have a deny access helper function that writes logs and sets view - return await Task.Run(() => View("~/Views/Home/403.cshtml")); + return View("~/Views/Home/403.cshtml"); } /// @@ -245,15 +245,15 @@ public async Task RoleList(string instance) /// [Route("/[area]/{instance}/[action]")] [Permission(Allow = "RAPS.Admin,RAPS.ViewRoles")] - public async Task RoleTemplateList(string instance) + public IActionResult RoleTemplateList(string instance) { if (!_securityService.IsAllowedTo("ViewRoles", instance)) { - return await Task.Run(() => View("~/Views/Home/403.cshtml")); + return View("~/Views/Home/403.cshtml"); } ViewData["canEditRoleTemplates"] = _securityService.IsAllowedTo("EditRoleTemplates", instance); ViewData["canApplyTemplates"] = _securityService.IsAllowedTo("EditRoleMembership", instance); - return await Task.Run(() => View("~/Areas/RAPS/Views/Roles/Templates.cshtml")); + return View("~/Areas/RAPS/Views/Roles/Templates.cshtml"); } /// @@ -261,13 +261,13 @@ public async Task RoleTemplateList(string instance) /// [Route("/[area]/{instance}/[action]")] [Permission(Allow = "RAPS.Admin,RAPS.EditRoleMembership")] - public async Task RoleTemplateApply(string instance) + public IActionResult RoleTemplateApply(string instance) { if (!_securityService.IsAllowedTo("EditRoleMembership", instance)) { - return await Task.Run(() => View("~/Views/Home/403.cshtml")); + return View("~/Views/Home/403.cshtml"); } - return await Task.Run(() => View("~/Areas/RAPS/Views/Roles/ApplyTemplate.cshtml")); + return View("~/Areas/RAPS/Views/Roles/ApplyTemplate.cshtml"); } /// @@ -275,13 +275,13 @@ public async Task RoleTemplateApply(string instance) /// [Route("/[area]/{instance}/[action]")] [Permission(Allow = "RAPS.Admin,RAPS.EditRoles")] - public async Task RoleTemplateRoles(string instance) + public IActionResult RoleTemplateRoles(string instance) { if (!_securityService.IsAllowedTo("EditRoleTemplates", instance)) { - return await Task.Run(() => View("~/Views/Home/403.cshtml")); + return View("~/Views/Home/403.cshtml"); } - return await Task.Run(() => View("~/Areas/RAPS/Views/Roles/TemplateRoles.cshtml")); + return View("~/Areas/RAPS/Views/Roles/TemplateRoles.cshtml"); } /// @@ -289,10 +289,10 @@ public async Task RoleTemplateRoles(string instance) /// [Permission(Allow = "RAPS.Admin")] [Route("/[area]/{instance}/DelegateRoles")] - public async Task DelegateRoles() + public IActionResult DelegateRoles() { - return await Task.Run(() => View("~/Areas/RAPS/Views/Roles/DelegateRoles.cshtml")); + return View("~/Areas/RAPS/Views/Roles/DelegateRoles.cshtml"); } /// @@ -329,12 +329,11 @@ public async Task RoleMembers(string instance, int RoleId) /// [Permission(Allow = "RAPS.Admin,RAPS.ViewPermissions")] [Route("/[area]/{Instance}/[action]")] - public async Task PermissionList() + public IActionResult PermissionList() { - return await Task.Run(() => - UserHelper.HasPermission(_RAPSContext, UserHelper.GetCurrentUser(), "RAPS.Admin") - ? View("~/Areas/RAPS/Views/Permissions/ListAdmin.cshtml") - : View("~/Areas/RAPS/Views/Permissions/List.cshtml")); + return UserHelper.HasPermission(_RAPSContext, UserHelper.GetCurrentUser(), "RAPS.Admin") + ? View("~/Areas/RAPS/Views/Permissions/ListAdmin.cshtml") + : View("~/Areas/RAPS/Views/Permissions/List.cshtml"); } /// @@ -342,28 +341,28 @@ public async Task PermissionList() /// [Permission(Allow = "RAPS.Admin,RAPS.ManageAllPermissions")] [Route("/[area]/{Instance}/[action]")] - public async Task RolePermissions(int roleId) + public IActionResult RolePermissions(int roleId) { if (!ModelState.IsValid) { return BadRequest(); } ViewData["roleId"] = roleId; - return await Task.Run(() => View("~/Areas/RAPS/Views/Roles/Permissions.cshtml")); + return View("~/Areas/RAPS/Views/Roles/Permissions.cshtml"); } /// /// Compare permissions for two roles /// [Route("/[area]/{Instance}/[action]")] - public async Task RolePermissionsComparison(string instance) + public IActionResult RolePermissionsComparison(string instance) { if (_securityService.IsAllowedTo("EditRoleMembership", instance)) { - return await Task.Run(() => View("~/Areas/RAPS/Views/Roles/PermissionComparison.cshtml")); + return View("~/Areas/RAPS/Views/Roles/PermissionComparison.cshtml"); } - return await Task.Run(() => View("~/Views/Home/403.cshtml")); + return View("~/Views/Home/403.cshtml"); } /// @@ -385,7 +384,7 @@ public async Task PermissionMembers(int? permissionId) { return NotFound(); } - return await Task.Run(() => View("~/Areas/RAPS/Views/Permissions/Members.cshtml")); + return View("~/Areas/RAPS/Views/Permissions/Members.cshtml"); } /// @@ -407,7 +406,7 @@ public async Task PermissionRoles(int? permissionId) { return NotFound(); } - return await Task.Run(() => View("~/Areas/RAPS/Views/Permissions/Roles.cshtml")); + return View("~/Areas/RAPS/Views/Permissions/Roles.cshtml"); } [Permission(Allow = "RAPS.Admin,RAPS.ViewPermissions")] @@ -426,7 +425,7 @@ public async Task PermissionRolesRO(int? permissionId) { return NotFound(); } - return await Task.Run(() => View("~/Areas/RAPS/Views/Permissions/RolesRO.cshtml")); + return View("~/Areas/RAPS/Views/Permissions/RolesRO.cshtml"); } [Permission(Allow = "RAPS.Admin,RAPS.ViewPermissions")] @@ -445,7 +444,7 @@ public async Task AllMembersWithPermission(int? permissionId) { return NotFound(); } - return await Task.Run(() => View("~/Areas/RAPS/Views/Permissions/AllMembers.cshtml")); + return View("~/Areas/RAPS/Views/Permissions/AllMembers.cshtml"); } /** @@ -457,13 +456,13 @@ public async Task AllMembersWithPermission(int? permissionId) /// [Permission(Allow = "RAPS.Admin,RAPS.UserLookup")] [Route("/[area]/{Instance}/[action]")] - public async Task UserSearch(string instance) + public IActionResult UserSearch(string instance) { ViewData["canRSOP"] = _securityService.IsAllowedTo("RSOP", instance); ViewData["canEditRoleMembership"] = _securityService.IsAllowedTo("EditRoleMembership", instance); ViewData["canEditMemberPermissions"] = _securityService.IsAllowedTo("EditMemberPermissions", instance); ViewData["canViewHistory"] = _securityService.IsAllowedTo("ViewHistory", instance); - return await Task.Run(() => View("~/Areas/RAPS/Views/Members/List.cshtml")); + return View("~/Areas/RAPS/Views/Members/List.cshtml"); } /// @@ -471,7 +470,7 @@ public async Task UserSearch(string instance) /// [Permission(Allow = "RAPS.Admin,RAPS.EditRoleMembership")] [Route("/[area]/{Instance}/[action]")] - public async Task MemberRoles(string instance) + public IActionResult MemberRoles(string instance) { ViewData["canEditPermissions"] = _securityService.IsAllowedTo("ManageAllPermissions", instance); //EditRoleMembership grants access only to the VMACS instance @@ -480,7 +479,7 @@ public async Task MemberRoles(string instance) //TODO: Should probably have a deny access helper function that writes logs and sets view return View("~/Views/Home/403.cshtml"); } - return await Task.Run(() => View("~/Areas/RAPS/Views/Members/Roles.cshtml")); + return View("~/Areas/RAPS/Views/Members/Roles.cshtml"); } /// @@ -488,9 +487,9 @@ public async Task MemberRoles(string instance) /// [Permission(Allow = "RAPS.Admin,RAPS.EditMemberPermissions")] [Route("/[area]/{Instance}/[action]")] - public async Task MemberPermissions() + public IActionResult MemberPermissions() { - return await Task.Run(() => View("~/Areas/RAPS/Views/Members/Permissions.cshtml")); + return View("~/Areas/RAPS/Views/Members/Permissions.cshtml"); } /// @@ -498,7 +497,7 @@ public async Task MemberPermissions() /// [Permission(Allow = "RAPS.Admin,RAPS.RSOP")] [Route("/[area]/{Instance}/[action]")] - public async Task RSOP(string instance) + public IActionResult RSOP(string instance) { //RSOP grants access only to the VMACS instance if (!_securityService.IsAllowedTo("RSOP", instance)) @@ -506,7 +505,7 @@ public async Task RSOP(string instance) //TODO: Should probably have a deny access helper function that writes logs and sets view return View("~/Views/Home/403.cshtml"); } - return await Task.Run(() => View("~/Areas/RAPS/Views/Members/RSOP.cshtml")); + return View("~/Areas/RAPS/Views/Members/RSOP.cshtml"); } /// @@ -514,7 +513,7 @@ public async Task RSOP(string instance) /// [Permission(Allow = "RAPS.Admin,RAPS.EditRoleMembership")] [Route("/[area]/{Instance}/[action]")] - public async Task MemberHistory(string instance) + public IActionResult MemberHistory(string instance) { //EditRoleMembership grants access only to the VMACS instance if (!_securityService.IsAllowedTo("ViewHistory", instance)) @@ -522,18 +521,18 @@ public async Task MemberHistory(string instance) //TODO: Should probably have a deny access helper function that writes logs and sets view return View("~/Views/Home/403.cshtml"); } - return await Task.Run(() => View("~/Areas/RAPS/Views/Members/History.cshtml")); + return View("~/Areas/RAPS/Views/Members/History.cshtml"); } [Permission(Allow = "RAPS.Admin,RAPS.Clone")] [Route("/[area]/{Instance}/[action]")] - public async Task UserClone(string instance) + public IActionResult UserClone(string instance) { if (!_securityService.IsAllowedTo("Clone", instance)) { return View("~/Views/Home/403.cshtml"); } - return await Task.Run(() => View("~/Areas/RAPS/Views/Members/Clone.cshtml")); + return View("~/Areas/RAPS/Views/Members/Clone.cshtml"); } [Permission(Allow = "RAPS.Admin")] @@ -557,7 +556,7 @@ public async Task ExportToVMACS(string? server = null, string? lo ViewData["Servers"] = servers; } - return await Task.Run(() => View("~/Areas/RAPS/Views/Export.cshtml")); + return View("~/Areas/RAPS/Views/Export.cshtml"); } [Permission(Allow = "RAPS.Admin")] @@ -566,28 +565,28 @@ public async Task RoleViewUpdate() { ViewData["Messages"] = await new RoleViews(_RAPSContext) .UpdateRoles(debugOnly: true); - return await Task.Run(() => View("~/Areas/RAPS/Views/RoleViewUpdate.cshtml")); + return View("~/Areas/RAPS/Views/RoleViewUpdate.cshtml"); } [Permission(Allow = "RAPS.Admin,RAPS.OUGroupsView")] [Route("/[area]/{Instance}/[action]")] - public async Task GroupList() + public IActionResult GroupList() { - return await Task.Run(() => View("~/Areas/RAPS/Views/Groups/List.cshtml")); + return View("~/Areas/RAPS/Views/Groups/List.cshtml"); } [Permission(Allow = "RAPS.Admin,RAPS.OUGroupsView")] [Route("/[area]/{Instance}/[action]")] - public async Task GroupRoles() + public IActionResult GroupRoles() { - return await Task.Run(() => View("~/Areas/RAPS/Views/Groups/Roles.cshtml")); + return View("~/Areas/RAPS/Views/Groups/Roles.cshtml"); } [Permission(Allow = "RAPS.Admin,RAPS.OUGroupsView")] [Route("/[area]/{Instance}/[action]")] - public async Task GroupMembers() + public IActionResult GroupMembers() { - return await Task.Run(() => View("~/Areas/RAPS/Views/Groups/Members.cshtml")); + return View("~/Areas/RAPS/Views/Groups/Members.cshtml"); } [Permission(Allow = "RAPS.Admin,RAPS.OUGroupsView")] @@ -606,7 +605,7 @@ public async Task GroupSync(int groupId) } ViewData["Group"] = group; - return await Task.Run(() => View("~/Areas/RAPS/Views/Groups/Sync.cshtml")); + return View("~/Areas/RAPS/Views/Groups/Sync.cshtml"); } /// @@ -636,16 +635,16 @@ or LdapException or DirectoryOperationException [Permission(Allow = "RAPS.Admin,RAPS.OUGroupsView")] [Route("/[area]/{Instance}/[action]")] - public async Task CreateADGroup() + public IActionResult CreateADGroup() { - return await Task.Run(() => View("~/Areas/RAPS/Views/Groups/CreateADGroup.cshtml")); + return View("~/Areas/RAPS/Views/Groups/CreateADGroup.cshtml"); } [Permission(Allow = "RAPS.ViewAuditTrail")] [Route("/[area]/{Instance}/[action]")] - public async Task AuditTrail() + public IActionResult AuditTrail() { - return await Task.Run(() => View("~/Areas/RAPS/Views/AuditLog.cshtml")); + return View("~/Areas/RAPS/Views/AuditLog.cshtml"); } } } diff --git a/web/Areas/Students/Services/PhotoService.cs b/web/Areas/Students/Services/PhotoService.cs index 93ef0788e..3b1db7149 100644 --- a/web/Areas/Students/Services/PhotoService.cs +++ b/web/Areas/Students/Services/PhotoService.cs @@ -118,6 +118,8 @@ public async Task StudentPhotoExistsAsync(string mailId) return false; } + // Legitimate Task.Run: File.Exists is blocking I/O (photo store may be a + // network share) and callers fan these checks out with Task.WhenAll. return await Task.Run(() => { var photoPath = GetPhotoPath(mailId); diff --git a/web/Classes/HealthChecks/LdapHealthCheck.cs b/web/Classes/HealthChecks/LdapHealthCheck.cs index 71dd5dd9d..82be4d52d 100644 --- a/web/Classes/HealthChecks/LdapHealthCheck.cs +++ b/web/Classes/HealthChecks/LdapHealthCheck.cs @@ -32,6 +32,8 @@ public async Task CheckHealthAsync( try { + // Legitimate Task.Run: S.DS.Protocols has no async API, so the + // blocking LDAP bind is offloaded to keep the caller responsive. await Task.Run(() => { var ldapIdentifier = new LdapDirectoryIdentifier(_ldapServer, _ldapSSLPort); diff --git a/web/Views/Shared/Components/CMSBlocks/CMSBlocks.cs b/web/Views/Shared/Components/CMSBlocks/CMSBlocks.cs index aa2c10d97..6ec9c3a64 100644 --- a/web/Views/Shared/Components/CMSBlocks/CMSBlocks.cs +++ b/web/Views/Shared/Components/CMSBlocks/CMSBlocks.cs @@ -16,11 +16,11 @@ public CMSBlocksViewComponent(VIPERContext viperContext, RAPSContext rapsContext CMS = new CMS(viperContext, rapsContext, sanitizerService); } - public async Task InvokeAsync(int? contentBlockID, string? friendlyName, string? system, string? viperSectionPath, string? page, int? blockOrder, bool? allowPublicAccess, int? status) + public IViewComponentResult Invoke(int? contentBlockID, string? friendlyName, string? system, string? viperSectionPath, string? page, int? blockOrder, bool? allowPublicAccess, int? status) { List? blocks = CMS.GetContentBlocksAllowed(contentBlockID, friendlyName, system, viperSectionPath, page, blockOrder, allowPublicAccess, status)?.ToList(); - return await Task.Run(() => View("Default", blocks)); + return View("Default", blocks); } } diff --git a/web/Views/Shared/Components/EmulationBanner/EmulationBanner.cs b/web/Views/Shared/Components/EmulationBanner/EmulationBanner.cs index 4f4c7e18a..aa328c275 100644 --- a/web/Views/Shared/Components/EmulationBanner/EmulationBanner.cs +++ b/web/Views/Shared/Components/EmulationBanner/EmulationBanner.cs @@ -5,16 +5,16 @@ namespace Viper.Views.Shared.Components.EmulationBanner [ViewComponent(Name = "EmulationBanner")] public class EmulationBannerViewComponent : ViewComponent { - public async Task InvokeAsync() + public IViewComponentResult Invoke() { IUserHelper UserHelper = new UserHelper(); if (!UserHelper.IsEmulating()) { - return await Task.Run(() => (IViewComponentResult)Content(string.Empty)); + return Content(string.Empty); } string? displayFullName = UserHelper.GetCurrentUser()?.DisplayFullName; - return await Task.Run(() => View("Default", displayFullName)); + return View("Default", displayFullName); } } } diff --git a/web/Views/Shared/Components/LeftNav/LeftNav.cs b/web/Views/Shared/Components/LeftNav/LeftNav.cs index bf06ee092..af1b1567a 100644 --- a/web/Views/Shared/Components/LeftNav/LeftNav.cs +++ b/web/Views/Shared/Components/LeftNav/LeftNav.cs @@ -6,12 +6,12 @@ namespace Viper.Views.Shared.Components.LeftNav [ViewComponent(Name = "LeftNav")] public class LeftNavViewComponent : ViewComponent { - public async Task InvokeAsync(AaudUser user, int nav) + public IViewComponentResult Invoke(AaudUser user, int nav) { - return await Task.Run(() => View("Default", user)); + return View("Default", user); } } diff --git a/web/Views/Shared/Components/MainNav/MainNav.cs b/web/Views/Shared/Components/MainNav/MainNav.cs index 09bbafd15..b9060889d 100644 --- a/web/Views/Shared/Components/MainNav/MainNav.cs +++ b/web/Views/Shared/Components/MainNav/MainNav.cs @@ -40,7 +40,7 @@ public MainNavViewComponent(RAPSContext context) _context = context; } - public async Task InvokeAsync(AaudUser user) + public IViewComponentResult Invoke(AaudUser user) { ViewData["OldViperURL"] = oldViperURL; var userHelper = new UserHelper(); @@ -67,7 +67,7 @@ public async Task InvokeAsync(AaudUser user) "scheduler" => "Computing", _ => "VIPER Home", }; - return await Task.Run(() => View("Default", user)); + return View("Default", user); } } diff --git a/web/Views/Shared/Components/MiniNav/MiniNav.cs b/web/Views/Shared/Components/MiniNav/MiniNav.cs index 881e52696..e18c216a7 100644 --- a/web/Views/Shared/Components/MiniNav/MiniNav.cs +++ b/web/Views/Shared/Components/MiniNav/MiniNav.cs @@ -8,10 +8,10 @@ public class MiniNavViewComponent : ViewComponent { private readonly string oldViperURL = HttpHelper.GetOldViperRootURL(); - public async Task InvokeAsync(AaudUser user) + public IViewComponentResult Invoke(AaudUser user) { ViewData["OldViperURL"] = oldViperURL; - return await Task.Run(() => View("Default", user)); + return View("Default", user); } } diff --git a/web/Views/Shared/Components/ProfilePic/ProfilePic.cs b/web/Views/Shared/Components/ProfilePic/ProfilePic.cs index 806a0c51e..782f77c93 100644 --- a/web/Views/Shared/Components/ProfilePic/ProfilePic.cs +++ b/web/Views/Shared/Components/ProfilePic/ProfilePic.cs @@ -14,12 +14,12 @@ public ProfilePicViewComponent(AAUDContext context) _AAUDContext = context; } - public async Task InvokeAsync(string? userName) + public IViewComponentResult Invoke(string? userName) { IUserHelper UserHelper = new UserHelper(); AaudUser? user = UserHelper.GetByLoginId(_AAUDContext, userName); - return await Task.Run(() => View("Default", user)); + return View("Default", user); } } diff --git a/web/Views/Shared/Components/SessionTimeout/SessionTimeout.cs b/web/Views/Shared/Components/SessionTimeout/SessionTimeout.cs index 5f14f08c7..2bf3579ba 100644 --- a/web/Views/Shared/Components/SessionTimeout/SessionTimeout.cs +++ b/web/Views/Shared/Components/SessionTimeout/SessionTimeout.cs @@ -5,7 +5,7 @@ namespace Viper.Views.Shared.Components.SessionTimeout [ViewComponent(Name = "SessionTimeout")] public class SessionTimeout : ViewComponent { - public async Task InvokeAsync() + public IViewComponentResult Invoke() { UserHelper userHelper = new UserHelper(); string? loginId = userHelper.GetCurrentUser()?.LoginId; @@ -14,7 +14,7 @@ public async Task InvokeAsync() + "/public/timeout/seconds_until_timeout_v2.cfm?id=" + (loginId ?? "") + "&service=" + (onDev ? "Viper2-dev" : "Viper2"); - return await Task.Run(() => View("Default")); + return View("Default"); } } diff --git a/web/Views/Shared/Components/VueCdn/VueCdnCreate.cs b/web/Views/Shared/Components/VueCdn/VueCdnCreate.cs index fec18122b..88e644759 100644 --- a/web/Views/Shared/Components/VueCdn/VueCdnCreate.cs +++ b/web/Views/Shared/Components/VueCdn/VueCdnCreate.cs @@ -5,9 +5,9 @@ namespace Viper.Views.Shared.Components.VueCdn [ViewComponent(Name = "VueCdnCreate")] public class VueCdnCreate : ViewComponent { - public async Task InvokeAsync() + public IViewComponentResult Invoke() { - return await Task.Run(() => View("~/Views/Shared/Components/VueCdn/VueCdnCreate.cshtml")); + return View("~/Views/Shared/Components/VueCdn/VueCdnCreate.cshtml"); } } } diff --git a/web/Views/Shared/Components/VueCdn/VueCdnInit.cs b/web/Views/Shared/Components/VueCdn/VueCdnInit.cs index 74573ac4b..724f145ef 100644 --- a/web/Views/Shared/Components/VueCdn/VueCdnInit.cs +++ b/web/Views/Shared/Components/VueCdn/VueCdnInit.cs @@ -5,9 +5,9 @@ namespace Viper.Views.Shared.Components.VueCdn [ViewComponent(Name = "VueCdnInit")] public class VueCdnInit : ViewComponent { - public async Task InvokeAsync() + public IViewComponentResult Invoke() { - return await Task.Run(() => View("~/Views/Shared/Components/VueCdn/VueCdnInit.cshtml")); + return View("~/Views/Shared/Components/VueCdn/VueCdnInit.cshtml"); } } diff --git a/web/Views/Shared/Components/VueTableDefault/VueTableDefault.cs b/web/Views/Shared/Components/VueTableDefault/VueTableDefault.cs index 600a39ccd..b0143d924 100644 --- a/web/Views/Shared/Components/VueTableDefault/VueTableDefault.cs +++ b/web/Views/Shared/Components/VueTableDefault/VueTableDefault.cs @@ -8,7 +8,7 @@ namespace Viper.Views.Shared.Components.VueTableDefault public class VueTableDefaultViewComponent : ViewComponent { - public async Task InvokeAsync(IEnumerable? data, string keyColumnName, + public IViewComponentResult Invoke(IEnumerable? data, string keyColumnName, IEnumerable? skipColumns = null, IEnumerable>? altColumnNames = null, IEnumerable? skipColumnsVisible = null ) @@ -25,7 +25,7 @@ public async Task InvokeAsync(IEnumerable? data, s ViewData["Rows"] = GetDefaultRows(dataList, skipList); ViewData["VisibleColumns"] = GetDefaultVisibleColumns(dataList, skipVisibleList); - return await Task.Run(() => View("Default")); + return View("Default"); } #region public static string GetDefaultColumnNames(IEnumerable? data, IEnumerable? skipColumns = null, IEnumerable>? altColumnNames = null)