Implements the ability to load and process SMS messages to automatically create transaction records. This includes: - Adding an `SmsMessage` model and Hive adapter. - Creating an `ISmsMessageRepository` and its Hive implementation. - Integrating SMS loading functionality into the `SmsCubit`. - Adding a UI element in settings to trigger SMS loading. - Persisting last SMS sync time in user preferences.
40 lines
1.0 KiB
Dart
40 lines
1.0 KiB
Dart
import 'package:budget_app/models/sms_message.dart';
|
|
import 'package:equatable/equatable.dart';
|
|
|
|
/// Абстрактный класс для состояний SMS.
|
|
abstract class SmsState extends Equatable {
|
|
const SmsState();
|
|
|
|
@override
|
|
List<Object> get props => [];
|
|
}
|
|
|
|
/// Начальное состояние.
|
|
class SmsInitial extends SmsState {}
|
|
|
|
/// Состояние загрузки SMS.
|
|
class SmsLoading extends SmsState {}
|
|
|
|
/// Состояние, когда SMS успешно загружены.
|
|
class SmsLoaded extends SmsState {
|
|
final List<SmsMessage> messages;
|
|
|
|
const SmsLoaded(this.messages);
|
|
|
|
@override
|
|
List<Object> get props => [messages];
|
|
}
|
|
|
|
/// Состояние, когда отказано в разрешении на чтение SMS.
|
|
class SmsPermissionDenied extends SmsState {}
|
|
|
|
/// Состояние ошибки при загрузке SMS.
|
|
class SmsError extends SmsState {
|
|
final String message;
|
|
|
|
const SmsError(this.message);
|
|
|
|
@override
|
|
List<Object> get props => [message];
|
|
}
|