Skip to content

Commit ad8d205

Browse files
committed
General cleanup.
1 parent 3c223b4 commit ad8d205

File tree

7 files changed

+53
-77
lines changed

7 files changed

+53
-77
lines changed

demos/TodoSQLite/Data/AppSchema.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
using TodoSQLite.Models;
2-
31
using PowerSync.Common.DB.Schema;
42

53
class AppSchema

demos/TodoSQLite/Data/NodeConnector.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ public NodeConnector()
3636

3737
public string LoadOrGenerateUserId()
3838
{
39-
4039
return "8ba3ec38-6cc8-449c-88c0-9275987ea5d2";
4140
}
4241

demos/TodoSQLite/Data/PowerSyncData.cs

Lines changed: 14 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,93 +8,65 @@ namespace TodoSQLite.Data;
88

99
public class PowerSyncData
1010
{
11-
public PowerSyncDatabase _db;
12-
private ILogger _logger;
13-
private bool _isConnected;
14-
11+
public PowerSyncDatabase Db;
12+
private string UserId { get; }
1513

1614
public PowerSyncData()
1715
{
1816
Console.WriteLine("Creating PowerSyncData instance");
19-
}
20-
21-
public string UserId { get; set; } = "";
22-
public bool IsConnected
23-
{
24-
get => _isConnected;
25-
private set
26-
{
27-
if (_isConnected != value)
28-
{
29-
_isConnected = value;
30-
ConnectionStatusChanged?.Invoke(this, EventArgs.Empty);
31-
}
32-
}
33-
}
34-
35-
public event EventHandler ConnectionStatusChanged;
36-
37-
public async Task Init()
38-
{
39-
if (_db != null) return;
40-
4117
ILoggerFactory loggerFactory = LoggerFactory.Create(builder =>
4218
{
4319
builder.AddConsole();
4420
builder.SetMinimumLevel(LogLevel.Trace);
4521
});
46-
_logger = loggerFactory.CreateLogger("PowerSyncLogger");
22+
var logger = loggerFactory.CreateLogger("PowerSyncLogger");
4723

4824
var dbPath = Path.Combine(FileSystem.AppDataDirectory, "examplsee.db");
4925
var factory = new MAUISQLiteDBOpenFactory(new MDSQLiteOpenFactoryOptions()
5026
{
5127
DbFilename = dbPath
5228
});
53-
_db = new PowerSyncDatabase(new PowerSyncDatabaseOptions()
29+
Db = new PowerSyncDatabase(new PowerSyncDatabaseOptions()
5430
{
5531
Database = factory,
5632
Schema = AppSchema.PowerSyncSchema,
57-
Logger = _logger
33+
Logger = logger
5834
});
59-
await _db.Init();
6035

6136
var nodeConnector = new NodeConnector();
6237
UserId = nodeConnector.UserId;
6338

64-
_db.Connect(nodeConnector);
39+
Db.Connect(nodeConnector);
6540
}
66-
41+
6742
public async Task SaveListAsync(TodoList list)
6843
{
69-
await Init();
7044
if (list.ID != "")
7145
{
72-
await _db.Execute(
46+
await Db.Execute(
7347
"UPDATE lists SET name = ?, owner_id = ? WHERE id = ?",
7448
[list.Name, UserId, list.ID]);
7549
}
7650
else
7751
{
78-
await _db.Execute(
52+
await Db.Execute(
7953
"INSERT INTO lists (id, created_at, name, owner_id, created_at) VALUES (uuid(), datetime(), ?, ?, ?)",
8054
[list.Name, UserId, DateTime.UtcNow.ToString("o")]);
8155
}
8256
}
8357

8458
public async Task DeleteListAsync(TodoList list)
8559
{
86-
await Init();
8760
var listId = list.ID;
8861
// First delete all todo items in this list
89-
await _db.Execute("DELETE FROM todos WHERE list_id = ?", [listId]);
90-
await _db.Execute("DELETE FROM lists WHERE id = ?", [listId]);
62+
await Db.Execute("DELETE FROM todos WHERE list_id = ?", [listId]);
63+
await Db.Execute("DELETE FROM lists WHERE id = ?", [listId]);
9164
}
9265
public async Task SaveItemAsync(TodoItem item)
9366
{
94-
await Init();
9567
if (item.ID != "")
9668
{
97-
await _db.Execute(
69+
await Db.Execute(
9870
@"UPDATE todos
9971
SET description = ?, completed = ?, completed_at = ?, completed_by = ?
10072
WHERE id = ?",
@@ -108,7 +80,7 @@ await _db.Execute(
10880
}
10981
else
11082
{
111-
await _db.Execute(
83+
await Db.Execute(
11284
@"INSERT INTO todos
11385
(id, list_id, description, created_at, completed, created_by, created_at)
11486
VALUES (uuid(), ?, ?, ?, ?, ?, datetime())",
@@ -124,7 +96,6 @@ await _db.Execute(
12496

12597
public async Task DeleteItemAsync(TodoItem item)
12698
{
127-
await Init();
128-
await _db.Execute("DELETE FROM todos WHERE id = ?", [item.ID]);
99+
await Db.Execute("DELETE FROM todos WHERE id = ?", [item.ID]);
129100
}
130101
}

demos/TodoSQLite/Models/TodoItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class TodoItem
1111
public string ListId { get; set; }
1212

1313
[JsonProperty("created_at")]
14-
public string CreatedAt { get; set; } = DateTime.UtcNow.ToString("o");
14+
public string CreatedAt { get; set; }
1515

1616
[JsonProperty("completed_at")]
1717
public string CompletedAt { get; set; }

demos/TodoSQLite/Models/TodoList.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class TodoList
88
public string ID { get; set; } = "";
99

1010
[JsonProperty("created_at")]
11-
public string CreatedAt { get; set; } = DateTime.UtcNow.ToString("o");
11+
public string CreatedAt { get; set; }
1212

1313
[JsonProperty("name")]
1414
public string Name { get; set; }

demos/TodoSQLite/Views/ListsPage.xaml.cs

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,33 @@ namespace TodoSQLite.Views;
66

77
public partial class ListsPage : ContentPage
88
{
9-
private readonly PowerSyncData _database;
10-
private bool connected = false;
9+
private readonly PowerSyncData database;
1110

12-
public ListsPage(PowerSyncData database)
11+
public ListsPage(PowerSyncData powerSyncData)
1312
{
1413
InitializeComponent();
15-
_database = database;
16-
UpdateWifiStatus();
17-
}
18-
19-
private void UpdateWifiStatus()
20-
{
21-
WifiStatusItem.IconImageSource = connected ? "wifi.png" : "wifi_off.png";
14+
database = powerSyncData;
15+
WifiStatusItem.IconImageSource = "wifi_off.png";
2216
}
2317

2418
protected override async void OnAppearing()
2519
{
2620
base.OnAppearing();
27-
await _database.Init();
2821

29-
await _database._db.Watch("select * from lists", null, new WatchHandler<TodoList>
22+
database.Db.RunListener((update) =>
23+
{
24+
if (update.StatusChanged != null)
25+
{
26+
Console.WriteLine("XXX Connected: " +update.StatusChanged.Connected);
27+
MainThread.BeginInvokeOnMainThread(() =>
28+
{
29+
WifiStatusItem.IconImageSource = update.StatusChanged.Connected ? "wifi.png" : "wifi_off.png";
30+
});
31+
32+
}
33+
});
34+
35+
await database.Db.Watch("select * from lists", null, new WatchHandler<TodoList>
3036
{
3137
OnResult = (results) =>
3238
{
@@ -45,7 +51,7 @@ private async void OnAddClicked(object sender, EventArgs e)
4551
if (!string.IsNullOrWhiteSpace(name))
4652
{
4753
var list = new TodoList { Name = name };
48-
await _database.SaveListAsync(list);
54+
await database.SaveListAsync(list);
4955
}
5056
}
5157

@@ -60,15 +66,15 @@ private async void OnDeleteClicked(object sender, EventArgs e)
6066

6167
if (confirm)
6268
{
63-
await _database.DeleteListAsync(list);
69+
await database.DeleteListAsync(list);
6470
}
6571
}
6672

6773
private async void OnListSelected(object sender, SelectionChangedEventArgs e)
6874
{
6975
if (e.CurrentSelection.FirstOrDefault() is TodoList selectedList)
7076
{
71-
await Navigation.PushAsync(new TodoListPage(_database, selectedList));
77+
await Navigation.PushAsync(new TodoListPage(database, selectedList));
7278
ListsCollection.SelectedItem = null;
7379
}
7480
}

demos/TodoSQLite/Views/TodoListPage.xaml.cs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
1-
using System.Collections.ObjectModel;
2-
using PowerSync.Common.Client;
1+
using PowerSync.Common.Client;
32
using TodoSQLite.Data;
43
using TodoSQLite.Models;
54

65
namespace TodoSQLite.Views;
76

87
public partial class TodoListPage : ContentPage
98
{
10-
public readonly PowerSyncData _database;
11-
private readonly TodoList _list;
9+
private readonly PowerSyncData database;
10+
private readonly TodoList selectedList;
1211

13-
public TodoListPage(PowerSyncData database, TodoList list)
12+
public TodoListPage(PowerSyncData powerSyncData, TodoList list)
1413
{
1514
InitializeComponent();
16-
_database = database;
17-
_list = list;
15+
database = powerSyncData;
16+
selectedList = list;
1817
BindingContext = this;
1918
}
2019

20+
public string ListName => selectedList?.Name ?? "";
21+
2122
protected override async void OnAppearing()
2223
{
2324
base.OnAppearing();
24-
await _database._db.Watch("select * from todos", null, new WatchHandler<TodoItem>
25+
26+
await database.Db.Watch("select * from todos", null, new WatchHandler<TodoItem>
2527
{
2628
OnResult = (results) =>
2729
{
@@ -42,9 +44,9 @@ private async void OnAddClicked(object sender, EventArgs e)
4244
var todo = new TodoItem
4345
{
4446
Description = description,
45-
ListId = _list.ID
47+
ListId = selectedList.ID
4648
};
47-
await _database.SaveItemAsync(todo);
49+
await database.SaveItemAsync(todo);
4850
}
4951
}
5052

@@ -59,7 +61,7 @@ private async void OnDeleteClicked(object sender, EventArgs e)
5961

6062
if (confirm)
6163
{
62-
await _database.DeleteItemAsync(todo);
64+
await database.DeleteItemAsync(todo);
6365
}
6466
}
6567

@@ -72,12 +74,12 @@ private async void OnCheckBoxChanged(object sender, CheckedChangedEventArgs e)
7274
{
7375
todo.Completed = e.Value;
7476
todo.CompletedAt = DateTime.UtcNow.ToString("o");
75-
await _database.SaveItemAsync(todo);
77+
await database.SaveItemAsync(todo);
7678
} else if (e.Value == false && todo.CompletedAt != null)
7779
{
7880
todo.Completed = e.Value;
7981
todo.CompletedAt = null; // Uncheck, clear completed time
80-
await _database.SaveItemAsync(todo);
82+
await database.SaveItemAsync(todo);
8183
}
8284
}
8385
}
@@ -93,7 +95,7 @@ private async void OnItemSelected(object sender, SelectionChangedEventArgs e)
9395
if (!string.IsNullOrWhiteSpace(newDescription))
9496
{
9597
selectedItem.Description = newDescription;
96-
await _database.SaveItemAsync(selectedItem);
98+
await database.SaveItemAsync(selectedItem);
9799
}
98100

99101
TodoItemsCollection.SelectedItem = null;

0 commit comments

Comments
 (0)