TF-1812 Handle add sending email to queue in work manager
(cherry picked from commit c5d89665f525550949bf4e694133ce5ea2777846)
This commit is contained in:
@@ -2,4 +2,5 @@
|
||||
class WorkManagerConstants {
|
||||
static const String sendingEmailUniqueId = 'com.linagora.ios.teammail.sendingQueue';
|
||||
static const String workerTypeKey = 'worker_type';
|
||||
static const int initialDelayTime = 2000;
|
||||
}
|
||||
@@ -17,32 +17,38 @@ class WorkSchedulerController {
|
||||
factory WorkSchedulerController() => _instance ??= WorkSchedulerController._();
|
||||
|
||||
Future<void> enqueue(WorkRequest workRequest) {
|
||||
if (workRequest is OneTimeWorkRequest) {
|
||||
return Workmanager().registerOneOffTask(
|
||||
workRequest.worker.uniqueId,
|
||||
workRequest.worker.id,
|
||||
tag: workRequest.worker.type.name,
|
||||
initialDelay: workRequest.initialDelay,
|
||||
constraints: workRequest.constraints,
|
||||
backoffPolicy: workRequest.backoffPolicy,
|
||||
backoffPolicyDelay: workRequest.backoffPolicyDelay,
|
||||
outOfQuotaPolicy: workRequest.outOfQuotaPolicy,
|
||||
inputData: workRequest.worker.inputData
|
||||
);
|
||||
} if (workRequest is PeriodicWorkRequest) {
|
||||
return Workmanager().registerPeriodicTask(
|
||||
workRequest.worker.uniqueId,
|
||||
workRequest.worker.id,
|
||||
frequency: workRequest.frequency,
|
||||
tag: workRequest.worker.type.name,
|
||||
initialDelay: workRequest.initialDelay,
|
||||
constraints: workRequest.constraints,
|
||||
backoffPolicy: workRequest.backoffPolicy,
|
||||
backoffPolicyDelay: workRequest.backoffPolicyDelay,
|
||||
outOfQuotaPolicy: workRequest.outOfQuotaPolicy,
|
||||
inputData: workRequest.worker.inputData
|
||||
);
|
||||
} else {
|
||||
try {
|
||||
log('WorkSchedulerController::enqueue():workRequest: $workRequest');
|
||||
if (workRequest is OneTimeWorkRequest) {
|
||||
return Workmanager().registerOneOffTask(
|
||||
workRequest.worker.uniqueId,
|
||||
workRequest.worker.id,
|
||||
tag: workRequest.worker.type.name,
|
||||
initialDelay: workRequest.initialDelay,
|
||||
constraints: workRequest.constraints,
|
||||
backoffPolicy: workRequest.backoffPolicy,
|
||||
backoffPolicyDelay: workRequest.backoffPolicyDelay,
|
||||
outOfQuotaPolicy: workRequest.outOfQuotaPolicy,
|
||||
inputData: workRequest.worker.inputData
|
||||
);
|
||||
} if (workRequest is PeriodicWorkRequest) {
|
||||
return Workmanager().registerPeriodicTask(
|
||||
workRequest.worker.uniqueId,
|
||||
workRequest.worker.id,
|
||||
frequency: workRequest.frequency,
|
||||
tag: workRequest.worker.type.name,
|
||||
initialDelay: workRequest.initialDelay,
|
||||
constraints: workRequest.constraints,
|
||||
backoffPolicy: workRequest.backoffPolicy,
|
||||
backoffPolicyDelay: workRequest.backoffPolicyDelay,
|
||||
outOfQuotaPolicy: workRequest.outOfQuotaPolicy,
|
||||
inputData: workRequest.worker.inputData
|
||||
);
|
||||
} else {
|
||||
return Future.value();
|
||||
}
|
||||
} catch (e) {
|
||||
logError('WorkSchedulerController::enqueue(): EXCEPTION: $e');
|
||||
return Future.value();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ class SendingEmailHiveCache extends HiveObject with EquatableMixin {
|
||||
final String sendingId;
|
||||
|
||||
@HiveField(1)
|
||||
final Map<String, dynamic> emailData;
|
||||
final Map<String, dynamic> email;
|
||||
|
||||
@HiveField(2)
|
||||
final String emailActionType;
|
||||
@@ -37,7 +37,7 @@ class SendingEmailHiveCache extends HiveObject with EquatableMixin {
|
||||
|
||||
SendingEmailHiveCache(
|
||||
this.sendingId,
|
||||
this.emailData,
|
||||
this.email,
|
||||
this.emailActionType,
|
||||
this.sentMailboxId,
|
||||
this.emailIdDestroyed,
|
||||
@@ -50,7 +50,7 @@ class SendingEmailHiveCache extends HiveObject with EquatableMixin {
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
sendingId,
|
||||
emailData,
|
||||
email,
|
||||
emailActionType,
|
||||
sentMailboxId,
|
||||
emailIdDestroyed,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/observer/work_observer.dart';
|
||||
|
||||
class SendingEmailObserver extends WorkObserver {
|
||||
@@ -11,9 +12,13 @@ class SendingEmailObserver extends WorkObserver {
|
||||
|
||||
@override
|
||||
Future<void> observe(String taskId, Map<String, dynamic> inputData) async {
|
||||
log('SendingEmailObserver::observe():taskId: $taskId | inputData: $inputData');
|
||||
return Future.value();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> bindDI() async {
|
||||
log('SendingEmailObserver::bindDI(): ');
|
||||
return Future.value();
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ class Worker with EquatableMixin {
|
||||
}
|
||||
|
||||
Map<String, dynamic> get inputData {
|
||||
data[WorkManagerConstants.workerTypeKey] = type;
|
||||
data[WorkManagerConstants.workerTypeKey] = type.name;
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user