Sync text zoom preference through the account instead of local settings
Local user://settings.cfg meant zoom level didn't follow a student across devices/browsers. Question bank and CCS text scale now live on the user's study profile in Mongo (QuestionTextScale/CcsTextScale), synced through a new PUT /api/profile/me/text-scale endpoint and the existing preferences GET/cache already used for study preferences. Both question_player.gd and ccs_service.gd read the synced value at startup and react to AccountProfileService.profile_changed so a value pulled down after login (or changed from another session) applies without a restart. Backend validates the 0.85-1.35 range and updates only the field(s) provided via a targeted $set, so it can't clobber the other scale or the unrelated study-profile preferences.
This commit is contained in:
@@ -27,6 +27,14 @@ public sealed class ProfileController(UserProfileStore profiles, IConfiguration
|
||||
return Ok(await profiles.UpsertAsync(UserId(), request));
|
||||
}
|
||||
|
||||
[HttpPut("me/text-scale")]
|
||||
[Authorize(Roles = "USER,SUPER")]
|
||||
public async Task<IActionResult> UpdateTextScale(UpdateTextScaleRequest request)
|
||||
{
|
||||
if (UpdateTextScaleRequestValidator.Validate(request) is { } error) return BadRequest(error);
|
||||
return Ok(await profiles.UpdateTextScaleAsync(UserId(), request));
|
||||
}
|
||||
|
||||
[HttpGet("me/export")]
|
||||
[Authorize(Roles = "USER,SUPER")]
|
||||
public async Task<IActionResult> Export() => Ok(new
|
||||
|
||||
Reference in New Issue
Block a user