in src/main/com/intellij/lang/jsgraphql/ide/config/GraphQLConfigFileListener.kt [13:58]
override fun prepareChange(events: List<VFileEvent>): AsyncFileListener.ChangeApplier? {
var configurationsChanged = false
val watchedDirs = collectWatchedDirectories()
for (event in events) {
ProgressManager.checkCanceled()
if (configurationsChanged) break
if (event is VFileCreateEvent) {
if (event.childName in CONFIG_NAMES) {
configurationsChanged = true
}
continue
}
val file = event.file ?: continue
if (file.isDirectory) {
if (file in watchedDirs || watchedDirs.any { VfsUtil.isAncestor(file, it, true) }) {
configurationsChanged = true
}
}
else {
if (event is VFilePropertyChangeEvent) {
if (VirtualFile.PROP_NAME == event.propertyName) {
if (event.newValue is String && event.newValue in CONFIG_NAMES ||
event.oldValue is String && event.oldValue in CONFIG_NAMES
) {
configurationsChanged = true
}
}
}
else {
if (file.name in CONFIG_NAMES) {
configurationsChanged = true
}
}
}
}
return if (configurationsChanged) object : AsyncFileListener.ChangeApplier {
override fun afterVfsChange() {
GraphQLConfigProvider.getInstance(project).scheduleConfigurationReload()
}
}
else null
}