()
| 44 | ); |
| 45 | |
| 46 | const generate = async () => { |
| 47 | if (!query) { |
| 48 | return; |
| 49 | } |
| 50 | |
| 51 | setError(null); |
| 52 | setStatus('loading'); |
| 53 | |
| 54 | // Some errors will be handled by the API handler and return with |
| 55 | // {error: true, result: {message: string}}} |
| 56 | // Some example errors that we expect are: |
| 57 | // - the generated text from the LLM did not parse correctly into Srcbook format |
| 58 | // - the API key is invalid |
| 59 | // - rate limits or out-of-credits issues |
| 60 | const { result, error } = await generateSrcbook({ query }); |
| 61 | |
| 62 | if (error) { |
| 63 | console.error(result); |
| 64 | setStatus('idle'); |
| 65 | if (/Incorrect API key provided/.test(result)) { |
| 66 | setError('api_key'); |
| 67 | } else { |
| 68 | setError('generic'); |
| 69 | } |
| 70 | } else { |
| 71 | openSrcbook(result.dir); |
| 72 | } |
| 73 | }; |
| 74 | |
| 75 | return ( |
| 76 | <Dialog open={open} onOpenChange={setOpen}> |
no test coverage detected