feat: 实现日历提醒 in-app fallback 机制及通知服务重构
This commit is contained in:
@@ -27,19 +27,20 @@ class ReminderActionExecutor {
|
||||
required ReminderPayload payload,
|
||||
}) async {
|
||||
final ids = payload.mode == ReminderPayloadMode.aggregate
|
||||
? payload.aggregateIds
|
||||
? (payload.aggregateIds.isNotEmpty
|
||||
? payload.aggregateIds
|
||||
: <String>[payload.eventId])
|
||||
: <String>[payload.eventId];
|
||||
|
||||
if (action == ReminderAction.cancel) {
|
||||
if (action == ReminderAction.archive) {
|
||||
for (final id in ids) {
|
||||
await _notificationService.cancelEventReminder(id);
|
||||
await _archiveEvent(id, ReminderAction.cancel);
|
||||
await _archiveEvent(id, ReminderAction.archive);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (action == ReminderAction.snooze10m ||
|
||||
action == ReminderAction.timeout30s) {
|
||||
if (action == ReminderAction.snooze10m) {
|
||||
for (final id in ids) {
|
||||
await _snoozeEvent(id);
|
||||
}
|
||||
@@ -50,7 +51,6 @@ class ReminderActionExecutor {
|
||||
final pending = await _outboxStore.listPending();
|
||||
for (final item in pending) {
|
||||
if (item.targetStatus != 'archived') {
|
||||
await _outboxStore.markDone(item.opId);
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
@@ -71,14 +71,14 @@ class ReminderActionExecutor {
|
||||
final endAt = event.endAt;
|
||||
if (endAt != null && !now.isBefore(endAt)) {
|
||||
await _notificationService.cancelEventReminder(eventId);
|
||||
await _archiveEvent(eventId, ReminderAction.autoArchive);
|
||||
await _archiveEvent(eventId, ReminderAction.archive);
|
||||
return;
|
||||
}
|
||||
|
||||
final nextAt = now.add(const Duration(minutes: 10));
|
||||
if (endAt != null && !nextAt.isBefore(endAt)) {
|
||||
await _notificationService.cancelEventReminder(eventId);
|
||||
await _archiveEvent(eventId, ReminderAction.autoArchive);
|
||||
await _archiveEvent(eventId, ReminderAction.archive);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user