coze-studio/frontend/packages/arch/bot-tea/src/utils.ts

68 lines
2.2 KiB
TypeScript

/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import queryString from 'query-string';
import { type EVENT_NAMES, type ParamsTypeDefine } from '@coze-arch/tea';
import {
ProductEntityType,
type ProductInfo,
} from '@coze-arch/bot-api/product_api';
export function convertTemplateType(
entityType?: ProductEntityType,
): ParamsTypeDefine[EVENT_NAMES.template_action_front]['template_type'] {
switch (entityType) {
case ProductEntityType.WorkflowTemplateV2:
return 'workflow';
case ProductEntityType.ImageflowTemplateV2:
return 'imageflow';
case ProductEntityType.BotTemplate:
return 'bot';
case ProductEntityType.ProjectTemplate:
return 'project';
default:
return 'unknown';
}
}
export function extractTemplateActionCommonParams(detail?: ProductInfo) {
const queryParams = queryString.parse(location.search);
const from = (queryParams?.from ?? '') as string;
return {
template_id: detail?.meta_info.id || '',
entity_id: detail?.meta_info.entity_id || '',
template_name: detail?.meta_info.name || '',
template_type: convertTemplateType(detail?.meta_info.entity_type),
...(detail?.meta_info.entity_type === ProductEntityType.ProjectTemplate && {
entity_copy_id: detail?.project_extra?.template_project_id,
}),
template_tag_professional: detail?.meta_info.is_professional
? 'professional'
: 'basic',
...(detail?.meta_info?.is_free
? ({
template_tag_prize: 'free',
} as const)
: ({
template_tag_prize: 'paid',
template_prize_detail: Number(detail?.meta_info?.price?.amount) || 0,
} as const)),
from,
} as const;
}