Add feedback service, reminder diagnostics and smooth week transitions

This commit is contained in:
Codex
2026-10-14 15:53:21 +08:00
parent c5e736b39b
commit 1f06e3741e
40 changed files with 3982 additions and 25 deletions
@@ -12,6 +12,7 @@ class AlarmGateway extends ReminderGateway {
ReminderPermissions permission = const ReminderPermissions(true, true);
final alarms = <int, ReminderRequest>{};
int permissionRequests = 0;
bool dropWrites = false;
@override
Future<ReminderPermissions> permissions({required bool request}) async {
if (request) permissionRequests++;
@@ -22,7 +23,7 @@ class AlarmGateway extends ReminderGateway {
Future<Set<int>> pendingIds() async => alarms.keys.toSet();
@override
Future<void> schedule(ReminderRequest value) async {
alarms[value.id] = value;
if (!dropWrites) alarms[value.id] = value;
}
@override
@@ -47,6 +48,23 @@ void main() {
return AppSnapshot.fromJson(json).settings;
}
test(
'does not report success when native scheduling did not persist',
() async {
gateway.dropWrites = true;
final events = ScheduleEngine.occurrences([course()], term);
await expectLater(
service.reconcile(events, settings, DateTime.utc(2026, 9, 9)),
throwsA(
isA<ReminderSetupException>().having(
(e) => e.code,
'code',
'schedule_not_saved',
),
),
);
},
);
test(
'selected advance times produce independent alarms and survive refresh',
() async {