Show nicer message when Appwrite project can't be found
This commit is contained in:
		
							parent
							
								
									7190b769f8
								
							
						
					
					
						commit
						83ceb42acf
					
				
					 2 changed files with 31 additions and 15 deletions
				
			
		| 
						 | 
					@ -34,7 +34,18 @@ export class HealthTreeItemProvider implements vscode.TreeDataProvider<vscode.Tr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // get children for root
 | 
					        // get children for root
 | 
				
			||||||
        if (element === undefined) {
 | 
					        if (element === undefined) {
 | 
				
			||||||
            const health = await promiseWithTimeout<AppwriteHealth | undefined>(10000, async () => await healthClient?.checkup(), 'Health request timed out');
 | 
					            try {
 | 
				
			||||||
 | 
					                const health = await promiseWithTimeout<AppwriteHealth | undefined>(
 | 
				
			||||||
 | 
					                    10000,
 | 
				
			||||||
 | 
					                    async () => {
 | 
				
			||||||
 | 
					                        try {
 | 
				
			||||||
 | 
					                            return await healthClient?.checkup();
 | 
				
			||||||
 | 
					                        } catch (e) {
 | 
				
			||||||
 | 
					                            vscode.window.showErrorMessage('Could not connect to Appwrite project');
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "Health request timed out"
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
                if (health === undefined) {
 | 
					                if (health === undefined) {
 | 
				
			||||||
                    return [];
 | 
					                    return [];
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					@ -49,6 +60,9 @@ export class HealthTreeItemProvider implements vscode.TreeDataProvider<vscode.Tr
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                    ...healthItems,
 | 
					                    ...healthItems,
 | 
				
			||||||
                ];
 | 
					                ];
 | 
				
			||||||
 | 
					            } catch (e) {
 | 
				
			||||||
 | 
					                //
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return [];
 | 
					        return [];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,9 @@
 | 
				
			||||||
 | 
					import { window } from 'vscode';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const promiseWithTimeout = <T>(timeoutMs: number, promise: () => Promise<T>, failureMessage?: string): Promise<T> => {
 | 
					export const promiseWithTimeout = <T>(timeoutMs: number, promise: () => Promise<T>, failureMessage?: string): Promise<T> => {
 | 
				
			||||||
    let timeoutHandle: NodeJS.Timeout;
 | 
					    let timeoutHandle: NodeJS.Timeout;
 | 
				
			||||||
    const timeoutPromise = new Promise<never>((resolve, reject) => {
 | 
					    const timeoutPromise = new Promise<never>((resolve, reject) => {
 | 
				
			||||||
        timeoutHandle = setTimeout(() => reject(new Error(failureMessage)), timeoutMs);
 | 
					        timeoutHandle = setTimeout(() => window.showErrorMessage(failureMessage ?? 'Request timed out'), timeoutMs);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return Promise.race([promise(), timeoutPromise]).then((result) => {
 | 
					    return Promise.race([promise(), timeoutPromise]).then((result) => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue