diff --git a/BeauFindlay/BeauFindlay/Pages/Home.razor b/BeauFindlay/BeauFindlay/Pages/Home.razor index 78efa2e..9fe35ec 100644 --- a/BeauFindlay/BeauFindlay/Pages/Home.razor +++ b/BeauFindlay/BeauFindlay/Pages/Home.razor @@ -2,9 +2,11 @@ @implements IDisposable +@inject IJSRuntime JSRuntime + Home - Beau Findlay -@if (isFirstRender) +@if (!hasPreviouslyRendered) {

@@ -14,12 +16,12 @@

-

+

- +

@@ -28,38 +30,42 @@ } else { -

- Hi, I'm Beau. -

+

Hi, I'm Beau.

-

- I'm a UK-based software engineer and I love building cool stuff. -

+

I'm a UK-based software engineer and I love building cool stuff.

-

- A bit about me -

+

A bit about me

-

- I mostly specialise in back-end C#/.NET development and I build systems that scale for hundreds-of-thousands of global users. -

+

I mostly specialise in back-end C#/.NET development and I've built systems that scale for hundreds-of-thousands of global users.

-

- I'm currently heading up the tech as CTO at a cool startup called un:hurd. -

+

I'm currently heading up the tech as CTO at a cool startup called un:hurd.

} @code { - private bool isFirstRender = true; + private const string ComponentKey = "ComponentRendered_Home"; + private bool hasPreviouslyRendered; - protected override void OnAfterRender(bool firstRender) + protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { - isFirstRender = false; - Typewriter.OnAllTypingCompleted += HandleTypingCompleted; + + var renderedBeforeAsString = await JSRuntime.InvokeAsync("localStorage.getItem", ComponentKey); + + var previousValue = hasPreviouslyRendered; + hasPreviouslyRendered = !string.IsNullOrEmpty(renderedBeforeAsString) && bool.Parse(renderedBeforeAsString); + + if (!hasPreviouslyRendered) + { + await JSRuntime.InvokeVoidAsync("localStorage.setItem", ComponentKey, "true"); + } + + if (previousValue != hasPreviouslyRendered) + { + StateHasChanged(); + } } }