Hooked notifications to status changes on document upload - some refactorings

This commit is contained in:
Anton Stubenbord
2023-01-11 01:26:36 +01:00
parent 8cf3020335
commit a4c4726c16
55 changed files with 1128 additions and 761 deletions

View File

@@ -7,20 +7,30 @@ class TaskStatusCubit extends Cubit<TaskStatusState> {
final PaperlessTasksApi _api;
TaskStatusCubit(this._api) : super(const TaskStatusState());
void startListeningToTask(String taskId) {
void listenToTaskChanges(String taskId) {
_api
.listenForTaskChanges(taskId)
.forEach(
(element) => TaskStatusState(
isListening: true,
isAcknowledged: false,
task: element,
(element) => emit(
TaskStatusState(
isListening: true,
task: element,
),
),
)
.whenComplete(() => emit(state.copyWith(isListening: false)));
}
void acknowledgeCurrentTask() {
emit(state.copyWith(isListening: false, isAcknowledged: true));
Future<void> acknowledgeCurrentTask() async {
if (state.task == null) {
return;
}
final task = await _api.acknowledgeTask(state.task!);
emit(
state.copyWith(
task: task,
isListening: false,
),
);
}
}

View File

@@ -3,22 +3,20 @@ part of 'task_status_cubit.dart';
class TaskStatusState extends Equatable {
final Task? task;
final bool isListening;
final bool isAcknowledged;
const TaskStatusState({
this.task,
this.isListening = false,
this.isAcknowledged = false,
});
bool get isActive => isListening && !isAcknowledged;
bool get isSuccess => task?.status == TaskStatus.success;
bool get isAcknowledged => task?.acknowledged ?? false;
String? get taskId => task?.taskId;
@override
List<Object> get props => [];
List<Object?> get props => [task, isListening];
TaskStatusState copyWith({
Task? task,
@@ -28,7 +26,6 @@ class TaskStatusState extends Equatable {
return TaskStatusState(
task: task ?? this.task,
isListening: isListening ?? this.isListening,
isAcknowledged: isAcknowledged ?? this.isAcknowledged,
);
}
}