Skip to content

Commit 64df0af

Browse files
Fix Local Storage bug
Fixes local storage bug and adds new loading screen
1 parent 5b0cfca commit 64df0af

File tree

3 files changed

+104
-51
lines changed

3 files changed

+104
-51
lines changed
Lines changed: 48 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,71 @@
1-
using System;
2-
using Blazored.LocalStorage;
1+
using Blazored.LocalStorage;
32
using ToDoApp.Application.Models;
43

5-
namespace ToDoApp.Application.Services
6-
{
7-
public class ToDoService : IToDoService
8-
{
9-
private IList<ToDo> _toDos;
10-
private readonly ILocalStorageService _localStorage;
4+
namespace ToDoApp.Application.Services;
115

12-
public ToDoService(ILocalStorageService localStorage)
13-
{
14-
_toDos = new List<ToDo>();
15-
_localStorage = localStorage;
16-
}
6+
public class ToDoService : IToDoService
7+
{
8+
private IList<ToDo> _toDos;
9+
private readonly ILocalStorageService _localStorage;
1710

18-
public async Task AddToDoAsync(ToDo todo, CancellationToken cancellationToken = new CancellationToken())
19-
{
20-
ArgumentNullException.ThrowIfNull(todo, "ToDo Cannot be null");
11+
public ToDoService(ILocalStorageService localStorage)
12+
{
13+
_toDos = new List<ToDo>();
14+
_localStorage = localStorage;
15+
}
2116

22-
await LoadToDosAsync(cancellationToken);
17+
public async Task AddToDoAsync(ToDo todo, CancellationToken cancellationToken = new CancellationToken())
18+
{
19+
ArgumentNullException.ThrowIfNull(todo, "ToDo Cannot be null");
2320

24-
_toDos.Add(todo);
21+
await LoadToDosAsync(cancellationToken);
2522

26-
await SaveChangesAsync(cancellationToken);
27-
}
23+
_toDos.Add(todo);
2824

29-
public async Task RemoveToDoAsync(ToDo todo, CancellationToken cancellationToken = new CancellationToken())
30-
{
31-
ArgumentNullException.ThrowIfNull(todo, "ToDo Cannot be null");
25+
await SaveChangesAsync(cancellationToken);
26+
}
3227

33-
await LoadToDosAsync(cancellationToken);
28+
public async Task RemoveToDoAsync(ToDo todo, CancellationToken cancellationToken = new CancellationToken())
29+
{
30+
ArgumentNullException.ThrowIfNull(todo, "ToDo Cannot be null");
3431

35-
_toDos.Remove(todo);
32+
await LoadToDosAsync(cancellationToken);
3633

37-
await SaveChangesAsync(cancellationToken);
38-
}
34+
_toDos.Remove(todo);
3935

40-
public async Task UpdateToDoAsync(ToDo todo, CancellationToken cancellationToken = new CancellationToken())
41-
{
42-
ArgumentNullException.ThrowIfNull(todo, "ToDo Cannot be null");
36+
await SaveChangesAsync(cancellationToken);
37+
}
4338

44-
await LoadToDosAsync(cancellationToken);
39+
public async Task UpdateToDoAsync(ToDo todo, CancellationToken cancellationToken = new CancellationToken())
40+
{
41+
ArgumentNullException.ThrowIfNull(todo, "ToDo Cannot be null");
4542

46-
var existingTodo = _toDos.First(_ => _.Id == todo.Id);
47-
existingTodo.IsComplete = todo.IsComplete;
48-
existingTodo.Name = todo.Name;
43+
await LoadToDosAsync(cancellationToken);
4944

50-
await SaveChangesAsync(cancellationToken);
51-
}
45+
var existingTodo = _toDos.First(_ => _.Id == todo.Id);
46+
existingTodo.IsComplete = todo.IsComplete;
47+
existingTodo.Name = todo.Name;
5248

53-
public async Task<IList<ToDo>> GetToDosAsync()
54-
{
55-
await LoadToDosAsync(new CancellationToken());
56-
return _toDos;
57-
}
49+
await SaveChangesAsync(cancellationToken);
50+
}
5851

52+
public async Task<IList<ToDo>> GetToDosAsync()
53+
{
54+
await LoadToDosAsync(new CancellationToken());
55+
return _toDos;
56+
}
5957

60-
private async Task LoadToDosAsync(CancellationToken cancellationToken)
61-
{
62-
_toDos = await _localStorage.GetItemAsync<IList<ToDo>>("todos", cancellationToken);
63-
}
6458

65-
private async Task SaveChangesAsync(CancellationToken cancellationToken)
66-
{
67-
await _localStorage.SetItemAsync<IList<ToDo>>("todos", _toDos, cancellationToken);
68-
}
59+
private async Task LoadToDosAsync(CancellationToken cancellationToken)
60+
{
61+
_toDos = await _localStorage.GetItemAsync<IList<ToDo>>("todos", cancellationToken);
62+
if (_toDos == null) _toDos = new List<ToDo>();
63+
}
6964

65+
private async Task SaveChangesAsync(CancellationToken cancellationToken)
66+
{
67+
await _localStorage.SetItemAsync<IList<ToDo>>("todos", _toDos, cancellationToken);
7068
}
69+
7170
}
7271

src/ToDo/Pages/Index.razor

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,24 @@
5050

5151
protected override async Task OnInitializedAsync()
5252
{
53-
todos = await _toDoService.GetToDosAsync();
53+
await LoadToDosAsync();
5454
await base.OnInitializedAsync();
5555
}
5656

57+
private async Task LoadToDosAsync()
58+
{
59+
todos = await _toDoService.GetToDosAsync();
60+
}
61+
5762
private async Task OnValidSubmit(EditContext context)
5863
{
5964
ArgumentNullException.ThrowIfNull(todos);
6065

6166
if (!string.IsNullOrWhiteSpace(model.Name))
67+
{
6268
await _toDoService.AddToDoAsync(model);
69+
await LoadToDosAsync();
70+
}
6371

6472
model = new ToDo();
6573
StateHasChanged();

src/ToDo/wwwroot/index.html

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,53 @@
1111
</head>
1212

1313
<body>
14-
<div id="app">Loading...</div>
14+
<div id="app">
15+
<style>
16+
@keyframes slide {
17+
0% {
18+
transform: translateX(-25%);
19+
}
20+
21+
100% {
22+
transform: translateX(25%);
23+
}
24+
}
25+
26+
.mud-wasm {
27+
animation: slide 3s ease-in-out infinite alternate;
28+
background-image: linear-gradient(-60deg,#594ae2 50%,#7467ef 50%);
29+
bottom: 0;
30+
left: -50%;
31+
opacity: .5;
32+
position: fixed;
33+
right: -50%;
34+
top: 0;
35+
z-index: -1
36+
}
37+
38+
.mud-wasm-cont {
39+
left: 50%;
40+
padding: 10vmin;
41+
position: fixed;
42+
text-align: center;
43+
top: 50%;
44+
transform: translate(-50%,-50%);
45+
color: #fff;
46+
font-size: 30px;
47+
font-family: 'Roboto','Helvetica','Arial','sans-serif';
48+
}
49+
</style>
50+
<div style="height:100%;width:100%;margin:0;position:fixed;">
51+
<div class="mud-wasm"></div>
52+
<div class="mud-wasm" style="animation-direction:alternate-reverse;animation-duration:4s;"></div>
53+
<div class="mud-wasm" style="animation-duration:5s;"></div>
54+
<div class="mud-wasm-cont ">
55+
My ToDo's
56+
<br/>
57+
Loading...
58+
</div>
59+
</div>
60+
</div>
1561

1662
<div id="blazor-error-ui">
1763
An unhandled error has occurred.

0 commit comments

Comments
 (0)