summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-21 14:25:47 -0600
committerAdam <[email protected]>2026-01-21 14:26:14 -0600
commitfa913377238610c4c9e200f4207386904c48ef06 (patch)
tree7f41d7646e991cc03f8e364deaa7b235100c5688
parent6d656e4827a28d154a36fd5bc748c0bf9aacd02e (diff)
downloadopencode-fa913377238610c4c9e200f4207386904c48ef06.tar.gz
opencode-fa913377238610c4c9e200f4207386904c48ef06.zip
fix(app): provider connect oauth error handling
-rw-r--r--packages/app/src/components/dialog-connect-provider.tsx40
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()