in jetbrains-core/src/software/aws/toolkits/jetbrains/services/s3/objectActions/UploadObjectAction.kt [49:85]
fun uploadObjects(project: Project, treeTable: S3TreeTable, files: List<Path>, parentNode: S3TreeNode) {
if (files.isEmpty()) {
return
}
val scope = projectCoroutineScope(project, "UploadObjectAction")
scope.launch {
var changeMade = false
try {
files.forEach {
if (it.isDirectory()) {
notifyError(
title = message("s3.upload.object.failed", it.fileName),
content = message("s3.upload.directory.impossible", it.fileName),
project = project
)
} else {
try {
treeTable.bucket.upload(project, it, parentNode.directoryPath() + it.fileName)
changeMade = true
} catch (e: Exception) {
e.notifyError(message("s3.upload.object.failed", it.fileName), project)
throw e
}
}
}
S3Telemetry.uploadObjects(project = project, result = Result.Succeeded, value = files.size.toDouble())
} catch (e: Exception) {
S3Telemetry.uploadObjects(project = project, result = Result.Failed, value = files.size.toDouble())
} finally {
if (changeMade) {
treeTable.invalidateLevel(parentNode)
treeTable.refresh()
}
}
}
}