private async Task GetCodeFromGithub(CodeSample snippet)
        {
            string code = await PublicClient.GetFromGithubRepo(snippet.Code);

            MouseOverContent(snippet.Description);
            AppState.UpdateSnippet(code);
        }
Esempio n. 2
0
        ///<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;
        }
Esempio n. 4
0
        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;
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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();
        }
Esempio n. 11
0
 protected override async Task OnInitializedAsync()
 {
     CodeChallenges = AppState?.CodeChallenges ?? await PublicClient.GetChallenges();
 }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
 private async void MessageGroup() => await PublicClient.MessageGroup(GroupName, messageInput);
Esempio n. 14
0
 private async Task JoinGroup() => await PublicClient.JoinGroup(GroupName, UserName);
Esempio n. 15
0
 private async void SendSnippet(string snippet) => await PublicClient.SendSnippet(snippet, OtherUser);
Esempio n. 16
0
 private async Task Send() => await PublicClient.SendMessage(UserName, messageInput);