import type { ILivechatCustomField } from '@rocket.chat/core-typings'; import type { BaseTest } from '../test'; type CustomField = Omit & { field: string }; export const removeCustomField = (api: BaseTest['api'], id: string) => { return api.post('/livechat/custom-fields.delete', { customFieldId: id, }); }; export const setVisitorCustomFieldValue = async ( api: BaseTest['api'], params: { token: string; customFieldId: string; value: string; overwrite?: boolean }, ) => { const response = await api.post('/livechat/custom.field', { token: params.token, key: params.customFieldId, value: params.value, overwrite: params.overwrite ?? true, }); if (!response.ok()) { throw new Error(`Failed to set visitor custom field [http status: ${response.status()}]`); } const { field } = await response.json(); return { response, field }; }; export const createCustomField = async (api: BaseTest['api'], overwrites: Partial) => { const response = await api.post('/livechat/custom-fields.save', { customFieldId: null, customFieldData: { field: overwrites.field, label: overwrites.label || overwrites.field, visibility: 'visible', scope: 'visitor', searchable: false, regexp: '', type: 'input', required: false, defaultValue: '', options: '', public: false, ...overwrites, }, }); if (!response.ok()) { throw new Error(`Failed to create custom field [http status: ${response.status()}]`); } const { customField } = await response.json(); return { response, customField, delete: () => removeCustomField(api, customField._id), }; };