2024-07-24 15:40:25 +00:00
|
|
|
import 'dart:async';
|
|
|
|
|
|
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
|
|
|
2024-07-24 15:48:24 +00:00
|
|
|
import '../models/focus_mode_data.dart';
|
2024-07-24 15:40:25 +00:00
|
|
|
|
2024-07-24 15:48:24 +00:00
|
|
|
part 'focus_mode.g.dart';
|
2024-07-24 15:40:25 +00:00
|
|
|
|
2024-07-24 16:04:27 +00:00
|
|
|
@Riverpod(keepAlive: true)
|
2024-07-24 15:40:25 +00:00
|
|
|
class FocusMode extends _$FocusMode {
|
|
|
|
Timer? _disableTimer;
|
|
|
|
|
|
|
|
void setMode(FocusModeData newMode) {
|
|
|
|
_disableTimer?.cancel();
|
|
|
|
if (newMode.enabled && newMode.disableTime != null) {
|
|
|
|
_disableTimer =
|
|
|
|
Timer(newMode.disableTime!.difference(DateTime.now()), () {
|
|
|
|
print('disabling mode');
|
|
|
|
state = const FocusModeData(false);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
print('New focus mode: $newMode');
|
|
|
|
state = newMode;
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
FocusModeData build() {
|
2024-07-24 16:04:27 +00:00
|
|
|
print('Building FocusMode provider');
|
2024-07-24 15:40:25 +00:00
|
|
|
state = const FocusModeData(false);
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|