[backend/federation] Trigger user updates on web & mastodon api calls (ISH-35)

This commit is contained in:
Laura Hausmann 2024-02-26 20:12:44 +01:00
parent 0f670c1953
commit 435632857b
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
3 changed files with 9 additions and 4 deletions

View file

@ -47,7 +47,7 @@ public class AccountController(
{
var user = await db.Users.IncludeCommonProperties().FirstOrDefaultAsync(p => p.Id == id) ??
throw GracefulException.RecordNotFound();
var res = await userRenderer.RenderAsync(user);
var res = await userRenderer.RenderAsync(await userResolver.GetUpdatedUser(user));
return Ok(res);
}

View file

@ -15,7 +15,12 @@ namespace Iceshrimp.Backend.Controllers;
[EnableRateLimiting("sliding")]
[Route("/api/iceshrimp/v1/user/{id}")]
[Produces(MediaTypeNames.Application.Json)]
public class UserController(DatabaseContext db, UserRenderer userRenderer, NoteRenderer noteRenderer) : ControllerBase
public class UserController(
DatabaseContext db,
UserRenderer userRenderer,
NoteRenderer noteRenderer,
ActivityPub.UserResolver userResolver
) : ControllerBase
{
[HttpGet]
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(UserResponse))]
@ -26,7 +31,7 @@ public class UserController(DatabaseContext db, UserRenderer userRenderer, NoteR
.FirstOrDefaultAsync(p => p.Id == id) ??
throw GracefulException.NotFound("User not found");
return Ok(userRenderer.RenderOne(user));
return Ok(userRenderer.RenderOne(await userResolver.GetUpdatedUser(user)));
}
[HttpGet("notes")]

View file

@ -192,7 +192,7 @@ public class UserResolver(
}
}
private async Task<User> GetUpdatedUser(User user)
public async Task<User> GetUpdatedUser(User user)
{
if (!user.NeedsUpdate) return user;
user.LastFetchedAt = DateTime.UtcNow; // Prevent multiple background tasks from being started