ai-chatbot/lib/canvas/capabilities/availability.ts

39 lines
1.1 KiB
TypeScript

import "server-only";
import {
CANVAS_TOOLBAR_CONFIG_SETTING_KEY,
isCanvasToolbarItemEnabled,
normalizeCanvasToolbarConfig,
type CanvasToolbarItemKey,
} from "@/lib/canvas-toolbar-config";
import type { CanvasCapabilityDefinition } from "@/lib/canvas/capabilities/types";
import { getSystemSetting } from "@/lib/db/queries";
export async function isCanvasCapabilityEnabled(
capability: CanvasCapabilityDefinition
) {
const enabledIds = await getEnabledCanvasCapabilityIds([capability]);
return enabledIds.has(capability.id);
}
export async function getEnabledCanvasCapabilityIds(
capabilities: readonly CanvasCapabilityDefinition[]
) {
const setting = await getSystemSetting({
key: CANVAS_TOOLBAR_CONFIG_SETTING_KEY,
}).catch(() => null);
const config = normalizeCanvasToolbarConfig(setting?.value);
return new Set(
capabilities
.filter(
(capability) =>
!capability.toolbarSettingKey ||
isCanvasToolbarItemEnabled(
config,
capability.toolbarSettingKey as CanvasToolbarItemKey
)
)
.map((capability) => capability.id)
);
}