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 string RollVisibility { get; set; } = "public";
|
||||||
|
|
||||||
|
[Parameter] public Func<string>? ResolveRollVisibility { get; set; }
|
||||||
|
|
||||||
[Parameter] public bool IsMutating { get; set; }
|
[Parameter] public bool IsMutating { get; set; }
|
||||||
|
|
||||||
[Parameter] public EventCallback<RollResult> CustomRollCreated { 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";
|
string.Equals(NormalizedRollVisibility, "private", StringComparison.OrdinalIgnoreCase) ? "Private" : "Public";
|
||||||
|
|
||||||
private string NormalizedRollVisibility =>
|
private string NormalizedRollVisibility =>
|
||||||
string.Equals(RollVisibility, "private", StringComparison.OrdinalIgnoreCase) ? "private" : "public";
|
string.Equals(ResolveRollVisibility?.Invoke() ?? RollVisibility, "private", StringComparison.OrdinalIgnoreCase)
|
||||||
|
? "private"
|
||||||
|
: "public";
|
||||||
|
|
||||||
private string CustomRollExpression
|
private string CustomRollExpression
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
SelectedCharacterSkillGroups="Workspace.State.PlaySelectedCharacterSkillGroups"
|
SelectedCharacterSkillGroups="Workspace.State.PlaySelectedCharacterSkillGroups"
|
||||||
SelectedCampaignRulesetId="@(Workspace.State.PlaySelectedCampaign?.RulesetId ?? string.Empty)"
|
SelectedCampaignRulesetId="@(Workspace.State.PlaySelectedCampaign?.RulesetId ?? string.Empty)"
|
||||||
RollVisibility="Workspace.State.RollVisibility"
|
RollVisibility="Workspace.State.RollVisibility"
|
||||||
RollVisibilityChanged="Workspace.Session.OnRollVisibilityChangedAsync"
|
RollVisibilityChanged="OnRollVisibilityChangedAsync"
|
||||||
OwnerLabel="Workspace.State.OwnerLabel"
|
OwnerLabel="Workspace.State.OwnerLabel"
|
||||||
SkillDefinitionLabel="Workspace.State.SkillDefinitionLabel"
|
SkillDefinitionLabel="Workspace.State.SkillDefinitionLabel"
|
||||||
CanEditCharacter="Workspace.Campaigns.CanEditCharacter"
|
CanEditCharacter="Workspace.Campaigns.CanEditCharacter"
|
||||||
@@ -37,6 +37,7 @@
|
|||||||
SelectedCharacterName="@(Workspace.State.PlaySelectedCharacter?.Name)"
|
SelectedCharacterName="@(Workspace.State.PlaySelectedCharacter?.Name)"
|
||||||
SelectedCampaignRulesetId="@(Workspace.State.PlaySelectedCampaign?.RulesetId ?? string.Empty)"
|
SelectedCampaignRulesetId="@(Workspace.State.PlaySelectedCampaign?.RulesetId ?? string.Empty)"
|
||||||
RollVisibility="Workspace.State.RollVisibility"
|
RollVisibility="Workspace.State.RollVisibility"
|
||||||
|
ResolveRollVisibility="ResolveRollVisibility"
|
||||||
IsMutating="Workspace.State.IsMutating"
|
IsMutating="Workspace.State.IsMutating"
|
||||||
ToggleRollDetailRequested="Workspace.Play.ToggleRollDetailAsync"
|
ToggleRollDetailRequested="Workspace.Play.ToggleRollDetailAsync"
|
||||||
ResolveRollDetail="Workspace.Play.ResolveRollDetail"
|
ResolveRollDetail="Workspace.Play.ResolveRollDetail"
|
||||||
@@ -74,4 +75,20 @@
|
|||||||
[Parameter, EditorRequired] public WorkspacePageContext Workspace { get; set; } = null!;
|
[Parameter, EditorRequired] public WorkspacePageContext Workspace { get; set; } = null!;
|
||||||
|
|
||||||
private bool IsCampaignDataLoading => !Workspace.HasSessionInitialized || Workspace.State.IsCampaignDataLoading;
|
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);
|
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 fillInput(driver, "#custom-roll-expression", "bad");
|
||||||
await clickText(driver, ".custom-roll-composer button", "Roll");
|
await clickText(driver, ".custom-roll-composer button", "Roll");
|
||||||
|
|
||||||
@@ -529,7 +536,7 @@ const tests = [
|
|||||||
const firstLogEntry = document.querySelector(".log-panel .log-entry");
|
const firstLogEntry = document.querySelector(".log-panel .log-entry");
|
||||||
return !/error/.test(className) &&
|
return !/error/.test(className) &&
|
||||||
Boolean(firstLogEntry?.textContent.includes("Custom roll")) &&
|
Boolean(firstLogEntry?.textContent.includes("Custom roll")) &&
|
||||||
Boolean(firstLogEntry?.textContent.includes("Public"));
|
Boolean(firstLogEntry?.textContent.includes("Private"));
|
||||||
}),
|
}),
|
||||||
"Expected successful custom roll entry."
|
"Expected successful custom roll entry."
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user