[backend/federation] Trigger user updates on web & mastodon api calls (ISH-35)
This commit is contained in:
parent
0f670c1953
commit
435632857b
3 changed files with 9 additions and 4 deletions
|
@ -47,7 +47,7 @@ public class AccountController(
|
||||||
{
|
{
|
||||||
var user = await db.Users.IncludeCommonProperties().FirstOrDefaultAsync(p => p.Id == id) ??
|
var user = await db.Users.IncludeCommonProperties().FirstOrDefaultAsync(p => p.Id == id) ??
|
||||||
throw GracefulException.RecordNotFound();
|
throw GracefulException.RecordNotFound();
|
||||||
var res = await userRenderer.RenderAsync(user);
|
var res = await userRenderer.RenderAsync(await userResolver.GetUpdatedUser(user));
|
||||||
return Ok(res);
|
return Ok(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,12 @@ namespace Iceshrimp.Backend.Controllers;
|
||||||
[EnableRateLimiting("sliding")]
|
[EnableRateLimiting("sliding")]
|
||||||
[Route("/api/iceshrimp/v1/user/{id}")]
|
[Route("/api/iceshrimp/v1/user/{id}")]
|
||||||
[Produces(MediaTypeNames.Application.Json)]
|
[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]
|
[HttpGet]
|
||||||
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(UserResponse))]
|
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(UserResponse))]
|
||||||
|
@ -26,7 +31,7 @@ public class UserController(DatabaseContext db, UserRenderer userRenderer, NoteR
|
||||||
.FirstOrDefaultAsync(p => p.Id == id) ??
|
.FirstOrDefaultAsync(p => p.Id == id) ??
|
||||||
throw GracefulException.NotFound("User not found");
|
throw GracefulException.NotFound("User not found");
|
||||||
|
|
||||||
return Ok(userRenderer.RenderOne(user));
|
return Ok(userRenderer.RenderOne(await userResolver.GetUpdatedUser(user)));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("notes")]
|
[HttpGet("notes")]
|
||||||
|
|
|
@ -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;
|
if (!user.NeedsUpdate) return user;
|
||||||
user.LastFetchedAt = DateTime.UtcNow; // Prevent multiple background tasks from being started
|
user.LastFetchedAt = DateTime.UtcNow; // Prevent multiple background tasks from being started
|
||||||
|
|
Loading…
Add table
Reference in a new issue