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:
2025-09-10 19:06:16 +00:00
parent 5d281d9b6c
commit 124c4ca46f
7 changed files with 463 additions and 304 deletions

View File

@@ -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);
}

View File

@@ -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>
`;
}
}
}