haixunMaster/lib/services/threads-credentials.ts

36 lines
1.3 KiB
TypeScript
Raw Normal View History

2026-06-21 12:50:31 +00:00
import type { Account } from "@prisma/client";
import { getOrCreateSettings } from "@/lib/user-settings";
import { getActiveAccountProfile } from "@/lib/account-context";
import {
accountHasThreadsToken,
ensureValidAccessTokenForAccount,
getThreadsCredentials,
} from "@/lib/threads-api";
export type ResolvedThreadsCredentials = NonNullable<
ReturnType<typeof getThreadsCredentials>
>;
/**
* API
* App ID / App Secret Setting
* access token / user id Account
* token
*/
export async function getActiveThreadsCredentials(): Promise<ResolvedThreadsCredentials | null> {
const settings = await getOrCreateSettings();
const account = await getActiveAccountProfile();
if (!account) return null;
const accessToken = await ensureValidAccessTokenForAccount(account);
return getThreadsCredentials(settings, account, accessToken);
}
export function describeThreadsConnection(account: Account | null) {
return {
connected: accountHasThreadsToken(account),
threadsUserId: account?.threadsUserId ?? null,
threadsTokenExpiresAt: account?.threadsTokenExpiresAt?.toISOString() ?? null,
};
}