mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-15 06:12:29 -06:00
WIP - Add system notifications for document upload progress/status
This commit is contained in:
26
lib/features/tasks/cubit/task_status_cubit.dart
Normal file
26
lib/features/tasks/cubit/task_status_cubit.dart
Normal 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));
|
||||
}
|
||||
}
|
||||
34
lib/features/tasks/cubit/task_status_state.dart
Normal file
34
lib/features/tasks/cubit/task_status_state.dart
Normal 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,
|
||||
);
|
||||
}
|
||||
}
|
||||
8
lib/features/tasks/cubit/tasks_cubit.dart
Normal file
8
lib/features/tasks/cubit/tasks_cubit.dart
Normal 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());
|
||||
}
|
||||
10
lib/features/tasks/cubit/tasks_state.dart
Normal file
10
lib/features/tasks/cubit/tasks_state.dart
Normal 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 {}
|
||||
Reference in New Issue
Block a user