mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-09 04:40:57 +00:00
f0b2c103c1
* fix(web): disable quota-reached create actions * fix(web): close quota review gaps --------- Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com>
83 lines
2.0 KiB
TypeScript
83 lines
2.0 KiB
TypeScript
import { systemInfo } from '@/app/infra/http/HttpClient';
|
|
import { useSidebarData } from '@/app/home/components/home-sidebar/SidebarDataContext';
|
|
|
|
export interface WorkspaceQuotaItem {
|
|
count: number;
|
|
max: number;
|
|
reached: boolean;
|
|
loading: boolean;
|
|
disabled: boolean;
|
|
}
|
|
|
|
export interface WorkspaceQuotaStatus {
|
|
bots: WorkspaceQuotaItem;
|
|
pipelines: WorkspaceQuotaItem;
|
|
knowledgeBases: WorkspaceQuotaItem;
|
|
extensions: WorkspaceQuotaItem;
|
|
botsReached: boolean;
|
|
pipelinesReached: boolean;
|
|
knowledgeBasesReached: boolean;
|
|
extensionsReached: boolean;
|
|
}
|
|
|
|
function quotaItem(
|
|
count: number,
|
|
max: number | undefined,
|
|
loaded: boolean,
|
|
): WorkspaceQuotaItem {
|
|
const normalizedMax = typeof max === 'number' ? max : -1;
|
|
const reached = loaded && normalizedMax >= 0 && count >= normalizedMax;
|
|
return {
|
|
count,
|
|
max: normalizedMax,
|
|
reached,
|
|
loading: !loaded,
|
|
disabled: !loaded || reached,
|
|
};
|
|
}
|
|
|
|
export function useWorkspaceQuotaStatus(): WorkspaceQuotaStatus {
|
|
const {
|
|
bots,
|
|
pipelines,
|
|
knowledgeBases,
|
|
pluginCount,
|
|
mcpServers,
|
|
skills,
|
|
quotaDataLoaded,
|
|
} = useSidebarData();
|
|
const limitation = systemInfo.limitation;
|
|
|
|
const botQuota = quotaItem(
|
|
bots.length,
|
|
limitation?.max_bots,
|
|
quotaDataLoaded,
|
|
);
|
|
const pipelineQuota = quotaItem(
|
|
pipelines.length,
|
|
limitation?.max_pipelines,
|
|
quotaDataLoaded,
|
|
);
|
|
const knowledgeBaseQuota = quotaItem(
|
|
knowledgeBases.length,
|
|
limitation?.max_knowledge_bases,
|
|
quotaDataLoaded,
|
|
);
|
|
const extensionQuota = quotaItem(
|
|
pluginCount + mcpServers.length + skills.length,
|
|
limitation?.max_extensions,
|
|
quotaDataLoaded,
|
|
);
|
|
|
|
return {
|
|
bots: botQuota,
|
|
pipelines: pipelineQuota,
|
|
knowledgeBases: knowledgeBaseQuota,
|
|
extensions: extensionQuota,
|
|
botsReached: botQuota.disabled,
|
|
pipelinesReached: pipelineQuota.disabled,
|
|
knowledgeBasesReached: knowledgeBaseQuota.disabled,
|
|
extensionsReached: extensionQuota.disabled,
|
|
};
|
|
}
|