diff --git a/CHANGELOG.md b/CHANGELOG.md index ec227c68..41163915 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -569,7 +569,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [2.8.4-223]: https://github.com/carlrobertoh/CodeGPT/compare/v2.8.3-223...v2.8.4-223 [2.8.3-223]: https://github.com/carlrobertoh/CodeGPT/compare/v2.8.2-233...v2.8.3-223 [2.8.2-223]: https://github.com/carlrobertoh/CodeGPT/compare/v2.8.1-223...v2.8.2-223 -[2.8.2-233]: https://github.com/carlrobertoh/CodeGPT/compare/v2.8.1-223...v2.8.2-233 [2.8.1-223]: https://github.com/carlrobertoh/CodeGPT/compare/v2.8.0-223...v2.8.1-223 [2.8.0-223]: https://github.com/carlrobertoh/CodeGPT/compare/v2.7.1-223...v2.8.0-223 [2.7.1-223]: https://github.com/carlrobertoh/CodeGPT/compare/v2.7.0-223...v2.7.1-223 diff --git a/src/main/kotlin/ee/carlrobert/codegpt/settings/persona/PersonasSettingsForm.kt b/src/main/kotlin/ee/carlrobert/codegpt/settings/persona/PersonasSettingsForm.kt index 409793ca..59f22807 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/settings/persona/PersonasSettingsForm.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/settings/persona/PersonasSettingsForm.kt @@ -105,7 +105,13 @@ class PersonasSettingsForm { } userCreatedPersonas.removeIf { removedItemIds.contains(it.id) } - userCreatedPersonas.addAll(addedItems.map { it.toPersonaDetailsState() }) + userCreatedPersonas.forEach { + if (it.id == persona?.id) { + it.name = persona.name + it.instructions = persona.instructions + } + } + userCreatedPersonas.addAll(findMatchingRows(addedItems.map { it.id }).map { it.toPersonaDetailsState() }) } clear() } @@ -154,8 +160,7 @@ class PersonasSettingsForm { } private fun createNewPersona(name: String, prompt: String): PersonaDetails { - val newId = findMaxId() + 1 - return PersonaDetails(newId, name, prompt) + return PersonaDetails(findMaxId() + 1, name, prompt) } private fun addPersonaToTable(persona: PersonaDetails) { @@ -209,7 +214,7 @@ class PersonasSettingsForm { index ) } - ResourceUtil.getFilteredPersonaSuggestions().forEachIndexed { index, persona -> + ResourceUtil.getDefaultPersonas().forEachIndexed { index, persona -> tableModel.addPersonaRow(persona, selectedPersona.id, index, true) } } @@ -285,4 +290,19 @@ class PersonasSettingsForm { addedItems.clear() removedItemIds.clear() } + + private fun findMatchingRows(ids: List): List { + val matchingRows = mutableListOf() + + for (rowIndex in 0 until tableModel.rowCount) { + val personaId = tableModel.getValueAt(rowIndex, 0) as Long + if (ids.contains(personaId)) { + val name = tableModel.getValueAt(rowIndex, 1) as String + val instructions = tableModel.getValueAt(rowIndex, 2) as String + matchingRows.add(PersonaDetails(personaId, name, instructions)) + } + } + + return matchingRows + } } \ No newline at end of file diff --git a/src/main/kotlin/ee/carlrobert/codegpt/util/ResourceUtil.kt b/src/main/kotlin/ee/carlrobert/codegpt/util/ResourceUtil.kt index 9dff3037..c1c9d5ae 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/util/ResourceUtil.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/util/ResourceUtil.kt @@ -12,7 +12,7 @@ object ResourceUtil { fun getFilteredPersonaSuggestions( filterPredicate: ((PersonaDetails) -> Boolean)? = null ): List { - var personaDetails = getFilteredPersonaSuggestions() + var personaDetails = getDefaultPersonas() if (filterPredicate != null) { personaDetails = personaDetails.filter(filterPredicate).toMutableList() } @@ -21,7 +21,7 @@ object ResourceUtil { .take(10) + listOf(SuggestionItem.ActionItem(DefaultAction.CREATE_NEW_PERSONA)) } - fun getFilteredPersonaSuggestions(): MutableList { + fun getDefaultPersonas(): MutableList { return ObjectMapper().readValue( getResourceContent("/prompts.json"), object : TypeReference>() {})