fix(tui): clear onboarding after provider connect (#34819)
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
This commit is contained in:
parent
bea6e1499d
commit
02f012f5d1
4 changed files with 25 additions and 12 deletions
|
|
@ -1,13 +1,8 @@
|
|||
import { createMemo } from "solid-js"
|
||||
import { useData } from "../context/data"
|
||||
import { useSync } from "../context/sync"
|
||||
import { hasConnectedProvider } from "../util/connected-provider"
|
||||
|
||||
export function useConnected() {
|
||||
const data = useData()
|
||||
const sync = useSync()
|
||||
return createMemo(
|
||||
() =>
|
||||
(data.location.integration.list() ?? []).some((integration) => integration.connections.length > 0) ||
|
||||
sync.data.console_state.consoleManagedProviders.length > 0,
|
||||
)
|
||||
return createMemo(() => hasConnectedProvider(data.location.integration.list() ?? []))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ import type { BuiltinTuiPlugin } from "../builtins"
|
|||
import { createMemo, Show } from "solid-js"
|
||||
import { Tips } from "./tips-view"
|
||||
import { useBindings } from "../../keymap"
|
||||
import { useData } from "../../context/data"
|
||||
import { hasConnectedProvider } from "../../util/connected-provider"
|
||||
|
||||
const id = "internal:home-tips"
|
||||
|
||||
|
|
@ -37,13 +39,10 @@ const tui: TuiPlugin = async (api) => {
|
|||
order: 100,
|
||||
slots: {
|
||||
home_bottom() {
|
||||
const data = useData()
|
||||
const hidden = createMemo(() => api.kv.get("tips_hidden", false))
|
||||
const first = createMemo(() => api.state.session.count() === 0)
|
||||
const connected = createMemo(() =>
|
||||
api.state.provider.some(
|
||||
(item) => item.id !== "opencode" || Object.values(item.models).some((model) => model.cost?.input !== 0),
|
||||
),
|
||||
)
|
||||
const connected = createMemo(() => hasConnectedProvider(data.location.integration.list() ?? []))
|
||||
const show = createMemo(() => (!first() || !connected()) && !hidden())
|
||||
return <View api={api} hidden={hidden()} show={show()} connected={connected()} />
|
||||
},
|
||||
|
|
|
|||
5
packages/tui/src/util/connected-provider.ts
Normal file
5
packages/tui/src/util/connected-provider.ts
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import type { IntegrationInfo } from "@opencode-ai/sdk/v2"
|
||||
|
||||
export function hasConnectedProvider(integrations: readonly Pick<IntegrationInfo, "connections">[]) {
|
||||
return integrations.some((integration) => integration.connections.length > 0)
|
||||
}
|
||||
14
packages/tui/test/util/connected-provider.test.ts
Normal file
14
packages/tui/test/util/connected-provider.test.ts
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import { describe, expect, test } from "bun:test"
|
||||
import { hasConnectedProvider } from "../../src/util/connected-provider"
|
||||
|
||||
describe("hasConnectedProvider", () => {
|
||||
test("is false without integration credentials", () => {
|
||||
expect(hasConnectedProvider([])).toBe(false)
|
||||
expect(hasConnectedProvider([{ connections: [] }])).toBe(false)
|
||||
})
|
||||
|
||||
test("is true after any provider integration is connected", () => {
|
||||
expect(hasConnectedProvider([{ connections: [{ type: "credential", id: "cred_1", label: "Work" }] }])).toBe(true)
|
||||
expect(hasConnectedProvider([{ connections: [{ type: "env", name: "OPENAI_API_KEY" }] }])).toBe(true)
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue