diff --git a/lib/features/chat/providers/chat_providers.dart b/lib/features/chat/providers/chat_providers.dart index 40028f8..fcac8f4 100644 --- a/lib/features/chat/providers/chat_providers.dart +++ b/lib/features/chat/providers/chat_providers.dart @@ -543,6 +543,27 @@ Future _preseedAssistantAndPersist( return assistantMessageId; } +String? _extractSystemPromptFromSettings(Map? settings) { + if (settings == null) return null; + + final rootValue = settings['system']; + if (rootValue is String) { + final trimmed = rootValue.trim(); + if (trimmed.isNotEmpty) return trimmed; + } + + final ui = settings['ui']; + if (ui is Map) { + final uiValue = ui['system']; + if (uiValue is String) { + final trimmed = uiValue.trim(); + if (trimmed.isNotEmpty) return trimmed; + } + } + + return null; +} + // Start a new chat (unified function for both "New Chat" button and home screen) void startNewChat(dynamic ref) { // Clear active conversation @@ -763,13 +784,7 @@ Future regenerateMessage( String? userSystemPrompt; try { userSettingsData = await api!.getUserSettings(); - final systemValue = userSettingsData?['system']; - if (systemValue is String) { - final trimmed = systemValue.trim(); - if (trimmed.isNotEmpty) { - userSystemPrompt = trimmed; - } - } + userSystemPrompt = _extractSystemPromptFromSettings(userSettingsData); } catch (_) {} if ((activeConversation.systemPrompt == null || @@ -1106,13 +1121,7 @@ Future _sendMessageInternal( if (!reviewerMode && api != null) { try { userSettingsData = await api.getUserSettings(); - final systemValue = userSettingsData?['system']; - if (systemValue is String) { - final trimmed = systemValue.trim(); - if (trimmed.isNotEmpty) { - userSystemPrompt = trimmed; - } - } + userSystemPrompt = _extractSystemPromptFromSettings(userSettingsData); } catch (_) {} }