Skip to content

Commit 2b8b27e

Browse files
authored
Merge pull request #60 from devchat-ai/auto-show-devchat-after-installed
Auto show devchat after installed
2 parents 6fe5625 + be875cd commit 2b8b27e

5 files changed

Lines changed: 31 additions & 10 deletions

File tree

src/main/kotlin/ai/devchat/devchat/handler/DeleteTopicRequestHandler.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ package ai.devchat.devchat.handler
22

33
import ai.devchat.devchat.BaseActionHandler
44
import ai.devchat.devchat.DevChatActions
5-
import ai.devchat.idea.storage.DeletedTopicsState
5+
import ai.devchat.idea.storage.DevChatState
66
import com.alibaba.fastjson.JSONObject
77

88
class DeleteTopicRequestHandler(metadata: JSONObject?, payload: JSONObject?) : BaseActionHandler(metadata, payload) {
99
override val actionName: String = DevChatActions.DELETE_TOPIC_RESPONSE
1010
override fun action() {
1111
val topicHash = payload!!.getString("topicHash")
12-
val state = DeletedTopicsState.instance
12+
val state = DevChatState.instance
1313
if (!state.deletedTopicHashes.contains(topicHash)) {
1414
state.deletedTopicHashes += topicHash
1515
}

src/main/kotlin/ai/devchat/devchat/handler/ListTopicsRequestHandler.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package ai.devchat.devchat.handler
22

33
import ai.devchat.devchat.BaseActionHandler
44
import ai.devchat.devchat.DevChatActions
5-
import ai.devchat.idea.storage.DeletedTopicsState
5+
import ai.devchat.idea.storage.DevChatState
66
import com.alibaba.fastjson.JSONArray
77
import com.alibaba.fastjson.JSONObject
88

@@ -11,7 +11,7 @@ class ListTopicsRequestHandler(metadata: JSONObject?, payload: JSONObject?) : Ba
1111
override val actionName: String = DevChatActions.LIST_TOPICS_RESPONSE
1212
override fun action() {
1313
val topics = wrapper.topicList
14-
val deletedTopicHashes = DeletedTopicsState.instance.deletedTopicHashes
14+
val deletedTopicHashes = DevChatState.instance.deletedTopicHashes
1515
// Filter out deleted topics
1616
val filteredTopics = JSONArray()
1717
topics.forEachIndexed {i, _ ->
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package ai.devchat.idea
2+
3+
import com.intellij.ide.plugins.DynamicPluginListener
4+
import com.intellij.ide.plugins.IdeaPluginDescriptor
5+
import com.intellij.openapi.project.ProjectManager
6+
import com.intellij.openapi.wm.ToolWindowManager
7+
8+
class PluginInstallListener : DynamicPluginListener {
9+
override fun pluginLoaded(pluginDescriptor: IdeaPluginDescriptor) {
10+
if (pluginDescriptor.pluginId.idString == "ai.devchat.plugin") {
11+
val openProjects = ProjectManager.getInstance().openProjects
12+
if (openProjects.isNotEmpty()) {
13+
ToolWindowManager.getInstance(openProjects[0]).getToolWindow("DevChat")?.show()
14+
}
15+
}
16+
}
17+
}

src/main/kotlin/ai/devchat/idea/storage/DeletedTopicsState.kt renamed to src/main/kotlin/ai/devchat/idea/storage/DevChatState.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,20 @@ import com.intellij.openapi.components.Storage
88
import com.intellij.util.xmlb.XmlSerializerUtil
99

1010
@Service
11-
@State(name = "ai.devchat.devchat.DeletedTopicsState", storages = [Storage("deletedTopics.xml")])
12-
class DeletedTopicsState : PersistentStateComponent<DeletedTopicsState?> {
11+
@State(name = "ai.devchat.DevChatState", storages = [Storage("DevChatState.xml")])
12+
class DevChatState : PersistentStateComponent<DevChatState?> {
1313
var deletedTopicHashes: List<String> = ArrayList()
14-
override fun getState(): DeletedTopicsState? {
14+
var isFirstLoad: Boolean = true
15+
override fun getState(): DevChatState {
1516
return this
1617
}
1718

18-
override fun loadState(state: DeletedTopicsState) {
19+
override fun loadState(state: DevChatState) {
1920
XmlSerializerUtil.copyBean(state, this)
2021
}
2122

2223
companion object {
23-
val instance: DeletedTopicsState
24-
get() = ApplicationManager.getApplication().getService(DeletedTopicsState::class.java)
24+
val instance: DevChatState
25+
get() = ApplicationManager.getApplication().getService(DevChatState::class.java)
2526
}
2627
}

src/main/resources/META-INF/plugin.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
id="org.intellij.sdk.settings.AppSettingsConfigurable"
3535
displayName="DevChat"/>
3636
<applicationService serviceImplementation="ai.devchat.idea.settings.DevChatSettingsState"/>
37+
<applicationListeners>
38+
<listener class="ai.devchat.idea.PluginInstallListener" topic="com.intellij.ide.plugins.DynamicPluginListener" />
39+
</applicationListeners>
3740
<notificationGroup id="Custom Notification Group"
3841
displayType="BALLOON"/>
3942
<notificationGroup id="stickyBalloon" displayType="STICKY_BALLOON" isLogByDefault="true"/>

0 commit comments

Comments
 (0)