Skip to content

Commit 92d9d5e

Browse files
committed
fix: file watcher disposable by making it project-level service
1 parent 63f139d commit 92d9d5e

File tree

2 files changed

+15
-17
lines changed

2 files changed

+15
-17
lines changed

src/main/kotlin/ee/carlrobert/codegpt/CodeGPTProjectActivity.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ package ee.carlrobert.codegpt
33
import com.intellij.notification.NotificationAction
44
import com.intellij.notification.NotificationType
55
import com.intellij.openapi.application.ApplicationManager
6+
import com.intellij.openapi.components.service
67
import com.intellij.openapi.project.Project
78
import com.intellij.openapi.startup.ProjectActivity
8-
import com.intellij.openapi.util.Disposer
99
import ee.carlrobert.codegpt.actions.editor.EditorActionsUtil
1010
import ee.carlrobert.codegpt.completions.you.YouUserManager
1111
import ee.carlrobert.codegpt.completions.you.auth.AuthenticationHandler
@@ -34,14 +34,12 @@ class CodeGPTProjectActivity : ProjectActivity {
3434
if (!ApplicationManager.getApplication().isUnitTestMode
3535
&& ConfigurationSettings.getCurrentState().isCheckForNewScreenshots
3636
) {
37-
val pathToWatch = Paths.get(System.getProperty("user.home"), "Desktop")
38-
val fileWatcher = FileWatcher(pathToWatch)
39-
fileWatcher.watch {
40-
if (listOf("jpg", "jpeg", "png").contains(it.extension)) {
41-
showImageAttachmentNotification(project, it.absolutePath)
37+
project.service<FileWatcher>()
38+
.watch(Paths.get(System.getProperty("user.home"), "Desktop").toFile()) {
39+
if (listOf("jpg", "jpeg", "png").contains(it.extension)) {
40+
showImageAttachmentNotification(project, it.absolutePath)
41+
}
4242
}
43-
}
44-
Disposer.register(project, fileWatcher)
4543
}
4644
}
4745

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
package ee.carlrobert.codegpt
22

33
import com.intellij.openapi.Disposable
4+
import com.intellij.openapi.components.Service
45
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor
56
import org.apache.commons.io.monitor.FileAlterationMonitor
67
import org.apache.commons.io.monitor.FileAlterationObserver
78
import java.io.File
8-
import java.nio.file.Path
99

10-
class FileWatcher(private val pathToWatch: Path) : Disposable {
10+
@Service(Service.Level.PROJECT)
11+
class FileWatcher : Disposable {
1112

12-
private val fileMonitor =
13-
FileAlterationMonitor(500, FileAlterationObserver(pathToWatch.toFile()))
13+
private var fileMonitor: FileAlterationMonitor? = null
1414

15-
fun watch(onFileCreated: (File) -> Unit) {
16-
val observer = FileAlterationObserver(pathToWatch.toFile())
15+
fun watch(pathToWatch: File, onFileCreated: (File) -> Unit) {
16+
val observer = FileAlterationObserver(pathToWatch)
1717
observer.addListener(object : FileAlterationListenerAdaptor() {
1818
override fun onFileCreate(file: File) {
1919
onFileCreated(file)
2020
}
2121
})
22-
fileMonitor.addObserver(observer)
23-
fileMonitor.start()
22+
fileMonitor = FileAlterationMonitor(500, observer)
23+
fileMonitor?.start()
2424
}
2525

2626
override fun dispose() {
27-
fileMonitor.stop()
27+
fileMonitor?.stop()
2828
}
2929
}

0 commit comments

Comments
 (0)