From e8416d28e81bf664cae048a4c9d84df5ca3e0cba Mon Sep 17 00:00:00 2001 From: cogwheel0 <172976095+cogwheel0@users.noreply.github.com> Date: Sat, 20 Sep 2025 18:47:38 +0530 Subject: [PATCH] fix: bugs with system prompt --- .../chat/providers/chat_providers.dart | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) 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 (_) {} }