@namespace MenuProject.Modals @inherits MenuProject.Modals.BaseModal @using Sandbox; @using Sandbox.UI; @using Menu; @using System; @using Sandbox.Services; @if (Package is null) return; @if (_posting) { outgoing_mail return; } What did you think of @(Package.Title)? SetRating( Review.ReviewScore.Negative ) )"> 💩 Needs Work SetRating( Review.ReviewScore.Promise ) )"> 😐 Promising SetRating( Review.ReviewScore.Positive ) )"> 😍 Recommended @code { public Package Package { get; set; } string ReviewText{ get; set; } Review.ReviewScore Score { get; set; } TextEntry _textEntry = default; bool _posting; protected override int BuildHash() => System.HashCode.Combine(Package); protected override async Task OnParametersSetAsync() { var oldReview = await Sandbox.Services.Review.Get(Package.FullIdent, Sandbox.Utility.Steam.SteamId); ReviewText = oldReview?.Content; Score = oldReview?.Score ?? Review.ReviewScore.None; } protected override void OnAfterTreeRender(bool firstTime) { if ( firstTime ) { _textEntry?.Focus(); } } void SetRating(Review.ReviewScore score ) { Score = score; _textEntry?.SelectAllInChildren(); _textEntry?.Focus(); } async Task PostReview() { if ( Score == Review.ReviewScore.None ) return; if ( string.IsNullOrWhiteSpace( ReviewText ) ) return; _posting = true; StateHasChanged(); try { await MenuUtility.PostReview(Package.FullIdent, Score, ReviewText); CloseModal(true); } finally { _posting = false; } } }