Add initial FocusModeProvider

This commit is contained in:
Hank Grabowski 2024-07-24 11:40:25 -04:00
parent 764c89425d
commit 84b933f208
2 changed files with 61 additions and 0 deletions

View file

@ -0,0 +1,36 @@
import 'dart:async';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'focus_mode.g.dart';
class FocusModeData {
final DateTime? disableTime;
final bool enabled;
const FocusModeData(this.enabled, {this.disableTime});
}
@riverpod
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() {
state = const FocusModeData(false);
return state;
}
}

View file

@ -0,0 +1,25 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'focus_mode.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$focusModeHash() => r'7ef6b8dec35f671619459b4af61123f90665e4b0';
/// See also [FocusMode].
@ProviderFor(FocusMode)
final focusModeProvider =
AutoDisposeNotifierProvider<FocusMode, FocusModeData>.internal(
FocusMode.new,
name: r'focusModeProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product') ? null : _$focusModeHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$FocusMode = AutoDisposeNotifier<FocusModeData>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member