feat: Enhance API client integration across web and CLI
- Added typedRequestInterfaces import to plugins.ts for better type handling. - Updated CLI client to utilize environment variables for Cloudly API credentials and improved authentication flow. - Refactored appstate.ts to use a shared API client instance, reducing redundancy in API calls for various actions. - Simplified external registry actions in appstate.ts by leveraging the shared API client. - Updated CloudlyDashboard and CloudlyViewSettings components to utilize the shared API client for fetching settings and managing connections. - Removed redundant TypedRequest instances in favor of direct API client calls for improved performance and maintainability. - Exposed the API client in plugins.ts for easier access in UI components.
This commit is contained in:
		| @@ -217,6 +217,13 @@ export class CloudlyDashboard extends DeesElement { | ||||
|     console.log(loginState); | ||||
|     if (loginState.identity) { | ||||
|       this.identity = loginState.identity; | ||||
|       try { | ||||
|         appstate.apiClient.identity = loginState.identity; | ||||
|         if (!appstate.apiClient['typedsocketClient']) { | ||||
|           await appstate.apiClient.start(); | ||||
|         } | ||||
|         try { appstate.apiClient.typedsocketClient.addTag('identity', appstate.apiClient.identity); } catch {} | ||||
|       } catch (e) { console.warn('Failed to initialize API client WS', e); } | ||||
|       await simpleLogin.switchToSlottedContent(); | ||||
|       await appstate.dataState.dispatchAction(appstate.getAllDataAction, null); | ||||
|     } | ||||
|   | ||||
| @@ -93,13 +93,8 @@ export class CloudlyViewSettings extends DeesElement { | ||||
|   private async loadSettings() { | ||||
|     this.isLoading = true; | ||||
|     try { | ||||
|       const trRequest = new plugins.deesDomtools.plugins.typedrequest.TypedRequest< | ||||
|         plugins.interfaces.requests.settings.IRequest_GetSettings | ||||
|       >( | ||||
|         '/typedrequest', | ||||
|         'getSettings' | ||||
|       ); | ||||
|       const response = await trRequest.fire({}); | ||||
|       // Use shared API client | ||||
|       const response = await appstate.apiClient.settings.getSettings(); | ||||
|       this.settings = response.settings; | ||||
|     } catch (error) { | ||||
|       console.error('Failed to load settings:', error); | ||||
| @@ -128,13 +123,7 @@ export class CloudlyViewSettings extends DeesElement { | ||||
|       } | ||||
|       console.log('Updates to send:', updates); | ||||
|  | ||||
|       const trRequest = new plugins.deesDomtools.plugins.typedrequest.TypedRequest< | ||||
|         plugins.interfaces.requests.settings.IRequest_UpdateSettings | ||||
|       >( | ||||
|         '/typedrequest', | ||||
|         'updateSettings' | ||||
|       ); | ||||
|       const response = await trRequest.fire({ updates }); | ||||
|       const response = await appstate.apiClient.settings.updateSettings(updates); | ||||
|  | ||||
|       if (response.success) { | ||||
|         plugins.deesCatalog.DeesToast.createAndShow({ | ||||
| @@ -159,13 +148,7 @@ export class CloudlyViewSettings extends DeesElement { | ||||
|   private async testConnection(provider: string) { | ||||
|     this.isLoading = true; | ||||
|     try { | ||||
|       const trRequest = new plugins.deesDomtools.plugins.typedrequest.TypedRequest< | ||||
|         plugins.interfaces.requests.settings.IRequest_TestProviderConnection | ||||
|       >( | ||||
|         '/typedrequest', | ||||
|         'testProviderConnection' | ||||
|       ); | ||||
|       const response = await trRequest.fire({ provider: provider as any }); | ||||
|       const response = await appstate.apiClient.settings.testProviderConnection(provider); | ||||
|  | ||||
|       this.testResults = { | ||||
|         ...this.testResults, | ||||
| @@ -475,4 +458,4 @@ export class CloudlyViewSettings extends DeesElement { | ||||
|         </div> | ||||
|     `; | ||||
|   } | ||||
| } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user