Skip to content
This repository was archived by the owner on Nov 4, 2024. It is now read-only.

Commit 608c5e3

Browse files
committed
feat: Add welcome and star notification.
1 parent 3afcc40 commit 608c5e3

6 files changed

Lines changed: 48 additions & 5 deletions

File tree

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/AICommitAction.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class AICommitAction : AnAction(), DumbAware {
5757
try {
5858
val generatedCommitMessage = openAIService.generateCommitMessage(diff, 1)
5959
commitMessage.setCommitMessage(generatedCommitMessage)
60+
AppSettings.instance.recordHit()
6061
}
6162
catch (e: Exception) {
6263
commitMessage.setCommitMessage(message("action.error"))

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/OpenAIService.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@ package com.github.blarc.ai.commits.intellij.plugin
22

33
import com.aallam.openai.api.BetaOpenAI
44
import com.aallam.openai.api.chat.*
5-
import com.aallam.openai.api.completion.CompletionRequest
65
import com.aallam.openai.api.model.ModelId
76
import com.aallam.openai.client.OpenAI
87
import com.github.blarc.ai.commits.intellij.plugin.settings.AppSettings
98
import com.intellij.openapi.application.ApplicationManager
109
import com.intellij.openapi.components.Service
11-
import com.knuddels.jtokkit.Encodings
12-
import com.knuddels.jtokkit.api.EncodingType
1310

1411
@Service
1512
class OpenAIService {
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.github.blarc.ai.commits.intellij.plugin.listeners
2+
3+
import com.github.blarc.ai.commits.intellij.plugin.AICommitsBundle
4+
import com.github.blarc.ai.commits.intellij.plugin.notifications.Notification
5+
import com.github.blarc.ai.commits.intellij.plugin.notifications.sendNotification
6+
import com.github.blarc.ai.commits.intellij.plugin.settings.AppSettings
7+
import com.intellij.openapi.project.Project
8+
import com.intellij.openapi.startup.ProjectActivity
9+
10+
class ApplicationStartupListener : ProjectActivity {
11+
12+
private var firstTime = true
13+
override suspend fun execute(project: Project) {
14+
showVersionNotification(project)
15+
}
16+
private fun showVersionNotification(project: Project) {
17+
val settings = AppSettings.instance
18+
val version = AICommitsBundle.plugin()?.version
19+
20+
if (version == settings.lastVersion) {
21+
return
22+
}
23+
24+
settings.lastVersion = version
25+
if (firstTime && version != null) {
26+
sendNotification(Notification.welcome(version), project)
27+
}
28+
firstTime = false
29+
}
30+
}

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/notifications/Notification.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ data class Notification(
2323
companion object {
2424
private val DEFAULT_TITLE = message("notifications.title")
2525

26-
fun welcome(version: String) = Notification(message = message("notifications.welcome", version))
26+
fun welcome(version: String) = Notification(message = message("notifications.welcome", version), type = Type.TRANSIENT)
2727

2828
fun star() = Notification(
2929
message = """

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/settings/AppSettings.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.github.blarc.ai.commits.intellij.plugin.settings
22

3+
import com.github.blarc.ai.commits.intellij.plugin.notifications.Notification
4+
import com.github.blarc.ai.commits.intellij.plugin.notifications.sendNotification
35
import com.intellij.credentialStore.CredentialAttributes
46
import com.intellij.credentialStore.Credentials
57
import com.intellij.ide.passwordSafe.PasswordSafe
@@ -19,10 +21,13 @@ import java.util.*
1921
class AppSettings : PersistentStateComponent<AppSettings> {
2022

2123
private val openAITokenTitle = "OpenAIToken"
24+
private var hits = 0
25+
2226
@OptionTag(converter = LocaleConverter::class)
2327
var locale: Locale = Locale.ENGLISH
24-
2528
var requestSupport = true
29+
var lastVersion: String? = null
30+
2631
companion object {
2732
const val SERVICE_NAME = "com.github.blarc.ai.commits.intellij.plugin.settings.AppSettings"
2833

@@ -58,6 +63,13 @@ class AppSettings : PersistentStateComponent<AppSettings> {
5863
XmlSerializerUtil.copyBean(state, this)
5964
}
6065

66+
fun recordHit() {
67+
hits++
68+
if (requestSupport && (hits == 50 || hits % 100 == 0)) {
69+
sendNotification(Notification.star())
70+
}
71+
}
72+
6173
class LocaleConverter : Converter<Locale>() {
6274
override fun toString(value: Locale): String? {
6375
return value.toLanguageTag()

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@
6363
displayType="STICKY_BALLOON"
6464
key="notification.group.important.name"
6565
/>
66+
<postStartupActivity
67+
implementation="com.github.blarc.ai.commits.intellij.plugin.listeners.ApplicationStartupListener"/>
68+
6669
</extensions>
6770

6871
<actions>

0 commit comments

Comments
 (0)