private async Task GetCodeFromGithub(CodeSample snippet) { string code = await PublicClient.GetFromGithubRepo(snippet.Code); MouseOverContent(snippet.Description); AppState.UpdateSnippet(code); }
///<inheritdoc/> protected override async Task RenewAccessTokenAsync() { AuthenticationResult result; try { result = await PublicClient.AcquireTokenSilent(ApiTokenAccessArgs.Scopes, ApiTokenAccessArgs.UserAccount).ExecuteAsync(); if (string.IsNullOrEmpty(result.AccessToken)) { throw new MsalUiRequiredException("404", "Access token was null"); } } catch (MsalUiRequiredException) { result = await PublicClient.AcquireTokenInteractive(ApiTokenAccessArgs.Scopes) .WithB2CAuthority(AuthoritySUSI) .WithAccount(ApiTokenAccessArgs.UserAccount) .WithParentActivityOrWindow(Context.GetMainWindow()) .ExecuteAsync() .ConfigureAwait(false); } catch { throw; } AccessToken = AccessToken.Bearer(result.AccessToken, result.ExpiresOn); IdToken = result.IdToken; TokenRenewed?.Invoke(result); }
protected override async Task OnInitializedAsync() { Videos = AppState.Videos ?? await PublicClient.GetVideos(); AppState.Videos = Videos; AppState.PropertyChanged += UpdateVideos; IsPageVideosReady = true; }
private async void SubmitCode(string code) { isCodeCompiling = true; await InvokeAsync(StateHasChanged); var output = await PublicClient.SubmitCode(code); await PublicClient.SendCodeOutput(GroupName, output); isCodeCompiling = false; await InvokeAsync(StateHasChanged); }
protected async Task OnSubmit(string codeInput) { Console.WriteLine("On Submit"); string result; var sw = new Stopwatch(); if (codeInput.Contains(ReadlinePattern)) { string code = await ReplaceConsoleInput(codeInput); sw.Start(); result = await PublicClient.SubmitConsole(code); codeOutput += $"<p>{result}</p>"; CodeEditorService.CurrentOutput = codeOutput; sw.Stop(); Console.WriteLine($"console function: {sw.ElapsedMilliseconds}ms"); isCodeCompiling = false; buttonCss = "alert_output"; StateHasChanged(); return; } if (!isConsoleOpen) { sw.Start(); result = await PublicClient.SubmitCode(codeInput); codeOutput += $"<p>{result}</p>"; CodeEditorService.CurrentOutput = codeOutput; sw.Stop(); Console.WriteLine($"console function: {sw.ElapsedMilliseconds}ms"); isCodeCompiling = false; buttonCss = "alert_output"; StateHasChanged(); return; } sw.Start(); result = await PublicClient.SubmitConsole(codeInput); codeOutput += $"<p>{result}</p>"; CodeEditorService.CurrentOutput = codeOutput; sw.Stop(); Console.WriteLine($"console function: {sw.ElapsedMilliseconds}ms"); isCodeCompiling = false; buttonCss = "alert_output"; StateHasChanged(); }
protected override async Task OnInitializedAsync() { CodeChallenges = AppState.CodeChallenges ?? await PublicClient.GetChallenges(); UserAppData = AppState.UserAppData; foreach (var challenge in CodeChallenges.Challenges) { Console.WriteLine($"user challenges found: {UserAppData?.ChallengeSuccessData}"); if (UserAppData?.ChallengeSuccessIds?.Any(x => x == challenge.ID) ?? false) { challenge.UserCompleted = true; } } AppState.CodeChallenges ??= CodeChallenges; AppState.PropertyChanged += UpdateUserChallenges; isChallengeReady = true; }
private async Task AddVideoToDb() { var apiResult = await PublicClient.PostVideo(Video); apiResponse = apiResult ? "Submission Successful!" : "Sorry, something went wrong. Submission failed"; if (apiResult) { AppState.AddVideo(Video); title = ""; videoUrl = ""; Video = null; StateHasChanged(); await Task.Delay(2000); isSubmitReady = !isSubmitReady; StateHasChanged(); } StateHasChanged(); }
protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { var authInfo = await AuthProvider.GetAuthenticationStateAsync(); if (authInfo?.User?.Identity?.IsAuthenticated ?? false) { var userName = authInfo.User.Identity.Name; Console.WriteLine($"user {userName} found"); var currentUser = await PublicClient.GetOrAddUserAppData(userName); AppState.UpdateUserAppData(currentUser); } isPageReady = true; await InvokeAsync(StateHasChanged); } await base.OnAfterRenderAsync(firstRender); }
private async Task SaveUserSnippet(string snippet) { if (!AppState.HasUser) { var result = await ModalService.ShowDialogAsync <LoginProvider>("Sign-in to Save"); if (!result.Success) { return; } } var inputForm = new ModalDataInputForm("Save User Snippet", "what should we call this code snippet?"); var snippetField = inputForm.AddStringField("Name", "Snippet Name", ""); string snippetName = ""; var options = new ModalDialogOptions() { Style = "small-modal" }; if (await inputForm.ShowAsync(ModalService, options)) { snippetName = snippetField.Value; } var newSnippet = new UserSnippet { Name = snippetName, Snippet = snippet }; var userData = AppState.UserAppData; userData.Snippets.Add(newSnippet); AppState.UpdateUserAppData(userData); var requestResult = await PublicClient.AddUserSnippet(AppState.UserName, newSnippet); isSnippetSaving = false; message = requestResult ? $"Successfully saved snippet: {snippetName}" : "Save snippet failed"; StateHasChanged(); }
public async Task HandleCodeSubmit(string code) { var submitChallenge = new Challenge { Solution = code, Tests = SelectedChallenge.Tests }; var output = await PublicClient.SubmitChallenge(submitChallenge); AppState.CodeOutput = output; foreach (var result in output.Outputs) { Console.WriteLine($"test: {result.TestIndex}, result: {result.TestResult}, output: {result.Codeout}"); } isChallengeSucceed = output.Outputs.All(x => x.TestResult); var debugString = isChallengeSucceed ? "True" : "False"; Console.WriteLine($"isChallengeSucceed = {debugString}"); isChallengeFail = !isChallengeSucceed; Console.WriteLine($"isChallengeFail = {isChallengeFail}"); isCodeCompiling = false; await InvokeAsync(StateHasChanged); if (isChallengeSucceed) { SelectedChallenge.UserCompleted = true; UserAppData?.ChallengeSuccessIds?.Add(SelectedChallenge.ID); if (AppState.HasUser) { await PublicClient.AddSuccessfulChallenge(AppState.UserName, SelectedChallenge.ID); AppState.UpdateUserAppData(UserAppData); } } StateHasChanged(); }
protected override async Task OnInitializedAsync() { CodeChallenges = AppState?.CodeChallenges ?? await PublicClient.GetChallenges(); }
protected override async Task OnInitializedAsync() { UserName = AppState.UserName; if (string.IsNullOrEmpty(UserName)) { var auth = await AuthenticationState.GetAuthenticationStateAsync(); UserName = auth?.User?.Identity?.Name; } //Temp for testing //var random = new Random(); //UserName = $"{userName}{random.Next(1, 999)}"; hubConnection = new HubConnectionBuilder() .WithUrl($"{FunctionBaseUrl}/", options => { options.Headers.Add("x-ms-client-principal-id", UserName); }) .Build(); hubConnection.On <object>("getAlert", (message) => { var encodedMsg = $"{message}"; Console.WriteLine($"received message: {encodedMsg}"); Toaster.Add(message.ToString(), MatToastType.Primary); messages.Add(message.ToString()); StateHasChanged(); }); hubConnection.On <object>("alertArena", async(message) => { var encodedMsg = $"{message}"; Console.WriteLine($"received Alert: {encodedMsg}"); var activeArenas = await PublicClient.GetActiveArenas(); ArenaService.UpdateArenas(activeArenas); StateHasChanged(); }); hubConnection.On <object>("leaveArena", (message) => { var encodedMsg = $"{message}"; Console.WriteLine($"received message: {encodedMsg}"); messages.Add(encodedMsg); OnNewMessage.InvokeAsync(encodedMsg); }); hubConnection.On <object>("resultAlert", (message) => { Console.WriteLine($"'resultAlert' Triggered message: {message}"); var result = ArenaResultMessage.FromJson(message.ToString()); var arenaName = result.Group; ArenaService.ArenaComplete(arenaName); Console.WriteLine($"'ArenaComplete' values:name: {arenaName} winner {result.DuelWinner} loser: {result.DuelLoser}"); Toaster.Add(result.Message, MatToastType.Primary); messages.Add(result.Message); }); hubConnection.On <object>("resultActual", (arenaObj) => { Console.WriteLine("'resultActual' Triggered"); var encodedMsg = $"{arenaObj}"; var arenaAlert = ArenaResultMessage.FromJson(arenaObj.ToString()); messages.Add($"{arenaAlert.DuelWinner} defeated {arenaAlert.DuelLoser} in arena {arenaAlert.Group}"); Console.WriteLine($"received group message: {encodedMsg}"); StateHasChanged(); }); hubConnection.On <object>("joinAlert", (message) => { var encodedMsg = $"{message}"; var jObj = JObject.Parse(message.ToString()); var arenaName = jObj["group"]?.ToString(); var userJoin = jObj["user"]?.ToString(); var arenaText = jObj["message"]?.ToString(); Console.WriteLine($"'joinAlert' Triggered: {encodedMsg}"); ArenaService.JoinArena(arenaName, userJoin); Toaster.Add(arenaText, MatToastType.Primary); StateHasChanged(); }); hubConnection.On <object>("showArena", group => { Console.WriteLine($"Create arena message received: {group}"); var jObj = JObject.Parse(group.ToString()); var user = jObj["user"]?.ToString(); var groupobj = jObj["group"]?.ToString(); var chalObj = jObj["challenge"]?.ToString(); Toaster.Add($"User {user} joined Arena: {groupobj} with Challenge: {chalObj}", MatToastType.Info); messages.Add($"User {user} joined Arena: {groupobj} with Challenge: {chalObj}"); StateHasChanged(); }); await hubConnection.StartAsync(); var arenasInit = await PublicClient.GetActiveArenas(); ArenaService.UpdateArenas(arenasInit); }
private async void MessageGroup() => await PublicClient.MessageGroup(GroupName, messageInput);
private async Task JoinGroup() => await PublicClient.JoinGroup(GroupName, UserName);
private async void SendSnippet(string snippet) => await PublicClient.SendSnippet(snippet, OtherUser);
private async Task Send() => await PublicClient.SendMessage(UserName, messageInput);