Skip to content

Commit b50b929

Browse files
committed
Fix stale filter and list refresh behavior in events, users, calendar, notes, and dashboard views
1 parent 3af1a9d commit b50b929

11 files changed

Lines changed: 76 additions & 20 deletions

File tree

app/lib/api/storage/remote/service.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class RequestDatabaseService extends ModelService with TableService {
1616
Future<void> create(Database db) async {
1717
await db.execute('''
1818
CREATE TABLE IF NOT EXISTS request (
19-
id BLOB(16) PRIMARY KEY,
19+
id INTEGER PRIMARY KEY AUTOINCREMENT,
2020
created INTEGER NOT NULL,
2121
data TEXT NOT NULL
2222
)
@@ -30,7 +30,7 @@ class RequestDatabaseService extends ModelService with TableService {
3030
});
3131
}
3232

33-
Future<List<ConnectedModel<DateTime, APIRequest>>> getRequests({
33+
Future<List<ConnectedModel<int, APIRequest>>> getRequests({
3434
int offset = 0,
3535
int limit = 50,
3636
}) async {
@@ -44,7 +44,7 @@ class RequestDatabaseService extends ModelService with TableService {
4444
return result
4545
.map(
4646
(e) => ConnectedModel(
47-
DateTime.fromMillisecondsSinceEpoch(e['created'] as int),
47+
e['id'] as int,
4848
APIRequestMapper.fromJson(e['data'] as String),
4949
),
5050
)
@@ -100,7 +100,7 @@ abstract class RemoteService<T extends RemoteStorage> extends SourceService {
100100
for (final request in requests) {
101101
try {
102102
await request.model.send().then(
103-
(value) => local.request.deleteRequest(request.model.id),
103+
(value) => local.request.deleteRequest(request.source),
104104
);
105105
} catch (_) {}
106106
}

app/lib/api/storage/remote/sia.dart

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,5 @@ class SiaRemoteService extends RemoteService<SiaStorage> {
77
SiaRemoteService(super.remoteStorage, super.local, super.password);
88

99
@override
10-
Future<void> synchronize() {
11-
// TODO: implement sync
12-
throw UnimplementedError();
13-
}
10+
Future<void> synchronize() => super.synchronize();
1411
}

app/lib/pages/calendar/filter.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,17 @@ class _CalendarFilterViewState extends State<CalendarFilterView> {
7979
super.initState();
8080
}
8181

82+
@override
83+
void didUpdateWidget(covariant CalendarFilterView oldWidget) {
84+
super.didUpdateWidget(oldWidget);
85+
86+
if (oldWidget.initialFilter != widget.initialFilter) {
87+
setState(() {
88+
_filter = widget.initialFilter ?? const CalendarFilter();
89+
});
90+
}
91+
}
92+
8293
@override
8394
Widget build(BuildContext context) {
8495
return Scrollbar(

app/lib/pages/calendar/page.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,10 @@ class _CalendarBodyViewState extends State<CalendarBodyView> {
164164
void didUpdateWidget(covariant CalendarBodyView oldWidget) {
165165
super.didUpdateWidget(oldWidget);
166166

167+
if (oldWidget.filter != widget.filter) {
168+
_filter = widget.filter;
169+
}
170+
167171
if (oldWidget.view != widget.view) {
168172
setState(() {});
169173
}

app/lib/pages/dashboard/events.dart

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,19 @@ class _DashboardEventsViewState extends State<DashboardEventsView> {
9797
(e) => ListTile(
9898
title: Text(e.main.name),
9999
subtitle: MarkdownText(e.main.description),
100-
onTap: () => showDialog(
101-
context: context,
102-
builder: (context) => CalendarItemDialog(
103-
event: e.sub,
104-
item: e.main,
105-
source: e.source,
106-
),
107-
).then((value) => setState(() {})),
100+
onTap: () =>
101+
showDialog(
102+
context: context,
103+
builder: (context) => CalendarItemDialog(
104+
event: e.sub,
105+
item: e.main,
106+
source: e.source,
107+
),
108+
).then(
109+
(value) => setState(() {
110+
_appointmentsFuture = _getAppointments();
111+
}),
112+
),
108113
),
109114
)
110115
.toList(),

app/lib/pages/events/filter.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,17 @@ class _EventFilterViewState extends State<EventFilterView> {
4949
super.initState();
5050
}
5151

52+
@override
53+
void didUpdateWidget(covariant EventFilterView oldWidget) {
54+
super.didUpdateWidget(oldWidget);
55+
56+
if (oldWidget.initialFilter != widget.initialFilter) {
57+
setState(() {
58+
_filter = widget.initialFilter ?? const EventFilter();
59+
});
60+
}
61+
}
62+
5263
@override
5364
Widget build(BuildContext context) {
5465
return Scrollbar(

app/lib/pages/events/page.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ class _EventsBodyViewState extends State<EventsBodyView> {
108108
offset: offset,
109109
limit: limit,
110110
groupId: _filter.source == source ? _filter.group : null,
111+
resourceIds: _filter.source == source && _filter.resource != null
112+
? [_filter.resource!]
113+
: null,
111114
search: widget.search,
112115
),
113116
);
@@ -125,7 +128,12 @@ class _EventsBodyViewState extends State<EventsBodyView> {
125128
void didUpdateWidget(covariant EventsBodyView oldWidget) {
126129
super.didUpdateWidget(oldWidget);
127130

128-
if (oldWidget.search != widget.search) {
131+
final changedFilter = oldWidget.filter != widget.filter;
132+
if (changedFilter) {
133+
_filter = widget.filter;
134+
}
135+
136+
if (oldWidget.search != widget.search || changedFilter) {
129137
_bloc.refresh();
130138
}
131139
}

app/lib/pages/notes/page.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class NotesBodyView extends StatefulWidget {
9292
class _NotesBodyViewState extends State<NotesBodyView> {
9393
late final FlowCubit _flowCubit;
9494
late final SourcedPagingBloc<Note> _bloc;
95-
late final Future<Note?> _parent;
95+
late Future<Note?> _parent;
9696
late NoteFilter _filter;
9797

9898
@override
@@ -156,6 +156,9 @@ class _NotesBodyViewState extends State<NotesBodyView> {
156156

157157
if (oldWidget.search != widget.search ||
158158
oldWidget.parent != widget.parent) {
159+
if (oldWidget.parent != widget.parent) {
160+
_parent = _fetchParent();
161+
}
159162
_bloc.refresh();
160163
}
161164
if (oldWidget.filter != widget.filter) {

app/lib/pages/users/filter.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ class _UserFilterViewState extends State<UserFilterView> {
4141
super.initState();
4242
}
4343

44+
@override
45+
void didUpdateWidget(covariant UserFilterView oldWidget) {
46+
super.didUpdateWidget(oldWidget);
47+
48+
if (oldWidget.initialFilter != widget.initialFilter) {
49+
setState(() {
50+
_filter = widget.initialFilter ?? const UserFilter();
51+
});
52+
}
53+
}
54+
4455
@override
4556
Widget build(BuildContext context) {
4657
return Scrollbar(

app/lib/pages/users/page.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class _UsersBodyViewState extends State<UsersBodyView> {
107107
: service.user?.getUsers(
108108
offset: offset,
109109
limit: limit,
110-
groupId: _filter.group,
110+
groupId: _filter.source == source ? _filter.group : null,
111111
search: widget.search,
112112
),
113113
);
@@ -125,7 +125,12 @@ class _UsersBodyViewState extends State<UsersBodyView> {
125125
void didUpdateWidget(covariant UsersBodyView oldWidget) {
126126
super.didUpdateWidget(oldWidget);
127127

128-
if (oldWidget.search != widget.search) {
128+
final changedFilter = oldWidget.filter != widget.filter;
129+
if (changedFilter) {
130+
_filter = widget.filter;
131+
}
132+
133+
if (oldWidget.search != widget.search || changedFilter) {
129134
_bloc.refresh();
130135
}
131136
}

0 commit comments

Comments
 (0)