diff options
| author | Adam <[email protected]> | 2026-01-21 14:25:47 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-21 14:26:14 -0600 |
| commit | fa913377238610c4c9e200f4207386904c48ef06 (patch) | |
| tree | 7f41d7646e991cc03f8e364deaa7b235100c5688 | |
| parent | 6d656e4827a28d154a36fd5bc748c0bf9aacd02e (diff) | |
| download | opencode-fa913377238610c4c9e200f4207386904c48ef06.tar.gz opencode-fa913377238610c4c9e200f4207386904c48ef06.zip | |
fix(app): provider connect oauth error handling
| -rw-r--r-- | packages/app/src/components/dialog-connect-provider.tsx | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/packages/app/src/components/dialog-connect-provider.tsx b/packages/app/src/components/dialog-connect-provider.tsx index 66c5bd0b8..4ec4c8daa 100644 --- a/packages/app/src/components/dialog-connect-provider.tsx +++ b/packages/app/src/components/dialog-connect-provider.tsx @@ -305,16 +305,22 @@ export function DialogConnectProvider(props: { provider: string }) { } setFormStore("error", undefined) - const { error } = await globalSDK.client.provider.oauth.callback({ - providerID: props.provider, - method: store.methodIndex, - code, - }) - if (!error) { + const result = await globalSDK.client.provider.oauth + .callback({ + providerID: props.provider, + method: store.methodIndex, + code, + }) + .then((value) => + value.error ? { ok: false as const, error: value.error } : { ok: true as const }, + ) + .catch((error) => ({ ok: false as const, error })) + if (result.ok) { await complete() return } - setFormStore("error", language.t("provider.connect.oauth.code.invalid")) + const message = result.error instanceof Error ? result.error.message : String(result.error) + setFormStore("error", message || language.t("provider.connect.oauth.code.invalid")) } return ( @@ -357,13 +363,19 @@ export function DialogConnectProvider(props: { provider: string }) { }) onMount(async () => { - const result = await globalSDK.client.provider.oauth.callback({ - providerID: props.provider, - method: store.methodIndex, - }) - if (result.error) { - // TODO: show error - dialog.close() + const result = await globalSDK.client.provider.oauth + .callback({ + providerID: props.provider, + method: store.methodIndex, + }) + .then((value) => + value.error ? { ok: false as const, error: value.error } : { ok: true as const }, + ) + .catch((error) => ({ ok: false as const, error })) + if (!result.ok) { + const message = result.error instanceof Error ? result.error.message : String(result.error) + setStore("state", "error") + setStore("error", message) return } await complete() |
