refactor: remove omitProviderInModelName functionality and related localization
- Removed the omitProviderInModelName key from PreferenceKeys and its associated logic throughout the codebase. - Updated SettingsService and AppSettings to eliminate references to the omitted provider functionality. - Cleaned up related localization strings in multiple languages to reflect the removal of this feature. - Enhanced code clarity and maintainability by streamlining settings management.
This commit is contained in:
@@ -8,7 +8,6 @@ final class PreferenceKeys {
|
||||
static const String largeText = 'large_text';
|
||||
static const String darkMode = 'dark_mode';
|
||||
static const String defaultModel = 'default_model';
|
||||
static const String omitProviderInModelName = 'omit_provider_in_model_name';
|
||||
static const String voiceLocaleId = 'voice_locale_id';
|
||||
static const String voiceHoldToTalk = 'voice_hold_to_talk';
|
||||
static const String voiceAutoSendFinal = 'voice_auto_send_final';
|
||||
|
||||
@@ -79,7 +79,6 @@ class PersistenceMigrator {
|
||||
copyBool(PreferenceKeys.largeText);
|
||||
copyBool(PreferenceKeys.darkMode);
|
||||
copyString(PreferenceKeys.defaultModel);
|
||||
copyBool(PreferenceKeys.omitProviderInModelName);
|
||||
copyString(PreferenceKeys.voiceLocaleId);
|
||||
copyBool(PreferenceKeys.voiceHoldToTalk);
|
||||
copyBool(PreferenceKeys.voiceAutoSendFinal);
|
||||
@@ -185,7 +184,6 @@ class PersistenceMigrator {
|
||||
PreferenceKeys.largeText,
|
||||
PreferenceKeys.darkMode,
|
||||
PreferenceKeys.defaultModel,
|
||||
PreferenceKeys.omitProviderInModelName,
|
||||
PreferenceKeys.voiceLocaleId,
|
||||
PreferenceKeys.voiceHoldToTalk,
|
||||
PreferenceKeys.voiceAutoSendFinal,
|
||||
|
||||
@@ -17,9 +17,6 @@ class SettingsService {
|
||||
static const String _largeTextKey = PreferenceKeys.largeText;
|
||||
static const String _darkModeKey = PreferenceKeys.darkMode;
|
||||
static const String _defaultModelKey = PreferenceKeys.defaultModel;
|
||||
// Model name formatting
|
||||
static const String _omitProviderInModelNameKey =
|
||||
PreferenceKeys.omitProviderInModelName;
|
||||
// Voice input settings
|
||||
static const String _voiceLocaleKey = PreferenceKeys.voiceLocaleId;
|
||||
static const String _voiceHoldToTalkKey = PreferenceKeys.voiceHoldToTalk;
|
||||
@@ -117,16 +114,6 @@ class SettingsService {
|
||||
return box.delete(_defaultModelKey);
|
||||
}
|
||||
|
||||
/// Whether to omit the provider prefix when displaying model names
|
||||
static Future<bool> getOmitProviderInModelName() {
|
||||
final value = _preferencesBox().get(_omitProviderInModelNameKey) as bool?;
|
||||
return Future.value(value ?? true);
|
||||
}
|
||||
|
||||
static Future<void> setOmitProviderInModelName(bool value) {
|
||||
return _preferencesBox().put(_omitProviderInModelNameKey, value);
|
||||
}
|
||||
|
||||
/// Load all settings
|
||||
static Future<AppSettings> loadSettings() {
|
||||
final box = _preferencesBox();
|
||||
@@ -140,8 +127,6 @@ class SettingsService {
|
||||
largeText: (box.get(_largeTextKey) as bool?) ?? false,
|
||||
darkMode: (box.get(_darkModeKey) as bool?) ?? true,
|
||||
defaultModel: box.get(_defaultModelKey) as String?,
|
||||
omitProviderInModelName:
|
||||
(box.get(_omitProviderInModelNameKey) as bool?) ?? true,
|
||||
voiceLocaleId: box.get(_voiceLocaleKey) as String?,
|
||||
voiceHoldToTalk: (box.get(_voiceHoldToTalkKey) as bool?) ?? false,
|
||||
voiceAutoSendFinal: (box.get(_voiceAutoSendKey) as bool?) ?? false,
|
||||
@@ -165,7 +150,6 @@ class SettingsService {
|
||||
_highContrastKey: settings.highContrast,
|
||||
_largeTextKey: settings.largeText,
|
||||
_darkModeKey: settings.darkMode,
|
||||
_omitProviderInModelNameKey: settings.omitProviderInModelName,
|
||||
_voiceHoldToTalkKey: settings.voiceHoldToTalk,
|
||||
_voiceAutoSendKey: settings.voiceAutoSendFinal,
|
||||
_socketTransportModeKey: settings.socketTransportMode,
|
||||
@@ -305,7 +289,6 @@ class AppSettings {
|
||||
final bool largeText;
|
||||
final bool darkMode;
|
||||
final String? defaultModel;
|
||||
final bool omitProviderInModelName;
|
||||
final String? voiceLocaleId;
|
||||
final bool voiceHoldToTalk;
|
||||
final bool voiceAutoSendFinal;
|
||||
@@ -320,7 +303,6 @@ class AppSettings {
|
||||
this.largeText = false,
|
||||
this.darkMode = true,
|
||||
this.defaultModel,
|
||||
this.omitProviderInModelName = true,
|
||||
this.voiceLocaleId,
|
||||
this.voiceHoldToTalk = false,
|
||||
this.voiceAutoSendFinal = false,
|
||||
@@ -337,7 +319,6 @@ class AppSettings {
|
||||
bool? largeText,
|
||||
bool? darkMode,
|
||||
Object? defaultModel = const _DefaultValue(),
|
||||
bool? omitProviderInModelName,
|
||||
Object? voiceLocaleId = const _DefaultValue(),
|
||||
bool? voiceHoldToTalk,
|
||||
bool? voiceAutoSendFinal,
|
||||
@@ -355,8 +336,6 @@ class AppSettings {
|
||||
defaultModel: defaultModel is _DefaultValue
|
||||
? this.defaultModel
|
||||
: defaultModel as String?,
|
||||
omitProviderInModelName:
|
||||
omitProviderInModelName ?? this.omitProviderInModelName,
|
||||
voiceLocaleId: voiceLocaleId is _DefaultValue
|
||||
? this.voiceLocaleId
|
||||
: voiceLocaleId as String?,
|
||||
@@ -379,7 +358,6 @@ class AppSettings {
|
||||
other.largeText == largeText &&
|
||||
other.darkMode == darkMode &&
|
||||
other.defaultModel == defaultModel &&
|
||||
other.omitProviderInModelName == omitProviderInModelName &&
|
||||
other.voiceLocaleId == voiceLocaleId &&
|
||||
other.voiceHoldToTalk == voiceHoldToTalk &&
|
||||
other.voiceAutoSendFinal == voiceAutoSendFinal &&
|
||||
@@ -398,7 +376,6 @@ class AppSettings {
|
||||
largeText,
|
||||
darkMode,
|
||||
defaultModel,
|
||||
omitProviderInModelName,
|
||||
voiceLocaleId,
|
||||
voiceHoldToTalk,
|
||||
voiceAutoSendFinal,
|
||||
@@ -475,11 +452,6 @@ class AppSettingsNotifier extends _$AppSettingsNotifier {
|
||||
await SettingsService.setDefaultModel(modelId);
|
||||
}
|
||||
|
||||
Future<void> setOmitProviderInModelName(bool value) async {
|
||||
state = state.copyWith(omitProviderInModelName: value);
|
||||
await SettingsService.setOmitProviderInModelName(value);
|
||||
}
|
||||
|
||||
Future<void> setVoiceLocaleId(String? localeId) async {
|
||||
state = state.copyWith(voiceLocaleId: localeId);
|
||||
await SettingsService.setVoiceLocaleId(localeId);
|
||||
|
||||
@@ -72,20 +72,8 @@ class _ChatPageState extends ConsumerState<ChatPage> {
|
||||
String? _cachedGreetingName;
|
||||
bool _greetingReady = false;
|
||||
|
||||
String _formatModelDisplayName(String name, {required bool omitProvider}) {
|
||||
var display = name.trim();
|
||||
if (omitProvider) {
|
||||
// Prefer the segment after the last '/'
|
||||
if (display.contains('/')) {
|
||||
display = display.split('/').last.trim();
|
||||
}
|
||||
// If an org prefix like 'OpenAI: gpt-4o' exists, use the part after ':'
|
||||
if (display.contains(':')) {
|
||||
final parts = display.split(':');
|
||||
display = parts.last.trim();
|
||||
}
|
||||
}
|
||||
return display;
|
||||
String _formatModelDisplayName(String name) {
|
||||
return name.trim();
|
||||
}
|
||||
|
||||
bool validateFileCount(int currentCount, int newCount, int maxCount) {
|
||||
@@ -830,9 +818,6 @@ class _ChatPageState extends ConsumerState<ChatPage> {
|
||||
Model? matchedModel;
|
||||
final rawModel = message.model;
|
||||
if (rawModel != null && rawModel.isNotEmpty) {
|
||||
final omitProvider = ref
|
||||
.watch(appSettingsProvider)
|
||||
.omitProviderInModelName;
|
||||
final modelsAsync = ref.watch(modelsProvider);
|
||||
if (modelsAsync.hasValue) {
|
||||
final models = modelsAsync.value!;
|
||||
@@ -842,23 +827,14 @@ class _ChatPageState extends ConsumerState<ChatPage> {
|
||||
(m) => m.id == rawModel || m.name == rawModel,
|
||||
);
|
||||
matchedModel = match;
|
||||
displayModelName = _formatModelDisplayName(
|
||||
match.name,
|
||||
omitProvider: omitProvider,
|
||||
);
|
||||
displayModelName = _formatModelDisplayName(match.name);
|
||||
} catch (_) {
|
||||
// As a fallback, format the raw value to be more readable
|
||||
displayModelName = _formatModelDisplayName(
|
||||
rawModel,
|
||||
omitProvider: omitProvider,
|
||||
);
|
||||
displayModelName = _formatModelDisplayName(rawModel);
|
||||
}
|
||||
} else {
|
||||
// Models not loaded yet; format raw value for readability
|
||||
displayModelName = _formatModelDisplayName(
|
||||
rawModel,
|
||||
omitProvider: omitProvider,
|
||||
);
|
||||
displayModelName = _formatModelDisplayName(rawModel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1062,11 +1038,6 @@ class _ChatPageState extends ConsumerState<ChatPage> {
|
||||
// Watch reviewer mode and auto-select model if needed
|
||||
final isReviewerMode = ref.watch(reviewerModeProvider);
|
||||
|
||||
final omitProviderInModelName = ref.watch(
|
||||
appSettingsProvider.select(
|
||||
(settings) => settings.omitProviderInModelName,
|
||||
),
|
||||
);
|
||||
final conversationId = ref.watch(
|
||||
activeConversationProvider.select((conv) => conv?.id),
|
||||
);
|
||||
@@ -1091,10 +1062,7 @@ class _ChatPageState extends ConsumerState<ChatPage> {
|
||||
? trimmedConversationTitle
|
||||
: null;
|
||||
final formattedModelName = selectedModel != null
|
||||
? _formatModelDisplayName(
|
||||
selectedModel.name,
|
||||
omitProvider: omitProviderInModelName,
|
||||
)
|
||||
? _formatModelDisplayName(selectedModel.name)
|
||||
: null;
|
||||
final modelLabel = formattedModelName ?? l10n.chooseModel;
|
||||
final hasConversationTitle = displayConversationTitle != null;
|
||||
|
||||
@@ -157,28 +157,6 @@ class AppCustomizationPage extends ConsumerWidget {
|
||||
}
|
||||
},
|
||||
),
|
||||
const SizedBox(height: Spacing.md),
|
||||
_CustomizationTile(
|
||||
leading: _buildIconBadge(
|
||||
context,
|
||||
Platform.isIOS ? CupertinoIcons.textformat : Icons.text_fields,
|
||||
color: theme.buttonPrimary,
|
||||
),
|
||||
title: AppLocalizations.of(context)!.hideProviderInModelNames,
|
||||
subtitle: AppLocalizations.of(
|
||||
context,
|
||||
)!.hideProviderInModelNamesDescription,
|
||||
trailing: Switch.adaptive(
|
||||
value: settings.omitProviderInModelName,
|
||||
onChanged: (v) => ref
|
||||
.read(appSettingsProvider.notifier)
|
||||
.setOmitProviderInModelName(v),
|
||||
),
|
||||
showChevron: false,
|
||||
onTap: () => ref
|
||||
.read(appSettingsProvider.notifier)
|
||||
.setOmitProviderInModelName(!settings.omitProviderInModelName),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -291,8 +291,6 @@
|
||||
"quickActionsDescription": "Wähle bis zu zwei Schnellzugriffe, die neben dem Eingabefeld angepinnt werden",
|
||||
"display": "Anzeige",
|
||||
"realtime": "Echtzeit",
|
||||
"hideProviderInModelNames": "Anbieter in Modellnamen ausblenden",
|
||||
"hideProviderInModelNamesDescription": "Zeige Namen wie \"gpt-4o\" statt \"openai/gpt-4o\".",
|
||||
"transportMode": "Transportmodus",
|
||||
"transportModeDescription": "Wähle, wie die App für Echtzeit-Updates verbindet.",
|
||||
"mode": "Modus",
|
||||
|
||||
@@ -584,10 +584,6 @@
|
||||
"@display": {"description": "Section header for visual and layout related settings."},
|
||||
"realtime": "Realtime",
|
||||
"@realtime": {"description": "Section header for realtime/transport settings."},
|
||||
"hideProviderInModelNames": "Hide provider in model names",
|
||||
"@hideProviderInModelNames": {"description": "Toggle label to hide the provider prefix in model names (e.g., show gpt-4o instead of openai/gpt-4o)."},
|
||||
"hideProviderInModelNamesDescription": "Show names like \"gpt-4o\" instead of \"openai/gpt-4o\".",
|
||||
"@hideProviderInModelNamesDescription": {"description": "Helper text for provider hiding toggle."},
|
||||
"transportMode": "Transport mode",
|
||||
"@transportMode": {"description": "Title for selecting the networking transport used for realtime."},
|
||||
"transportModeDescription": "Choose how the app connects for realtime updates.",
|
||||
|
||||
@@ -291,8 +291,6 @@
|
||||
"quickActionsDescription": "Choisissez jusqu'à deux raccourcis à épingler près du champ de saisie",
|
||||
"display": "Affichage",
|
||||
"realtime": "Temps réel",
|
||||
"hideProviderInModelNames": "Masquer le fournisseur dans les noms de modèles",
|
||||
"hideProviderInModelNamesDescription": "Afficher des noms comme \"gpt-4o\" au lieu de \"openai/gpt-4o\".",
|
||||
"transportMode": "Mode de transport",
|
||||
"transportModeDescription": "Choisissez comment l'app se connecte pour les mises à jour en temps réel.",
|
||||
"mode": "Mode",
|
||||
|
||||
@@ -291,8 +291,6 @@
|
||||
"quickActionsDescription": "Scegli fino a due scorciatoie da fissare vicino al campo di input",
|
||||
"display": "Schermo",
|
||||
"realtime": "Tempo reale",
|
||||
"hideProviderInModelNames": "Nascondi provider nei nomi dei modelli",
|
||||
"hideProviderInModelNamesDescription": "Mostra nomi come \"gpt-4o\" invece di \"openai/gpt-4o\".",
|
||||
"transportMode": "Modalità di trasporto",
|
||||
"transportModeDescription": "Scegli come l'app si connette per gli aggiornamenti in tempo reale.",
|
||||
"mode": "Modalità",
|
||||
|
||||
@@ -1596,18 +1596,6 @@ abstract class AppLocalizations {
|
||||
/// **'Realtime'**
|
||||
String get realtime;
|
||||
|
||||
/// Toggle label to hide the provider prefix in model names (e.g., show gpt-4o instead of openai/gpt-4o).
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Hide provider in model names'**
|
||||
String get hideProviderInModelNames;
|
||||
|
||||
/// Helper text for provider hiding toggle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Show names like \"gpt-4o\" instead of \"openai/gpt-4o\".'**
|
||||
String get hideProviderInModelNamesDescription;
|
||||
|
||||
/// Title for selecting the networking transport used for realtime.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
||||
@@ -835,13 +835,6 @@ class AppLocalizationsDe extends AppLocalizations {
|
||||
@override
|
||||
String get realtime => 'Echtzeit';
|
||||
|
||||
@override
|
||||
String get hideProviderInModelNames => 'Anbieter in Modellnamen ausblenden';
|
||||
|
||||
@override
|
||||
String get hideProviderInModelNamesDescription =>
|
||||
'Zeige Namen wie \"gpt-4o\" statt \"openai/gpt-4o\".';
|
||||
|
||||
@override
|
||||
String get transportMode => 'Transportmodus';
|
||||
|
||||
|
||||
@@ -828,13 +828,6 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
@override
|
||||
String get realtime => 'Realtime';
|
||||
|
||||
@override
|
||||
String get hideProviderInModelNames => 'Hide provider in model names';
|
||||
|
||||
@override
|
||||
String get hideProviderInModelNamesDescription =>
|
||||
'Show names like \"gpt-4o\" instead of \"openai/gpt-4o\".';
|
||||
|
||||
@override
|
||||
String get transportMode => 'Transport mode';
|
||||
|
||||
|
||||
@@ -843,14 +843,6 @@ class AppLocalizationsFr extends AppLocalizations {
|
||||
@override
|
||||
String get realtime => 'Temps réel';
|
||||
|
||||
@override
|
||||
String get hideProviderInModelNames =>
|
||||
'Masquer le fournisseur dans les noms de modèles';
|
||||
|
||||
@override
|
||||
String get hideProviderInModelNamesDescription =>
|
||||
'Afficher des noms comme \"gpt-4o\" au lieu de \"openai/gpt-4o\".';
|
||||
|
||||
@override
|
||||
String get transportMode => 'Mode de transport';
|
||||
|
||||
|
||||
@@ -832,14 +832,6 @@ class AppLocalizationsIt extends AppLocalizations {
|
||||
@override
|
||||
String get realtime => 'Tempo reale';
|
||||
|
||||
@override
|
||||
String get hideProviderInModelNames =>
|
||||
'Nascondi provider nei nomi dei modelli';
|
||||
|
||||
@override
|
||||
String get hideProviderInModelNamesDescription =>
|
||||
'Mostra nomi come \"gpt-4o\" invece di \"openai/gpt-4o\".';
|
||||
|
||||
@override
|
||||
String get transportMode => 'Modalità di trasporto';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user