TF-1861 Config and abstraction work manager
(cherry picked from commit ee2dca9b34a907c8356ceccf0b23efba2893a01c)
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/observer/work_observer.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/scheduler/work_status.dart';
|
||||
|
||||
class SendingEmailObserver extends WorkObserver<Email> {
|
||||
|
||||
static SendingEmailObserver? _instance;
|
||||
|
||||
SendingEmailObserver._();
|
||||
|
||||
factory SendingEmailObserver() => _instance ??= SendingEmailObserver._();
|
||||
|
||||
@override
|
||||
void handleFailureViewState(Failure failure) {
|
||||
}
|
||||
|
||||
@override
|
||||
void handleSuccessViewState(Success success) {
|
||||
}
|
||||
|
||||
@override
|
||||
WorkStatus observe(Email value) {
|
||||
return WorkStatus.failure;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/scheduler/work_status.dart';
|
||||
|
||||
abstract class WorkObserver<T> {
|
||||
WorkStatus observe(T value);
|
||||
|
||||
void consumeState(Stream<Either<Failure, Success>> newStateStream) {
|
||||
newStateStream.listen(
|
||||
_handleStateStream,
|
||||
onError: (error, stackTrace) {
|
||||
logError('WorkObserver::consumeState():onError:error: $error');
|
||||
logError('WorkObserver::consumeState():onError:stackTrace: $stackTrace');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
void _handleStateStream(Either<Failure, Success> newState) {
|
||||
newState.fold(handleFailureViewState, handleSuccessViewState);
|
||||
}
|
||||
|
||||
void handleFailureViewState(Failure failure);
|
||||
|
||||
void handleSuccessViewState(Success success);
|
||||
}
|
||||
Reference in New Issue
Block a user