35 lines
968 B
Dart
35 lines
968 B
Dart
import '../domain/app_settings.dart';
|
|
import '../domain/course_occurrence.dart';
|
|
|
|
enum ReminderStatus { off, permissionDenied, exact, inexact, error }
|
|
|
|
class ReminderResult {
|
|
const ReminderResult(
|
|
this.status, {
|
|
this.scheduledCount = 0,
|
|
this.message = '',
|
|
});
|
|
final ReminderStatus status;
|
|
final int scheduledCount;
|
|
final String message;
|
|
}
|
|
|
|
abstract class NotificationService {
|
|
Future<ReminderResult> reconcile(
|
|
List<CourseOccurrence> occurrences,
|
|
AppSettings settings,
|
|
DateTime now,
|
|
);
|
|
Future<void> requestPermissions();
|
|
Future<void> cancelOwned();
|
|
Future<String> sendTestReminder({required bool scheduled}) async =>
|
|
'当前环境不支持通知测试';
|
|
Future<Map<String, Object?>> diagnose() async => {};
|
|
Future<void> openSettings({required bool background}) async {}
|
|
}
|
|
|
|
class ReminderSetupException implements Exception {
|
|
const ReminderSetupException(this.code, this.message);
|
|
final String code, message;
|
|
}
|