WIP - Add system notifications for document upload progress/status

This commit is contained in:
Anton Stubenbord
2023-01-09 01:35:47 +01:00
parent 3c6c4e63d7
commit 8cf3020335
34 changed files with 615 additions and 44 deletions

View File

@@ -0,0 +1,26 @@
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:paperless_api/paperless_api.dart';
part 'task_status_state.dart';
class TaskStatusCubit extends Cubit<TaskStatusState> {
final PaperlessTasksApi _api;
TaskStatusCubit(this._api) : super(const TaskStatusState());
void startListeningToTask(String taskId) {
_api
.listenForTaskChanges(taskId)
.forEach(
(element) => TaskStatusState(
isListening: true,
isAcknowledged: false,
task: element,
),
)
.whenComplete(() => emit(state.copyWith(isListening: false)));
}
void acknowledgeCurrentTask() {
emit(state.copyWith(isListening: false, isAcknowledged: true));
}
}

View File

@@ -0,0 +1,34 @@
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;
String? get taskId => task?.taskId;
@override
List<Object> get props => [];
TaskStatusState copyWith({
Task? task,
bool? isListening,
bool? isAcknowledged,
}) {
return TaskStatusState(
task: task ?? this.task,
isListening: isListening ?? this.isListening,
isAcknowledged: isAcknowledged ?? this.isAcknowledged,
);
}
}

View File

@@ -0,0 +1,8 @@
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
part 'tasks_state.dart';
class TasksCubit extends Cubit<TasksState> {
TasksCubit() : super(TasksInitial());
}

View File

@@ -0,0 +1,10 @@
part of 'tasks_cubit.dart';
abstract class TasksState extends Equatable {
const TasksState();
@override
List<Object> get props => [];
}
class TasksInitial extends TasksState {}