Skip to content

Commit 5b25aaa

Browse files
committed
Use riverpod in supabase-todolist-drift
1 parent c0d44cb commit 5b25aaa

33 files changed

+1747
-743
lines changed

demos/supabase-todolist-drift/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
*.swp
66
.DS_Store
77
.atom/
8+
.build/
89
.buildlog/
910
.history
1011
.svn/
12+
.swiftpm/
1113
migrate_working_dir/
1214

1315
# IntelliJ related

demos/supabase-todolist-drift/lib/attachments/photo_capture_widget.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,25 @@ import 'dart:async';
22

33
import 'package:camera/camera.dart';
44
import 'package:flutter/material.dart';
5+
import 'package:hooks_riverpod/hooks_riverpod.dart';
56
import 'package:powersync/powersync.dart' as powersync;
67
import 'package:supabase_todolist_drift/attachments/queue.dart';
78
import 'package:supabase_todolist_drift/powersync.dart';
89

9-
class TakePhotoWidget extends StatefulWidget {
10+
class TakePhotoWidget extends ConsumerStatefulWidget {
1011
final String todoId;
1112
final CameraDescription camera;
1213

1314
const TakePhotoWidget(
1415
{super.key, required this.todoId, required this.camera});
1516

1617
@override
17-
State<StatefulWidget> createState() {
18+
ConsumerState<TakePhotoWidget> createState() {
1819
return _TakePhotoWidgetState();
1920
}
2021
}
2122

22-
class _TakePhotoWidgetState extends State<TakePhotoWidget> {
23+
class _TakePhotoWidgetState extends ConsumerState<TakePhotoWidget> {
2324
late CameraController _cameraController;
2425
late Future<void> _initializeControllerFuture;
2526

@@ -56,7 +57,7 @@ class _TakePhotoWidgetState extends State<TakePhotoWidget> {
5657

5758
int photoSize = await photo.length();
5859

59-
await appDb.addTodoPhoto(widget.todoId, photoId);
60+
await ref.read(driftDatabase).addTodoPhoto(widget.todoId, photoId);
6061
await attachmentQueue.saveFile(photoId, photoSize);
6162
} catch (e) {
6263
log.info('Error taking photo: $e');

demos/supabase-todolist-drift/lib/database.dart

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import 'package:drift/drift.dart';
2-
import 'package:powersync/powersync.dart' show PowerSyncDatabase, uuid;
3-
import 'package:drift_sqlite_async/drift_sqlite_async.dart';
4-
import 'package:supabase_todolist_drift/powersync.dart';
2+
import 'package:powersync/powersync.dart' show uuid;
53

64
part 'database.g.dart';
75

@@ -32,21 +30,21 @@ class ListItems extends Table {
3230
TextColumn get ownerId => text().nullable().named('owner_id')();
3331
}
3432

35-
class ListItemWithStats {
36-
late ListItem self;
37-
int completedCount;
38-
int pendingCount;
33+
final class ListItemWithStats {
34+
final ListItem self;
35+
final int completedCount;
36+
final int pendingCount;
3937

40-
ListItemWithStats(
38+
const ListItemWithStats(
4139
this.self,
4240
this.completedCount,
4341
this.pendingCount,
4442
);
4543
}
4644

47-
@DriftDatabase(tables: [TodoItems, ListItems], include: {'queries.drift'})
45+
@DriftDatabase(tables: [TodoItems, ListItems])
4846
class AppDatabase extends _$AppDatabase {
49-
AppDatabase(PowerSyncDatabase db) : super(SqliteAsyncDriftConnection(db));
47+
AppDatabase(super.e);
5048

5149
@override
5250
int get schemaVersion => 1;
@@ -57,13 +55,9 @@ class AppDatabase extends _$AppDatabase {
5755
.watch();
5856
}
5957

60-
Stream<List<ListItemWithStats>> watchListsWithStats() {
61-
return listsWithStats().watch();
62-
}
63-
64-
Future<ListItem> createList(String name) async {
58+
Future<ListItem> createList(String name, String? userId) async {
6559
return into(listItems).insertReturning(
66-
ListItemsCompanion.insert(name: name, ownerId: Value(getUserId())));
60+
ListItemsCompanion.insert(name: name, ownerId: Value(userId)));
6761
}
6862

6963
Future<void> deleteList(ListItem list) async {
@@ -81,21 +75,23 @@ class AppDatabase extends _$AppDatabase {
8175
await (delete(todoItems)..where((t) => t.id.equals(todo.id))).go();
8276
}
8377

84-
Future<TodoItem> addTodo(ListItem list, String description) async {
78+
Future<TodoItem> addTodo(
79+
ListItem list, String description, String? creator) async {
8580
return into(todoItems).insertReturning(TodoItemsCompanion.insert(
86-
listId: list.id,
87-
description: description,
88-
completed: const Value(false),
89-
createdBy: Value(getUserId())));
81+
listId: list.id,
82+
description: description,
83+
completed: const Value(false),
84+
createdBy: Value(creator),
85+
));
9086
}
9187

92-
Future<void> toggleTodo(TodoItem todo) async {
88+
Future<void> toggleTodo(TodoItem todo, String? userId) async {
9389
if (todo.completed != true) {
9490
await (update(todoItems)..where((t) => t.id.equals(todo.id))).write(
9591
TodoItemsCompanion(
9692
completed: const Value(true),
9793
completedAt: Value(DateTime.now()),
98-
completedBy: Value(getUserId())));
94+
completedBy: Value(userId)));
9995
} else {
10096
await (update(todoItems)..where((t) => t.id.equals(todo.id))).write(
10197
const TodoItemsCompanion(

0 commit comments

Comments
 (0)