fix: sync custom roll visibility
This commit is contained in:
@@ -171,6 +171,8 @@ public partial class CampaignLogPanel
|
||||
|
||||
[Parameter] public string RollVisibility { get; set; } = "public";
|
||||
|
||||
[Parameter] public Func<string>? ResolveRollVisibility { get; set; }
|
||||
|
||||
[Parameter] public bool IsMutating { get; set; }
|
||||
|
||||
[Parameter] public EventCallback<RollResult> CustomRollCreated { get; set; }
|
||||
@@ -214,7 +216,9 @@ public partial class CampaignLogPanel
|
||||
string.Equals(NormalizedRollVisibility, "private", StringComparison.OrdinalIgnoreCase) ? "Private" : "Public";
|
||||
|
||||
private string NormalizedRollVisibility =>
|
||||
string.Equals(RollVisibility, "private", StringComparison.OrdinalIgnoreCase) ? "private" : "public";
|
||||
string.Equals(ResolveRollVisibility?.Invoke() ?? RollVisibility, "private", StringComparison.OrdinalIgnoreCase)
|
||||
? "private"
|
||||
: "public";
|
||||
|
||||
private string CustomRollExpression
|
||||
{
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
SelectedCharacterSkillGroups="Workspace.State.PlaySelectedCharacterSkillGroups"
|
||||
SelectedCampaignRulesetId="@(Workspace.State.PlaySelectedCampaign?.RulesetId ?? string.Empty)"
|
||||
RollVisibility="Workspace.State.RollVisibility"
|
||||
RollVisibilityChanged="Workspace.Session.OnRollVisibilityChangedAsync"
|
||||
RollVisibilityChanged="OnRollVisibilityChangedAsync"
|
||||
OwnerLabel="Workspace.State.OwnerLabel"
|
||||
SkillDefinitionLabel="Workspace.State.SkillDefinitionLabel"
|
||||
CanEditCharacter="Workspace.Campaigns.CanEditCharacter"
|
||||
@@ -37,6 +37,7 @@
|
||||
SelectedCharacterName="@(Workspace.State.PlaySelectedCharacter?.Name)"
|
||||
SelectedCampaignRulesetId="@(Workspace.State.PlaySelectedCampaign?.RulesetId ?? string.Empty)"
|
||||
RollVisibility="Workspace.State.RollVisibility"
|
||||
ResolveRollVisibility="ResolveRollVisibility"
|
||||
IsMutating="Workspace.State.IsMutating"
|
||||
ToggleRollDetailRequested="Workspace.Play.ToggleRollDetailAsync"
|
||||
ResolveRollDetail="Workspace.Play.ResolveRollDetail"
|
||||
@@ -74,4 +75,20 @@
|
||||
[Parameter, EditorRequired] public WorkspacePageContext Workspace { get; set; } = null!;
|
||||
|
||||
private bool IsCampaignDataLoading => !Workspace.HasSessionInitialized || Workspace.State.IsCampaignDataLoading;
|
||||
|
||||
private async Task OnRollVisibilityChangedAsync(string visibility)
|
||||
{
|
||||
var normalizedVisibility = string.Equals(visibility, "private", StringComparison.OrdinalIgnoreCase)
|
||||
? "private"
|
||||
: "public";
|
||||
|
||||
Workspace.State.RollVisibility = normalizedVisibility;
|
||||
await Workspace.Session.OnRollVisibilityChangedAsync(visibility);
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
private string ResolveRollVisibility()
|
||||
{
|
||||
return Workspace.State.RollVisibility;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -505,6 +505,13 @@ const tests = [
|
||||
);
|
||||
assert.match(await elementText(driver, ".custom-roll-composer-head .muted"), /uses public visibility/i);
|
||||
|
||||
await fillInput(driver, "#roll-visibility", "private");
|
||||
await waitFor(
|
||||
driver,
|
||||
() => elementText(driver, ".custom-roll-composer-head .muted").then((text) => /uses private visibility/i.test(text)),
|
||||
"Expected custom roll status text to reflect private visibility."
|
||||
);
|
||||
|
||||
await fillInput(driver, "#custom-roll-expression", "bad");
|
||||
await clickText(driver, ".custom-roll-composer button", "Roll");
|
||||
|
||||
@@ -529,7 +536,7 @@ const tests = [
|
||||
const firstLogEntry = document.querySelector(".log-panel .log-entry");
|
||||
return !/error/.test(className) &&
|
||||
Boolean(firstLogEntry?.textContent.includes("Custom roll")) &&
|
||||
Boolean(firstLogEntry?.textContent.includes("Public"));
|
||||
Boolean(firstLogEntry?.textContent.includes("Private"));
|
||||
}),
|
||||
"Expected successful custom roll entry."
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user