[backend] Refactor Task.ContinueWith(p => p.Result) calls to Task.ContinueWithResult

This commit is contained in:
Laura Hausmann 2024-07-09 16:21:22 +02:00
parent d50e821ce0
commit 091e7ba14d
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
2 changed files with 51 additions and 1 deletions

View file

@ -94,7 +94,7 @@ public class UserController(
.Paginate(pq, ControllerContext) .Paginate(pq, ControllerContext)
.PrecomputeVisibilities(localUser) .PrecomputeVisibilities(localUser)
.ToListAsync() .ToListAsync()
.ContinueWith(n => n.Result.EnforceRenoteReplyVisibility()); .ContinueWithResult(res => res.EnforceRenoteReplyVisibility());
return await noteRenderer.RenderMany(notes, localUser, Filter.FilterContext.Accounts); return await noteRenderer.RenderMany(notes, localUser, Filter.FilterContext.Accounts);
} }

View file

@ -62,4 +62,54 @@ public static class TaskExtensions
{ {
return (await task).ToList(); return (await task).ToList();
} }
public static async Task ContinueWithResult(this Task task, Action continuation)
{
await task;
continuation();
}
public static async Task<TNewResult> ContinueWithResult<TNewResult>(this Task task, Func<TNewResult> continuation)
{
await task;
return continuation();
}
public static async Task ContinueWithResult<TResult>(this Task<TResult> task, Action<TResult> continuation)
{
continuation(await task);
}
public static async Task<TNewResult> ContinueWithResult<TResult, TNewResult>(
this Task<TResult> task, Func<TResult, TNewResult> continuation
)
{
return continuation(await task);
}
public static async Task ContinueWithResult(this Task task, Func<Task> continuation)
{
await task;
await continuation();
}
public static async Task<TNewResult> ContinueWithResult<TNewResult>(
this Task task, Func<Task<TNewResult>> continuation
)
{
await task;
return await continuation();
}
public static async Task ContinueWithResult<TResult>(this Task<TResult> task, Func<TResult, Task> continuation)
{
await continuation(await task);
}
public static async Task<TNewResult> ContinueWithResult<TResult, TNewResult>(
this Task<TResult> task, Func<TResult, Task<TNewResult>> continuation
)
{
return await continuation(await task);
}
} }