diff --git a/webapp/channels/src/components/admin_console/system_properties/user_properties_type_menu.test.tsx b/webapp/channels/src/components/admin_console/system_properties/user_properties_type_menu.test.tsx index a25c67173d..45885d4bdd 100644 --- a/webapp/channels/src/components/admin_console/system_properties/user_properties_type_menu.test.tsx +++ b/webapp/channels/src/components/admin_console/system_properties/user_properties_type_menu.test.tsx @@ -48,6 +48,21 @@ describe('UserPropertyTypeMenu', () => { expect(screen.getByText('Text')).toBeInTheDocument(); }); + it('renders legacy text field with no value_type in attrs', () => { + const legacyField = { + ...baseField, + type: 'text' as const, + attrs: { + sort_order: 0, + }, + }; + + renderComponent(legacyField as UserPropertyField); + + // The menu button should show the current type + expect(screen.getByText('Text')).toBeInTheDocument(); + }); + it('disables menu button when field is marked for deletion', () => { const deletedField = { ...baseField, diff --git a/webapp/channels/src/components/admin_console/system_properties/user_properties_type_menu.tsx b/webapp/channels/src/components/admin_console/system_properties/user_properties_type_menu.tsx index b6d56484cc..6e18e094f2 100644 --- a/webapp/channels/src/components/admin_console/system_properties/user_properties_type_menu.tsx +++ b/webapp/channels/src/components/admin_console/system_properties/user_properties_type_menu.tsx @@ -119,12 +119,15 @@ export default SelectType; const getTypeDescriptor = (field: UserPropertyField): TypeDescriptor => { for (const descriptor of Object.values(TYPE_DESCRIPTOR)) { - if (descriptor.fieldType === field.type && descriptor.valueType === field.attrs?.value_type) { + if ( + descriptor.fieldType === field.type && + descriptor.valueType === (field.attrs?.value_type ?? '') + ) { return descriptor; } } - throw new Error('Invalid type'); + return TYPE_DESCRIPTOR.text; }; type TypeID = 'text' | 'email' | 'phone' | 'url' | 'select' | 'multiselect';