TF-1812 Handle add sending email to queue in work manager

(cherry picked from commit c5d89665f525550949bf4e694133ce5ea2777846)
This commit is contained in:
dab246
2023-05-26 08:51:16 +07:00
committed by Dat Vu
parent c98be4cfc5
commit fc94e0aa04
14 changed files with 122 additions and 34 deletions
@@ -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();
}
}