b1af1d8533
(cherry picked from commit ee2dca9b34a907c8356ceccf0b23efba2893a01c)
28 lines
906 B
Dart
28 lines
906 B
Dart
|
|
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);
|
|
} |