diff --git a/src/main/kotlin/com/redhat/devtools/intellij/kubernetes/actions/RefreshAction.kt b/src/main/kotlin/com/redhat/devtools/intellij/kubernetes/actions/RefreshAction.kt index c20bf268b..52bb2b64b 100644 --- a/src/main/kotlin/com/redhat/devtools/intellij/kubernetes/actions/RefreshAction.kt +++ b/src/main/kotlin/com/redhat/devtools/intellij/kubernetes/actions/RefreshAction.kt @@ -22,18 +22,39 @@ import javax.swing.tree.TreePath class RefreshAction : StructureTreeAction(IActiveContext::class.java) { - override fun actionPerformed(event: AnActionEvent?, path: TreePath?, selectedNode: Any?) { - val descriptor = selectedNode?.getDescriptor() ?: return - run("Refreshing $selectedNode...", true, - Progressive { - val telemetry = TelemetryService.instance.action("refresh resource") - try { - descriptor.invalidate() - sendTelemetry(getResourceKind(descriptor.element), telemetry) - } catch (e: Exception) { - logger().warn("Could not refresh $descriptor resources.", e) - telemetry.error(e).send() - } - }) - } + override fun actionPerformed(event: AnActionEvent?, path: TreePath?, selectedNode: Any?) { + val descriptor = selectedNode?.getDescriptor() + run( + "Refreshing $selectedNode...", true, + Progressive { + val telemetry = TelemetryService.instance.action( + "refresh ${ + if (descriptor != null) { + "resource" + } else { + "all contexts" + } + } " + ) + try { + if (descriptor != null) { + descriptor.invalidate() + sendTelemetry(getResourceKind(descriptor.element), telemetry) + } else { + getResourceModel()?.invalidate(); + telemetry.send() + } + } catch (e: Exception) { + logger().warn( + "Could not refresh ${ + if (descriptor != null) { + "$descriptor resources" + } else { + "all contexts." + } + }", e + ) + } + }) + } } diff --git a/src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/ResourceModel.kt b/src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/ResourceModel.kt index 87779eac1..ba042cc21 100644 --- a/src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/ResourceModel.kt +++ b/src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/ResourceModel.kt @@ -50,6 +50,7 @@ interface IResourceModel { fun watch(definition: CustomResourceDefinition) fun stopWatch(kind: ResourceKind) fun stopWatch(definition: CustomResourceDefinition) + fun invalidate() fun invalidate(element: Any?) fun delete(resources: List, force: Boolean) fun canWatchLog(resource: HasMetadata): Boolean @@ -171,7 +172,7 @@ open class ResourceModel : IResourceModel { modelChange.removeListener(listener) } - private fun invalidate() { + override fun invalidate() { logger().debug("Invalidating all contexts.") allContexts.refresh() }