Move workspace reads server-side
This commit is contained in:
@@ -58,31 +58,16 @@ public partial class Workspace : IAsyncDisposable
|
||||
|
||||
private async Task CheckHealthAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
var health = await ApiClient.RequestAsync<HealthResponse>("GET", "/api/health");
|
||||
if (!string.Equals(health.Status, "ok", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
HasHealthIssue = true;
|
||||
HealthIssueMessage = "Health endpoint returned an unhealthy response.";
|
||||
return;
|
||||
}
|
||||
|
||||
HasHealthIssue = false;
|
||||
HealthIssueMessage = string.Empty;
|
||||
}
|
||||
catch (ApiRequestException)
|
||||
{
|
||||
HasHealthIssue = true;
|
||||
HealthIssueMessage = "Unable to reach API. Retry to continue.";
|
||||
}
|
||||
HasHealthIssue = false;
|
||||
HealthIssueMessage = string.Empty;
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
private async Task LoadRulesetsAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
Rulesets = (await ApiClient.RequestAsync<IReadOnlyList<RulesetDefinition>>("GET", "/api/rulesets")).ToList();
|
||||
Rulesets = (await WorkspaceQuery.GetRulesetsAsync()).ToList();
|
||||
}
|
||||
catch (ApiRequestException ex)
|
||||
{
|
||||
@@ -94,7 +79,7 @@ public partial class Workspace : IAsyncDisposable
|
||||
{
|
||||
try
|
||||
{
|
||||
var usernames = await ApiClient.RequestAsync<IReadOnlyList<string>>("GET", "/api/users/usernames");
|
||||
var usernames = await WorkspaceQuery.GetUsernamesAsync();
|
||||
KnownUsernames = usernames.OrderBy(username => username, StringComparer.OrdinalIgnoreCase).ToList();
|
||||
}
|
||||
catch (ApiRequestException ex)
|
||||
@@ -133,7 +118,7 @@ public partial class Workspace : IAsyncDisposable
|
||||
{
|
||||
try
|
||||
{
|
||||
return await ApiClient.RequestAsync<MeResponse>("GET", "/api/me");
|
||||
return await WorkspaceQuery.GetMeAsync();
|
||||
}
|
||||
catch (ApiRequestException ex) when (ex.StatusCode == 401)
|
||||
{
|
||||
@@ -143,7 +128,7 @@ public partial class Workspace : IAsyncDisposable
|
||||
|
||||
private async Task ReloadCampaignsAsync(Guid? preferredCampaignId)
|
||||
{
|
||||
var campaigns = await ApiClient.RequestAsync<IReadOnlyList<CampaignSummary>>("GET", "/api/campaigns");
|
||||
var campaigns = await WorkspaceQuery.GetCampaignsAsync();
|
||||
Campaigns = campaigns.OrderBy(c => c.Name, StringComparer.OrdinalIgnoreCase).ToList();
|
||||
|
||||
if (Campaigns.Count == 0)
|
||||
@@ -164,7 +149,7 @@ public partial class Workspace : IAsyncDisposable
|
||||
|
||||
private async Task ReloadCharacterCampaignOptionsAsync()
|
||||
{
|
||||
var campaignOptions = await ApiClient.RequestAsync<IReadOnlyList<CampaignOption>>("GET", "/api/campaigns/options");
|
||||
var campaignOptions = await WorkspaceQuery.GetCharacterCampaignOptionsAsync();
|
||||
CharacterCampaignOptions = campaignOptions.OrderBy(campaign => campaign.Name, StringComparer.OrdinalIgnoreCase).ToList();
|
||||
}
|
||||
|
||||
@@ -185,7 +170,7 @@ public partial class Workspace : IAsyncDisposable
|
||||
try
|
||||
{
|
||||
var campaignId = SelectedCampaignId.Value;
|
||||
SelectedCampaign = await ApiClient.RequestAsync<CampaignRoster>("GET", $"/api/campaigns/{campaignId}");
|
||||
SelectedCampaign = await WorkspaceQuery.GetCampaignAsync(campaignId);
|
||||
SyncSelectedCharacter();
|
||||
|
||||
if (IsPlayScreen && PlaySelectedCharacterId.HasValue && SelectedCharacterId != PlaySelectedCharacterId)
|
||||
@@ -194,7 +179,7 @@ public partial class Workspace : IAsyncDisposable
|
||||
await RefreshSelectedCharacterSheetAsync();
|
||||
|
||||
CampaignLog = IsPlayScreen
|
||||
? (await ApiClient.RequestAsync<IReadOnlyList<CampaignLogEntry>>("GET", $"/api/campaigns/{campaignId}/log")).ToList()
|
||||
? (await WorkspaceQuery.GetCampaignLogAsync(campaignId)).ToList()
|
||||
: [];
|
||||
|
||||
await EnsureSelectedCharacterActiveAsync();
|
||||
@@ -320,7 +305,7 @@ public partial class Workspace : IAsyncDisposable
|
||||
|
||||
private async Task ReloadAdminUsersAsync()
|
||||
{
|
||||
AdminUsers = (await ApiClient.RequestAsync<IReadOnlyList<AdminUserSummary>>("GET", "/api/admin/users"))
|
||||
AdminUsers = (await WorkspaceQuery.GetAdminUsersAsync())
|
||||
.OrderBy(user => user.Username, StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
|
||||
@@ -586,7 +571,7 @@ public partial class Workspace : IAsyncDisposable
|
||||
return;
|
||||
}
|
||||
|
||||
var sheet = await ApiClient.RequestAsync<CharacterSheet>("GET", $"/api/characters/{SelectedCharacterId.Value}/sheet");
|
||||
var sheet = await WorkspaceQuery.GetCharacterSheetAsync(SelectedCharacterId.Value);
|
||||
SelectedCharacterSkillGroups = sheet.SkillGroups
|
||||
.OrderBy(group => group.Name, StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
@@ -956,6 +941,9 @@ public partial class Workspace : IAsyncDisposable
|
||||
[Inject]
|
||||
private RpgRollerApiClient ApiClient { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
private WorkspaceQueryService WorkspaceQuery { get; set; } = null!;
|
||||
|
||||
[Inject]
|
||||
private NavigationManager Navigation { get; set; } = null!;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user