Skip to content

Commit

Permalink
address PR comments
Browse files Browse the repository at this point in the history
  • Loading branch information
DigitalSeneca committed May 9, 2024
1 parent 04e2055 commit 080fd34
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 14 deletions.
9 changes: 5 additions & 4 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ void main({String env = 'prod'}) async {
var timeUntilMidnight = nextMidnight.difference(now);

await Workmanager().registerPeriodicTask(
'fiveTimesPerDayTracking',
'fiveTimesPerDayTracking',
'scheduleDailyTasks',
'scheduleDailyTasks',
tag: 'scheduleDailyTasks',
frequency: Duration(days: 1),
initialDelay: timeUntilMidnight,
);
Expand All @@ -57,8 +58,8 @@ void callbackDispatcher() {
case 'trackingTask':
BackgroundTracking.trackingTask();
break;
case 'fiveTimesPerDayTracking':
BackgroundTracking.fiveTimesPerDayTracking();
case 'scheduleDailyTasks':
BackgroundTracking.scheduleMultipleTrackingTask(5);
break;
}
return Future.value(true);
Expand Down
22 changes: 12 additions & 10 deletions lib/utils/BackgroundTracking.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import 'package:workmanager/workmanager.dart';


class BackgroundTracking{
static List<TimeOfDay> getRandomTimes() {
static List<TimeOfDay> getRandomTimes(int numSamples) {
var random = Random();
var randomTimes = <TimeOfDay>[];

for (var i = 0; i < 5; i++) {
for (var i = 0; i < numSamples; i++) {
var hour = random.nextInt(24); // Random hour between 00 and 23
var minute = random.nextInt(60); // Random minute between 00 and 59
var time = TimeOfDay(hour: hour, minute: minute);
Expand All @@ -23,16 +23,18 @@ class BackgroundTracking{
return randomTimes;
}

static void fiveTimesPerDayTracking() {
var randomTimes = getRandomTimes();
static void scheduleMultipleTrackingTask(int numTasks) {
var randomTimes = getRandomTimes(numTasks);

for (var i = 0; i < 5; i++) {
Workmanager().registerOneOffTask(
'tracking_task_$i',
'trackingTask',
initialDelay: Duration(hours: randomTimes[i].hour, minutes: randomTimes[i].minute),
randomTimes.asMap().forEach((index, time) async {
await Workmanager().registerOneOffTask(
'tracking_task_$index',
'trackingTask',
initialDelay: Duration(hours: time.hour, minutes: time.minute),
tag: 'trackingTask',
constraints: Constraints(networkType: NetworkType.connected)
);
}
});
}

static void trackingTask() async {
Expand Down

0 comments on commit 080fd34

Please sign in to comment.