Make Voice Assistant Toggle Conditional 41/30441/6
authorAnuj Solanki <anuj603362@gmail.com>
Thu, 17 Oct 2024 16:42:56 +0000 (22:12 +0530)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tue, 22 Oct 2024 11:49:11 +0000 (11:49 +0000)
 - Removed the Voice Assistant toggle button from the settings page
   when agl-offline-voice-agent feature is not enabled.

Bug-AGL: SPEC-5265

Change-Id: I65aa011cffe90663106a0d8e4fab021972f51e87
Signed-off-by: Anuj Solanki <anuj603362@gmail.com>
lib/core/constants/constants.dart
lib/data/data_providers/app_config_provider.dart
lib/data/data_providers/voice_agent_client.dart
lib/presentation/screens/settings/widgets/settings_content.dart

index edee874..7bb8e75 100644 (file)
@@ -9,6 +9,7 @@ final GlobalKey<ScaffoldState> homeScaffoldKey = GlobalKey();
 const debugDisplay = bool.fromEnvironment('DEBUG_DISPLAY');
 const disableBkgAnimationDefault = bool.fromEnvironment('DISABLE_BKG_ANIMATION');
 const randomHybridAnimationDefault = bool.fromEnvironment('RANDOM_HYBRID_ANIMATION');
+const enableVoiceAssistantDefault = bool.fromEnvironment('ENABLE_VOICE_ASSISTANT');
 
 
 
index 9e187a9..4052164 100644 (file)
@@ -112,6 +112,7 @@ class AppConfig {
   final StorageConfig storageConfig;
   final MpdConfig mpdConfig;
   final VoiceAgentConfig voiceAgentConfig;
+  final bool enableVoiceAssistant;
 
   static String configFilePath = '/etc/xdg/AGL/ics-homescreen.yaml';
 
@@ -123,7 +124,8 @@ class AppConfig {
       required this.radioConfig,
       required this.storageConfig,
       required this.mpdConfig,
-      required this.voiceAgentConfig});
+      required this.voiceAgentConfig,
+      required this.enableVoiceAssistant});
 
   static KuksaConfig parseKuksaConfig(YamlMap kuksaMap) {
     try {
@@ -324,6 +326,14 @@ final appConfigProvider = Provider((ref) {
       voiceAgentConfig = VoiceAgentConfig.defaultConfig();
     }
 
+    bool enableVoiceAssistant = enableVoiceAssistantDefault;
+    if (yamlMap.containsKey('enable-voice-assistant')) {
+      var value = yamlMap['enable-voice-assistant'];
+      if (value is bool) {
+        enableVoiceAssistant = value;
+      }
+    }
+
     bool disableBkgAnimation = disableBkgAnimationDefault;
     if (yamlMap.containsKey('disable-bg-animation')) {
       var value = yamlMap['disable-bg-animation'];
@@ -356,7 +366,8 @@ final appConfigProvider = Provider((ref) {
         radioConfig: radioConfig,
         storageConfig: storageConfig,
         mpdConfig: mpdConfig,
-        voiceAgentConfig: voiceAgentConfig);
+        voiceAgentConfig: voiceAgentConfig,
+        enableVoiceAssistant: enableVoiceAssistant);
   } catch (_) {
     return AppConfig(
         disableBkgAnimation: false,
@@ -366,6 +377,7 @@ final appConfigProvider = Provider((ref) {
         radioConfig: RadioConfig.defaultConfig(),
         storageConfig: StorageConfig.defaultConfig(),
         mpdConfig: MpdConfig.defaultConfig(),
-        voiceAgentConfig: VoiceAgentConfig.defaultConfig());
+        voiceAgentConfig: VoiceAgentConfig.defaultConfig(),
+        enableVoiceAssistant: false);
   }
 });
index 295e138..903a5d0 100644 (file)
@@ -13,6 +13,7 @@ class VoiceAgentClient {
 
   VoiceAgentClient({required this.config,required this.ref}) {
     // Initialize the client channel without connecting immediately
+    debugPrint("Connecting to Voice Assistant at ${config.hostname}:${config.port}");
     String host = config.hostname;
     int port = config.port;
     _channel = ClientChannel(
@@ -22,7 +23,6 @@ class VoiceAgentClient {
         credentials: ChannelCredentials.insecure(),
       ),
     );
-    debugPrint("Connecting to Voice Assistant");
     _client = VoiceAgentServiceClient(_channel);
 
   }
index 458677c..b43c07b 100644 (file)
@@ -56,6 +56,7 @@ class Settings extends ConsumerWidget {
                   voidCallback: () {
                     ref.read(appProvider.notifier).update(AppState.audioSettings);
                   }),
+              if(ref.watch(appConfigProvider).enableVoiceAssistant)
               VoiceAssistantSettingsTile(
                   icon: Icons.keyboard_voice_outlined,
                   title: "Voice Assistant",