feat: add verified desktop ChatGPT subscription connection
This commit is contained in:
@@ -15,12 +15,10 @@
|
||||
* its own save), the same re-read pattern chat.tsx uses for "models".
|
||||
*/
|
||||
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import type { AuthKeyStatus } from "@/src/core";
|
||||
import { classifyKeys, type ProviderKeyInfo } from "@/components/settings/keys-section";
|
||||
import { useModelCatalog } from "@/components/model-picker";
|
||||
import type { ModelCatalogResponse } from "@/src/core";
|
||||
import { useSettingsSaved } from "@/components/settings-signal";
|
||||
|
||||
/** Pure: does a MODEL-PROVIDER key exist among the statuses? Reuses
|
||||
* classifyKeys (the keys section's own classification — no drift):
|
||||
@@ -40,22 +38,8 @@ export function hasProviderKey(
|
||||
* failed read claiming "zero keys" would be a lie the CTA flow then
|
||||
* leans on). Re-reads on the keys signal. */
|
||||
export function useZeroKeys(): boolean {
|
||||
const [zeroKeys, setZeroKeys] = useState(false);
|
||||
const read = useCallback(() => {
|
||||
fetch("/api/keys")
|
||||
.then((r) => r.json())
|
||||
.then((body: { keys?: AuthKeyStatus[]; providers?: ProviderKeyInfo[] }) => {
|
||||
setZeroKeys(!hasProviderKey(body.keys ?? [], body.providers));
|
||||
})
|
||||
.catch(() => {});
|
||||
}, []);
|
||||
useEffect(() => {
|
||||
read();
|
||||
}, [read]);
|
||||
useSettingsSaved((section) => {
|
||||
if (section === "keys") read();
|
||||
});
|
||||
return zeroKeys;
|
||||
const { catalog } = useModelCatalog();
|
||||
return catalog ? !catalog.providers.some((provider) => provider.keyPresent) : false;
|
||||
}
|
||||
|
||||
/** The pill itself — the models CTA's chrome and placement, the keys
|
||||
@@ -93,9 +77,6 @@ export function strongKeyless(catalog: ModelCatalogResponse | undefined): boolea
|
||||
* (a provider key saved or deleted) and "models" (the strong slot
|
||||
* re-pinned). Live-updates with the page, never mid-send. */
|
||||
export function useStrongKeyless(): boolean {
|
||||
const { catalog, refresh } = useModelCatalog();
|
||||
useSettingsSaved((section) => {
|
||||
if (section === "keys" || section === "models") refresh();
|
||||
});
|
||||
const { catalog } = useModelCatalog();
|
||||
return strongKeyless(catalog);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user