@@ -2,12 +2,12 @@ import { Command } from "@cliffy/command"
22import { unicodeWidth } from "@std/cli"
33import { gql } from "../../__codegen__/gql.ts"
44import {
5- getAllCredentials ,
5+ getApiKeyForWorkspace ,
66 getDefaultWorkspace ,
77 getWorkspaces ,
88} from "../../credentials.ts"
99import { padDisplay } from "../../utils/display.ts"
10- import { handleError } from "../../utils/errors.ts"
10+ import { handleError , isClientError } from "../../utils/errors.ts"
1111import { createGraphQLClient } from "../../utils/graphql.ts"
1212
1313const viewerQuery = gql ( `
@@ -48,11 +48,22 @@ async function fetchWorkspaceInfo(
4848 userName : result . viewer . name ,
4949 email : result . viewer . email ,
5050 }
51- } catch {
51+ } catch ( error ) {
52+ let errorMsg = "unknown error"
53+ if ( isClientError ( error ) ) {
54+ const status = error . response ?. status
55+ if ( status === 401 || status === 403 ) {
56+ errorMsg = "invalid credentials"
57+ } else {
58+ errorMsg = error . message
59+ }
60+ } else if ( error instanceof Error ) {
61+ errorMsg = error . message
62+ }
5263 return {
5364 workspace,
5465 isDefault,
55- error : "invalid credentials" ,
66+ error : errorMsg ,
5667 }
5768 }
5869}
@@ -70,12 +81,19 @@ export const listCommand = new Command()
7081 return
7182 }
7283
73- const credentials = getAllCredentials ( )
74-
7584 // Fetch info for all workspaces in parallel
76- const infoPromises = workspaces . map ( ( ws ) =>
77- fetchWorkspaceInfo ( ws , credentials [ ws ] ! )
78- )
85+ const infoPromises = workspaces . map ( ( ws ) => {
86+ const apiKey = getApiKeyForWorkspace ( ws )
87+ if ( apiKey == null ) {
88+ const info : WorkspaceInfo = {
89+ workspace : ws ,
90+ isDefault : getDefaultWorkspace ( ) === ws ,
91+ error : "missing credentials" ,
92+ }
93+ return Promise . resolve ( info )
94+ }
95+ return fetchWorkspaceInfo ( ws , apiKey )
96+ } )
7997 const infos = await Promise . all ( infoPromises )
8098
8199 // Calculate column widths
0 commit comments