Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions mobile/lib/controllers/app_ctrl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ class AppCtrl extends ChangeNotifier {
await _session.start();
if (_session.connectionState == sdk.ConnectionState.connected) {
appScreenState = AppScreenState.agent;
WakelockPlus.enable();
unawaited(WakelockPlus.enable());
notifyListeners();
}
} catch (error, stackTrace) {
Expand All @@ -219,7 +219,7 @@ class AppCtrl extends ChangeNotifier {
await _session.start();
if (_session.connectionState == sdk.ConnectionState.connected) {
appScreenState = AppScreenState.agent;
WakelockPlus.enable();
unawaited(WakelockPlus.enable());
notifyListeners();
return;
}
Expand All @@ -243,7 +243,7 @@ class AppCtrl extends ChangeNotifier {
Future<void> disconnect() async {
await session.end();
session.restoreMessageHistory(const []);
WakelockPlus.disable();
unawaited(WakelockPlus.disable());
appScreenState = AppScreenState.welcome;
agentScreenState = AgentScreenState.visualizer;
notifyListeners();
Expand Down
2 changes: 1 addition & 1 deletion mobile/lib/controllers/audio_filter_ctrl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ class AudioFilterCtrl extends ChangeNotifier {

@override
void dispose() {
_listener?.dispose();
unawaited(_listener?.dispose());
_listener = null;
super.dispose();
}
Expand Down
3 changes: 2 additions & 1 deletion mobile/lib/controllers/connection_error_ctrl.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:convert';

import 'package:flutter/foundation.dart';
Expand Down Expand Up @@ -46,7 +47,7 @@ class ConnectionErrorCtrl extends ChangeNotifier {

@override
void dispose() {
_listener.dispose();
unawaited(_listener.dispose());
super.dispose();
}
}
3 changes: 2 additions & 1 deletion mobile/lib/controllers/tool_status_ctrl.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:convert';

import 'package:flutter/foundation.dart';
Expand Down Expand Up @@ -68,7 +69,7 @@ class ToolStatusCtrl extends ChangeNotifier {

@override
void dispose() {
_listener.dispose();
unawaited(_listener.dispose());
super.dispose();
}
}
9 changes: 5 additions & 4 deletions mobile/lib/controllers/wake_word_state_ctrl.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:convert';

import 'package:flutter/foundation.dart';
Expand Down Expand Up @@ -46,13 +47,13 @@ class WakeWordStateCtrl extends ChangeNotifier {
// If room is already connected, fetch immediately
if (room.connectionState == sdk.ConnectionState.connected) {
debugPrint('[WakeWordStateCtrl] Room already connected, fetching state');
_fetchInitialState();
unawaited(_fetchInitialState());
}
}

void _handleRoomConnected(sdk.RoomConnectedEvent event) {
debugPrint('[WakeWordStateCtrl] Room connected, fetching initial state');
_fetchInitialState();
unawaited(_fetchInitialState());
}

Future<void> _fetchInitialState({int retryCount = 0}) async {
Expand Down Expand Up @@ -99,7 +100,7 @@ class WakeWordStateCtrl extends ChangeNotifier {
final delay = Duration(milliseconds: 500 * (retryCount + 1));
debugPrint('[WakeWordStateCtrl] Retrying in ${delay.inMilliseconds}ms...');
await Future.delayed(delay);
_fetchInitialState(retryCount: retryCount + 1);
unawaited(_fetchInitialState(retryCount: retryCount + 1));
}
}
}
Expand Down Expand Up @@ -134,7 +135,7 @@ class WakeWordStateCtrl extends ChangeNotifier {

@override
void dispose() {
_listener.dispose();
unawaited(_listener.dispose());
super.dispose();
}
}
44 changes: 43 additions & 1 deletion mobile/lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -254,5 +254,47 @@
"@messageHint": { "description": "Text input placeholder" },

"toolParameters": "Tool Parameters",
"@toolParameters": { "description": "Tool details sheet title" }
"@toolParameters": { "description": "Tool details sheet title" },

"sttProvider": "STT Provider",
"@sttProvider": { "description": "STT provider label" },

"openaiCompatible": "OpenAI Compat.",
"@openaiCompatible": { "description": "OpenAI-compatible provider label" },

"openaiCompatibleDesc": "Any OpenAI API",
"@openaiCompatibleDesc": { "description": "OpenAI-compatible subtitle" },

"openrouterDesc": "200+ models",
"@openrouterDesc": { "description": "OpenRouter subtitle" },

"baseUrl": "Base URL",
"@baseUrl": { "description": "Base URL field label" },

"optional": "optional",
"@optional": { "description": "Optional hint for fields" },

"openaiApiKeyNote": "Only needed if the server requires authentication",
"@openaiApiKeyNote": { "description": "OpenAI API key note" },

"searchModels": "Search models...",
"@searchModels": { "description": "Model search placeholder" },

"noModelsFound": "No models found",
"@noModelsFound": { "description": "Empty model search result" },

"testConnectionToSee": "Test connection to see available models",
"@testConnectionToSee": { "description": "Hint to test before model selection" },

"speachesLocalStt": "Local Whisper",
"@speachesLocalStt": { "description": "Speaches STT subtitle" },

"groqWhisperCloud": "Cloud Whisper",
"@groqWhisperCloud": { "description": "Groq Whisper STT subtitle" },

"sttGroqKeyShared": "Uses the same API key as LLM",
"@sttGroqKeyShared": { "description": "STT Groq key shared info" },

"sttGroqKeyNeeded": "Groq API key required for STT",
"@sttGroqKeyNeeded": { "description": "STT Groq key needed info" }
}
17 changes: 16 additions & 1 deletion mobile/lib/l10n/app_fr.arb
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,20 @@
"failedToSaveAgent": "Échec de l'enregistrement des paramètres de l'agent : {code}",
"downloadingVoice": "Téléchargement du modèle vocal...",
"messageHint": "Message...",
"toolParameters": "Paramètres de l'outil"
"toolParameters": "Paramètres de l'outil",

"sttProvider": "Fournisseur STT",
"openaiCompatible": "OpenAI Compat.",
"openaiCompatibleDesc": "Toute API OpenAI",
"openrouterDesc": "200+ modèles",
"baseUrl": "URL de base",
"optional": "optionnel",
"openaiApiKeyNote": "Nécessaire uniquement si le serveur requiert une authentification",
"searchModels": "Rechercher des modèles...",
"noModelsFound": "Aucun modèle trouvé",
"testConnectionToSee": "Testez la connexion pour voir les modèles disponibles",
"speachesLocalStt": "Whisper local",
"groqWhisperCloud": "Whisper cloud",
"sttGroqKeyShared": "Utilise la même clé API que le LLM",
"sttGroqKeyNeeded": "Clé API Groq requise pour le STT"
}
17 changes: 16 additions & 1 deletion mobile/lib/l10n/app_it.arb
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,20 @@
"failedToSaveAgent": "Salvataggio delle impostazioni dell'agente fallito: {code}",
"downloadingVoice": "Download del modello vocale...",
"messageHint": "Messaggio...",
"toolParameters": "Parametri dello strumento"
"toolParameters": "Parametri dello strumento",

"sttProvider": "Fornitore STT",
"openaiCompatible": "OpenAI Compat.",
"openaiCompatibleDesc": "Qualsiasi API OpenAI",
"openrouterDesc": "200+ modelli",
"baseUrl": "URL di base",
"optional": "opzionale",
"openaiApiKeyNote": "Necessaria solo se il server richiede l'autenticazione",
"searchModels": "Cerca modelli...",
"noModelsFound": "Nessun modello trovato",
"testConnectionToSee": "Testa la connessione per vedere i modelli disponibili",
"speachesLocalStt": "Whisper locale",
"groqWhisperCloud": "Whisper cloud",
"sttGroqKeyShared": "Usa la stessa chiave API del LLM",
"sttGroqKeyNeeded": "Chiave API Groq richiesta per STT"
}
84 changes: 84 additions & 0 deletions mobile/lib/l10n/app_localizations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,90 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'Tool Parameters'**
String get toolParameters;

/// STT provider label
///
/// In en, this message translates to:
/// **'STT Provider'**
String get sttProvider;

/// OpenAI-compatible provider label
///
/// In en, this message translates to:
/// **'OpenAI Compat.'**
String get openaiCompatible;

/// OpenAI-compatible subtitle
///
/// In en, this message translates to:
/// **'Any OpenAI API'**
String get openaiCompatibleDesc;

/// OpenRouter subtitle
///
/// In en, this message translates to:
/// **'200+ models'**
String get openrouterDesc;

/// Base URL field label
///
/// In en, this message translates to:
/// **'Base URL'**
String get baseUrl;

/// Optional hint for fields
///
/// In en, this message translates to:
/// **'optional'**
String get optional;

/// OpenAI API key note
///
/// In en, this message translates to:
/// **'Only needed if the server requires authentication'**
String get openaiApiKeyNote;

/// Model search placeholder
///
/// In en, this message translates to:
/// **'Search models...'**
String get searchModels;

/// Empty model search result
///
/// In en, this message translates to:
/// **'No models found'**
String get noModelsFound;

/// Hint to test before model selection
///
/// In en, this message translates to:
/// **'Test connection to see available models'**
String get testConnectionToSee;

/// Speaches STT subtitle
///
/// In en, this message translates to:
/// **'Local Whisper'**
String get speachesLocalStt;

/// Groq Whisper STT subtitle
///
/// In en, this message translates to:
/// **'Cloud Whisper'**
String get groqWhisperCloud;

/// STT Groq key shared info
///
/// In en, this message translates to:
/// **'Uses the same API key as LLM'**
String get sttGroqKeyShared;

/// STT Groq key needed info
///
/// In en, this message translates to:
/// **'Groq API key required for STT'**
String get sttGroqKeyNeeded;
}

class _AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
Expand Down
42 changes: 42 additions & 0 deletions mobile/lib/l10n/app_localizations_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -274,4 +274,46 @@ class AppLocalizationsEn extends AppLocalizations {

@override
String get toolParameters => 'Tool Parameters';

@override
String get sttProvider => 'STT Provider';

@override
String get openaiCompatible => 'OpenAI Compat.';

@override
String get openaiCompatibleDesc => 'Any OpenAI API';

@override
String get openrouterDesc => '200+ models';

@override
String get baseUrl => 'Base URL';

@override
String get optional => 'optional';

@override
String get openaiApiKeyNote => 'Only needed if the server requires authentication';

@override
String get searchModels => 'Search models...';

@override
String get noModelsFound => 'No models found';

@override
String get testConnectionToSee => 'Test connection to see available models';

@override
String get speachesLocalStt => 'Local Whisper';

@override
String get groqWhisperCloud => 'Cloud Whisper';

@override
String get sttGroqKeyShared => 'Uses the same API key as LLM';

@override
String get sttGroqKeyNeeded => 'Groq API key required for STT';
}
42 changes: 42 additions & 0 deletions mobile/lib/l10n/app_localizations_fr.dart
Original file line number Diff line number Diff line change
Expand Up @@ -276,4 +276,46 @@ class AppLocalizationsFr extends AppLocalizations {

@override
String get toolParameters => 'Paramètres de l\'outil';

@override
String get sttProvider => 'Fournisseur STT';

@override
String get openaiCompatible => 'OpenAI Compat.';

@override
String get openaiCompatibleDesc => 'Toute API OpenAI';

@override
String get openrouterDesc => '200+ modèles';

@override
String get baseUrl => 'URL de base';

@override
String get optional => 'optionnel';

@override
String get openaiApiKeyNote => 'Nécessaire uniquement si le serveur requiert une authentification';

@override
String get searchModels => 'Rechercher des modèles...';

@override
String get noModelsFound => 'Aucun modèle trouvé';

@override
String get testConnectionToSee => 'Testez la connexion pour voir les modèles disponibles';

@override
String get speachesLocalStt => 'Whisper local';

@override
String get groqWhisperCloud => 'Whisper cloud';

@override
String get sttGroqKeyShared => 'Utilise la même clé API que le LLM';

@override
String get sttGroqKeyNeeded => 'Clé API Groq requise pour le STT';
}
Loading