From d82459fbbb27acd4f2e502527a481a79ba06266d Mon Sep 17 00:00:00 2001 From: Vijaykarthik T K <39937989+vijaykarthiktk@users.noreply.github.com> Date: Tue, 28 May 2024 17:11:23 +0530 Subject: [PATCH 1/9] feat: Implement User Settings Persistence (#91) --- lib/presentation/organisms/timer_organism.dart | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/presentation/organisms/timer_organism.dart b/lib/presentation/organisms/timer_organism.dart index dc4eacd..b41b5c5 100644 --- a/lib/presentation/organisms/timer_organism.dart +++ b/lib/presentation/organisms/timer_organism.dart @@ -6,6 +6,7 @@ import 'package:infinite_horizons/domain/wake_lock_controller.dart'; import 'package:infinite_horizons/presentation/atoms/atoms.dart'; import 'package:infinite_horizons/presentation/core/global_variables.dart'; import 'package:infinite_horizons/presentation/molecules/molecules.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class TimerOrganism extends StatefulWidget { @override @@ -15,6 +16,7 @@ class TimerOrganism extends StatefulWidget { class _TimerOrganismState extends State with AutomaticKeepAliveClientMixin { HomeState state = HomeState.getReadyForStudy; + late SharedPreferences _prefs; @override bool get wantKeepAlive => true; @@ -24,6 +26,14 @@ class _TimerOrganismState extends State @override void initState() { super.initState(); + SharedPreferences.getInstance().then( + (value) { + _prefs = value; + lockScreen = _prefs.getBool("isLockScreen") ?? lockScreen; + WakeLockController.instance.setWakeLock(lockScreen); + PlayerController.instance.setSilentState(!(_prefs.getBool("isSound") ?? true)); + }, + ); if (lockScreen) { WakeLockController.instance.setWakeLock(true); } @@ -119,8 +129,10 @@ class _TimerOrganismState extends State text: 'sound', offIcon: Icons.music_off_rounded, onIcon: Icons.music_note_rounded, - onChange: (bool value) => - PlayerController.instance.setSilentState(!value), + onChange: (bool value) { + PlayerController.instance.setSilentState(!value); + _prefs.setBool("isSound", value); + }, initialValue: !PlayerController.instance.isSilent(), ), const SeparatorAtom(), @@ -130,6 +142,7 @@ class _TimerOrganismState extends State onIcon: Icons.lock_open, onChange: (bool value) { lockScreen = value; + _prefs.setBool("isLockScreen", lockScreen); WakeLockController.instance.setWakeLock(lockScreen); }, initialValue: lockScreen, From c33d704ee72bca70c92a2ae57044d67e61fa7e83 Mon Sep 17 00:00:00 2001 From: Vijaykarthik T K <39937989+vijaykarthiktk@users.noreply.github.com> Date: Tue, 28 May 2024 22:18:33 +0530 Subject: [PATCH 2/9] feat: Implement User Settings Persistence (#91) --- lib/domain/preferences_controller.dart | 5 +++++ lib/infrastructure/preferences_repository.dart | 6 ++++++ lib/presentation/organisms/timer_organism.dart | 16 ++++++---------- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/lib/domain/preferences_controller.dart b/lib/domain/preferences_controller.dart index e7bda66..ab0e5f3 100644 --- a/lib/domain/preferences_controller.dart +++ b/lib/domain/preferences_controller.dart @@ -12,9 +12,14 @@ abstract class PreferencesController { String? getString(String key); + bool? getBool(String key); + void remove(String key); void setString(String key, String value); + + void setBool(String key, bool value); + } // class PreferencesController extends PreferencesController { diff --git a/lib/infrastructure/preferences_repository.dart b/lib/infrastructure/preferences_repository.dart index ebcadbb..38c4fcb 100644 --- a/lib/infrastructure/preferences_repository.dart +++ b/lib/infrastructure/preferences_repository.dart @@ -11,9 +11,15 @@ class _PreferencesRepository extends PreferencesController { @override String? getString(String key) => preferences.getString(key); + @override + bool? getBool(String key) => preferences.getBool(key); + @override void remove(String key) => preferences.remove(key); @override void setString(String key, String value) => preferences.setString(key, value); + + @override + void setBool(String key, bool value) => preferences.setBool(key, value); } diff --git a/lib/presentation/organisms/timer_organism.dart b/lib/presentation/organisms/timer_organism.dart index b41b5c5..bf91048 100644 --- a/lib/presentation/organisms/timer_organism.dart +++ b/lib/presentation/organisms/timer_organism.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:infinite_horizons/domain/player_controller.dart'; +import 'package:infinite_horizons/domain/preferences_controller.dart'; import 'package:infinite_horizons/domain/study_type_abstract.dart'; import 'package:infinite_horizons/domain/vibration_controller.dart'; import 'package:infinite_horizons/domain/wake_lock_controller.dart'; import 'package:infinite_horizons/presentation/atoms/atoms.dart'; import 'package:infinite_horizons/presentation/core/global_variables.dart'; import 'package:infinite_horizons/presentation/molecules/molecules.dart'; -import 'package:shared_preferences/shared_preferences.dart'; class TimerOrganism extends StatefulWidget { @override @@ -16,7 +16,7 @@ class TimerOrganism extends StatefulWidget { class _TimerOrganismState extends State with AutomaticKeepAliveClientMixin { HomeState state = HomeState.getReadyForStudy; - late SharedPreferences _prefs; + final PreferencesController _prefs = PreferencesController.instance; @override bool get wantKeepAlive => true; @@ -26,14 +26,10 @@ class _TimerOrganismState extends State @override void initState() { super.initState(); - SharedPreferences.getInstance().then( - (value) { - _prefs = value; - lockScreen = _prefs.getBool("isLockScreen") ?? lockScreen; - WakeLockController.instance.setWakeLock(lockScreen); - PlayerController.instance.setSilentState(!(_prefs.getBool("isSound") ?? true)); - }, - ); + lockScreen = _prefs.getBool("isLockScreen") ?? lockScreen; + WakeLockController.instance.setWakeLock(lockScreen); + PlayerController.instance.setSilentState(!(_prefs.getBool("isSound") ?? true)); + if (lockScreen) { WakeLockController.instance.setWakeLock(true); } From 1bc5418dd0a9b3389c728b83ba6414bebaac1e2f Mon Sep 17 00:00:00 2001 From: Vijaykarthik T K <39937989+vijaykarthiktk@users.noreply.github.com> Date: Wed, 29 May 2024 17:51:26 +0530 Subject: [PATCH 3/9] feat: Implement User Settings Persistence (#91) --- lib/presentation/organisms/timer_organism.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/presentation/organisms/timer_organism.dart b/lib/presentation/organisms/timer_organism.dart index bf91048..f64e77f 100644 --- a/lib/presentation/organisms/timer_organism.dart +++ b/lib/presentation/organisms/timer_organism.dart @@ -26,9 +26,9 @@ class _TimerOrganismState extends State @override void initState() { super.initState(); - lockScreen = _prefs.getBool("isLockScreen") ?? lockScreen; + lockScreen = _prefs.getBool("isSilent") ?? lockScreen; WakeLockController.instance.setWakeLock(lockScreen); - PlayerController.instance.setSilentState(!(_prefs.getBool("isSound") ?? true)); + PlayerController.instance.setSilentState(!(_prefs.getBool("setSilentState") ?? true)); if (lockScreen) { WakeLockController.instance.setWakeLock(true); @@ -127,7 +127,7 @@ class _TimerOrganismState extends State onIcon: Icons.music_note_rounded, onChange: (bool value) { PlayerController.instance.setSilentState(!value); - _prefs.setBool("isSound", value); + _prefs.setBool("setSilentState", value); }, initialValue: !PlayerController.instance.isSilent(), ), @@ -138,7 +138,7 @@ class _TimerOrganismState extends State onIcon: Icons.lock_open, onChange: (bool value) { lockScreen = value; - _prefs.setBool("isLockScreen", lockScreen); + _prefs.setBool("isSilent", lockScreen); WakeLockController.instance.setWakeLock(lockScreen); }, initialValue: lockScreen, From 718e5b3ff1ff297c37fd27d8b5aa22f1a4efd592 Mon Sep 17 00:00:00 2001 From: Vijaykarthik T K <39937989+vijaykarthiktk@users.noreply.github.com> Date: Thu, 30 May 2024 14:12:37 +0530 Subject: [PATCH 4/9] feat: Implement User Settings Persistence (#91) --- lib/domain/player_controller.dart | 2 +- lib/infrastructure/player_repository.dart | 2 +- lib/presentation/organisms/timer_organism.dart | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/domain/player_controller.dart b/lib/domain/player_controller.dart index ba47e0a..cf03df9 100644 --- a/lib/domain/player_controller.dart +++ b/lib/domain/player_controller.dart @@ -9,7 +9,7 @@ abstract class PlayerController { return _instance ??= _PlayerRepository(); } - void setSilentState(bool value); + void setSoundState(bool value); bool isSilent(); diff --git a/lib/infrastructure/player_repository.dart b/lib/infrastructure/player_repository.dart index 18dfd29..6e9e153 100644 --- a/lib/infrastructure/player_repository.dart +++ b/lib/infrastructure/player_repository.dart @@ -18,7 +18,7 @@ class _PlayerRepository extends PlayerController { } @override - void setSilentState(bool value) => _isSilent = value; + void setSoundState(bool value) => _isSilent = value; @override bool isSilent() => _isSilent; diff --git a/lib/presentation/organisms/timer_organism.dart b/lib/presentation/organisms/timer_organism.dart index f64e77f..25dc0b6 100644 --- a/lib/presentation/organisms/timer_organism.dart +++ b/lib/presentation/organisms/timer_organism.dart @@ -26,9 +26,9 @@ class _TimerOrganismState extends State @override void initState() { super.initState(); - lockScreen = _prefs.getBool("isSilent") ?? lockScreen; + lockScreen = _prefs.getBool("isLockScreen") ?? lockScreen; WakeLockController.instance.setWakeLock(lockScreen); - PlayerController.instance.setSilentState(!(_prefs.getBool("setSilentState") ?? true)); + PlayerController.instance.setSoundState(!(_prefs.getBool("isSound") ?? true)); if (lockScreen) { WakeLockController.instance.setWakeLock(true); @@ -126,8 +126,8 @@ class _TimerOrganismState extends State offIcon: Icons.music_off_rounded, onIcon: Icons.music_note_rounded, onChange: (bool value) { - PlayerController.instance.setSilentState(!value); - _prefs.setBool("setSilentState", value); + PlayerController.instance.setSoundState(!value); + _prefs.setBool("isSound", value); }, initialValue: !PlayerController.instance.isSilent(), ), @@ -138,7 +138,7 @@ class _TimerOrganismState extends State onIcon: Icons.lock_open, onChange: (bool value) { lockScreen = value; - _prefs.setBool("isSilent", lockScreen); + _prefs.setBool("isLockScreen", lockScreen); WakeLockController.instance.setWakeLock(lockScreen); }, initialValue: lockScreen, From 3c4eaba078854e6ffa64aa6a28b5afabae695814 Mon Sep 17 00:00:00 2001 From: Vijaykarthik T K <39937989+vijaykarthiktk@users.noreply.github.com> Date: Thu, 30 May 2024 14:14:03 +0530 Subject: [PATCH 5/9] feat: Implement User Settings Persistence (#91) --- lib/domain/player_controller.dart | 4 ++-- lib/infrastructure/player_repository.dart | 4 ++-- lib/presentation/organisms/timer_organism.dart | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/domain/player_controller.dart b/lib/domain/player_controller.dart index cf03df9..cf5b13a 100644 --- a/lib/domain/player_controller.dart +++ b/lib/domain/player_controller.dart @@ -9,9 +9,9 @@ abstract class PlayerController { return _instance ??= _PlayerRepository(); } - void setSoundState(bool value); + void setIsSound(bool value); - bool isSilent(); + bool isSound(); void initialize(); diff --git a/lib/infrastructure/player_repository.dart b/lib/infrastructure/player_repository.dart index 6e9e153..5f7e445 100644 --- a/lib/infrastructure/player_repository.dart +++ b/lib/infrastructure/player_repository.dart @@ -18,8 +18,8 @@ class _PlayerRepository extends PlayerController { } @override - void setSoundState(bool value) => _isSilent = value; + void setIsSound(bool value) => _isSilent = value; @override - bool isSilent() => _isSilent; + bool isSound() => _isSilent; } diff --git a/lib/presentation/organisms/timer_organism.dart b/lib/presentation/organisms/timer_organism.dart index 25dc0b6..9c287c3 100644 --- a/lib/presentation/organisms/timer_organism.dart +++ b/lib/presentation/organisms/timer_organism.dart @@ -28,7 +28,7 @@ class _TimerOrganismState extends State super.initState(); lockScreen = _prefs.getBool("isLockScreen") ?? lockScreen; WakeLockController.instance.setWakeLock(lockScreen); - PlayerController.instance.setSoundState(!(_prefs.getBool("isSound") ?? true)); + PlayerController.instance.setIsSound(!(_prefs.getBool("isSound") ?? true)); if (lockScreen) { WakeLockController.instance.setWakeLock(true); @@ -126,10 +126,10 @@ class _TimerOrganismState extends State offIcon: Icons.music_off_rounded, onIcon: Icons.music_note_rounded, onChange: (bool value) { - PlayerController.instance.setSoundState(!value); + PlayerController.instance.setIsSound(!value); _prefs.setBool("isSound", value); }, - initialValue: !PlayerController.instance.isSilent(), + initialValue: !PlayerController.instance.isSound(), ), const SeparatorAtom(), ToggleButtonMolecule( From 4c1e012875a33030feb11b02f1ae41b440383339 Mon Sep 17 00:00:00 2001 From: Vijaykarthik T K <39937989+vijaykarthiktk@users.noreply.github.com> Date: Thu, 30 May 2024 14:49:18 +0530 Subject: [PATCH 6/9] feat: Implement User Settings Persistence (#91) --- lib/presentation/organisms/timer_organism.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/presentation/organisms/timer_organism.dart b/lib/presentation/organisms/timer_organism.dart index 9c287c3..781327f 100644 --- a/lib/presentation/organisms/timer_organism.dart +++ b/lib/presentation/organisms/timer_organism.dart @@ -28,7 +28,7 @@ class _TimerOrganismState extends State super.initState(); lockScreen = _prefs.getBool("isLockScreen") ?? lockScreen; WakeLockController.instance.setWakeLock(lockScreen); - PlayerController.instance.setIsSound(!(_prefs.getBool("isSound") ?? true)); + PlayerController.instance.setIsSound(_prefs.getBool("isSound") ?? true); if (lockScreen) { WakeLockController.instance.setWakeLock(true); @@ -126,7 +126,7 @@ class _TimerOrganismState extends State offIcon: Icons.music_off_rounded, onIcon: Icons.music_note_rounded, onChange: (bool value) { - PlayerController.instance.setIsSound(!value); + PlayerController.instance.setIsSound(value); _prefs.setBool("isSound", value); }, initialValue: !PlayerController.instance.isSound(), From 4a426c5c89ad7e51fae7885ce2494bce0ec3e8d0 Mon Sep 17 00:00:00 2001 From: Vijaykarthik T K <39937989+vijaykarthiktk@users.noreply.github.com> Date: Thu, 30 May 2024 14:49:52 +0530 Subject: [PATCH 7/9] feat: Implement User Settings Persistence (#91) --- lib/presentation/organisms/timer_organism.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/presentation/organisms/timer_organism.dart b/lib/presentation/organisms/timer_organism.dart index 781327f..1e8314c 100644 --- a/lib/presentation/organisms/timer_organism.dart +++ b/lib/presentation/organisms/timer_organism.dart @@ -129,7 +129,7 @@ class _TimerOrganismState extends State PlayerController.instance.setIsSound(value); _prefs.setBool("isSound", value); }, - initialValue: !PlayerController.instance.isSound(), + initialValue: PlayerController.instance.isSound(), ), const SeparatorAtom(), ToggleButtonMolecule( From 7de267b69b970c7bf24e869a9ed6baa16e3985f3 Mon Sep 17 00:00:00 2001 From: Vijaykarthik T K <39937989+vijaykarthiktk@users.noreply.github.com> Date: Thu, 30 May 2024 14:51:19 +0530 Subject: [PATCH 8/9] feat: Implement User Settings Persistence (#91) --- lib/infrastructure/player_repository.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/infrastructure/player_repository.dart b/lib/infrastructure/player_repository.dart index 5f7e445..e065a8a 100644 --- a/lib/infrastructure/player_repository.dart +++ b/lib/infrastructure/player_repository.dart @@ -3,7 +3,7 @@ part of 'package:infinite_horizons/domain/player_controller.dart'; class _PlayerRepository extends PlayerController { late AudioPlayer player; - bool _isSilent = false; + bool _isSound = false; @override void initialize() { @@ -12,14 +12,14 @@ class _PlayerRepository extends PlayerController { @override Future play(String fileName) async { - if (!_isSilent) { + if (!_isSound) { player.play(AssetSource('sound_effects/$fileName')); } } @override - void setIsSound(bool value) => _isSilent = value; + void setIsSound(bool value) => _isSound = value; @override - bool isSound() => _isSilent; + bool isSound() => _isSound; } From 1e9b33d0b84f04dbfbe707ac7c6cc7f205f91e8d Mon Sep 17 00:00:00 2001 From: Vijaykarthik T K <39937989+vijaykarthiktk@users.noreply.github.com> Date: Thu, 30 May 2024 18:28:35 +0530 Subject: [PATCH 9/9] feat: Implement User Settings Persistence (#91) --- lib/infrastructure/player_repository.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/infrastructure/player_repository.dart b/lib/infrastructure/player_repository.dart index e065a8a..f9b7f56 100644 --- a/lib/infrastructure/player_repository.dart +++ b/lib/infrastructure/player_repository.dart @@ -3,7 +3,7 @@ part of 'package:infinite_horizons/domain/player_controller.dart'; class _PlayerRepository extends PlayerController { late AudioPlayer player; - bool _isSound = false; + bool _isSound = true; @override void initialize() { @@ -12,7 +12,7 @@ class _PlayerRepository extends PlayerController { @override Future play(String fileName) async { - if (!_isSound) { + if (_isSound) { player.play(AssetSource('sound_effects/$fileName')); } }