1- import { type CoderApi } from "../api/coderApi" ;
2- import { type ServiceContainer } from "../core/container" ;
3- import { type ContextManager } from "../core/contextManager" ;
4- import { type MementoManager } from "../core/mementoManager" ;
5- import { type SecretsManager } from "../core/secretsManager" ;
6- import { type Logger } from "../logging/logger" ;
7- import { type WorkspaceProvider } from "../workspace/workspacesProvider" ;
8-
9- import {
10- type Deployment ,
11- type DeploymentWithAuth ,
12- isAuthenticated ,
13- } from "./types" ;
14-
151import type { User } from "coder/site/src/api/typesGenerated" ;
162import type * as vscode from "vscode" ;
173
4+ import type { CoderApi } from "../api/coderApi" ;
5+ import type { ServiceContainer } from "../core/container" ;
6+ import type { ContextManager } from "../core/contextManager" ;
7+ import type { MementoManager } from "../core/mementoManager" ;
8+ import type { SecretsManager } from "../core/secretsManager" ;
9+ import type { Logger } from "../logging/logger" ;
10+ import type { WorkspaceProvider } from "../workspace/workspacesProvider" ;
11+
12+ import type { Deployment , DeploymentWithAuth } from "./types" ;
13+
1814/**
1915 * Manages deployment state for the extension.
2016 *
@@ -72,7 +68,7 @@ export class DeploymentManager implements vscode.Disposable {
7268 * Check if we have an authenticated deployment (with a valid user).
7369 */
7470 public isAuthenticated ( ) : boolean {
75- return isAuthenticated ( this . currentDeployment ) ;
71+ return this . currentDeployment ?. user !== undefined ;
7672 }
7773
7874 /**
@@ -101,6 +97,17 @@ export class DeploymentManager implements vscode.Disposable {
10197 await this . tryFetchAndUpgradeUser ( ) ;
10298 }
10399
100+ private setDeploymentCore ( deployment : DeploymentWithAuth ) : void {
101+ if ( deployment . token === undefined ) {
102+ this . client . setHost ( deployment . url ) ;
103+ } else {
104+ this . client . setCredentials ( deployment . url , deployment . token ) ;
105+ }
106+ this . registerAuthListener ( deployment . safeHostname ) ;
107+ this . currentDeployment = { ...deployment } ;
108+ this . updateAuthContexts ( deployment . user ) ;
109+ }
110+
104111 /**
105112 * Log out from the current deployment.
106113 */
@@ -116,17 +123,6 @@ export class DeploymentManager implements vscode.Disposable {
116123 await this . secretsManager . setCurrentDeployment ( undefined ) ;
117124 }
118125
119- private setDeploymentCore ( deployment : DeploymentWithAuth ) : void {
120- if ( deployment . token === undefined ) {
121- this . client . setHost ( deployment . url ) ;
122- } else {
123- this . client . setCredentials ( deployment . url , deployment . token ) ;
124- }
125- this . registerAuthListener ( deployment . safeHostname ) ;
126- this . currentDeployment = { ...deployment } ;
127- this . updateAuthContexts ( deployment . user ) ;
128- }
129-
130126 public dispose ( ) : void {
131127 this . authListenerDisposable ?. dispose ( ) ;
132128 this . crossWindowSyncDisposable ?. dispose ( ) ;
@@ -137,6 +133,7 @@ export class DeploymentManager implements vscode.Disposable {
137133 this . secretsManager . onDidChangeCurrentDeployment (
138134 async ( { deployment } ) => {
139135 if ( this . isAuthenticated ( ) ) {
136+ // Ignore if we are already authenticated
140137 return ;
141138 }
142139
@@ -158,15 +155,15 @@ export class DeploymentManager implements vscode.Disposable {
158155 * Register auth listener for the given deployment hostname.
159156 * Updates credentials when they change (token refresh, cross-window sync).
160157 */
161- private registerAuthListener ( safeHost : string ) : void {
158+ private registerAuthListener ( safeHostname : string ) : void {
162159 this . authListenerDisposable ?. dispose ( ) ;
163160
164- this . logger . debug ( "Registering auth listener for hostname" , safeHost ) ;
161+ this . logger . debug ( "Registering auth listener for hostname" , safeHostname ) ;
165162 this . authListenerDisposable = this . secretsManager . onDidChangeSessionAuth (
166- safeHost ,
163+ safeHostname ,
167164 async ( auth ) => {
168165 if ( auth ) {
169- if ( this . currentDeployment ?. safeHostname !== safeHost ) {
166+ if ( this . currentDeployment ?. safeHostname !== safeHostname ) {
170167 return ;
171168 }
172169
@@ -212,7 +209,7 @@ export class DeploymentManager implements vscode.Disposable {
212209 }
213210
214211 /**
215- * Refresh all workspace providers.
212+ * Refresh all workspace providers asynchronously .
216213 */
217214 private refreshWorkspaces ( ) : void {
218215 for ( const provider of this . workspaceProviders ) {
0 commit comments