Enables creating an opportunityCard instantly if company field is disabled (#6316) (#6911)

fixes #6316

---------

Co-authored-by: martmull <martmull@hotmail.fr>
This commit is contained in:
Faisal-imtiyaz123
2024-09-06 15:23:53 +05:30
committed by GitHub
parent 6c15033511
commit d36486b65e
3 changed files with 38 additions and 12 deletions

View File

@@ -1,10 +1,12 @@
import { RecordBoardContext } from '@/object-record/record-board/contexts/RecordBoardContext'; import { RecordBoardContext } from '@/object-record/record-board/contexts/RecordBoardContext';
import { RecordBoardColumnContext } from '@/object-record/record-board/record-board-column/contexts/RecordBoardColumnContext'; import { RecordBoardColumnContext } from '@/object-record/record-board/record-board-column/contexts/RecordBoardColumnContext';
import { useIsOpportunitiesCompanyFieldDisabled } from '@/object-record/record-board/record-board-column/hooks/useIsOpportunitiesCompanyFieldDisabled';
import { useEntitySelectSearch } from '@/object-record/relation-picker/hooks/useEntitySelectSearch'; import { useEntitySelectSearch } from '@/object-record/relation-picker/hooks/useEntitySelectSearch';
import { EntityForSelect } from '@/object-record/relation-picker/types/EntityForSelect'; import { EntityForSelect } from '@/object-record/relation-picker/types/EntityForSelect';
import { RelationPickerHotkeyScope } from '@/object-record/relation-picker/types/RelationPickerHotkeyScope'; import { RelationPickerHotkeyScope } from '@/object-record/relation-picker/types/RelationPickerHotkeyScope';
import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope'; import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope';
import { useCallback, useContext, useState } from 'react'; import { useCallback, useContext, useState } from 'react';
import { isDefined } from 'twenty-ui';
export const useAddNewOpportunity = (position: string) => { export const useAddNewOpportunity = (position: string) => {
const [isCreatingCard, setIsCreatingCard] = useState(false); const [isCreatingCard, setIsCreatingCard] = useState(false);
@@ -20,21 +22,19 @@ export const useAddNewOpportunity = (position: string) => {
const { resetSearchFilter } = useEntitySelectSearch({ const { resetSearchFilter } = useEntitySelectSearch({
relationPickerScopeId: 'relation-picker', relationPickerScopeId: 'relation-picker',
}); });
const { isOpportunitiesCompanyFieldDisabled } =
useIsOpportunitiesCompanyFieldDisabled();
const handleEntitySelect = useCallback( const handleEntitySelect = useCallback(
(company?: EntityForSelect) => { (company?: EntityForSelect) => {
setIsCreatingCard(false); setIsCreatingCard(false);
goBackToPreviousHotkeyScope(); goBackToPreviousHotkeyScope();
resetSearchFilter(); resetSearchFilter();
createOneRecord({
if (company !== undefined) { name: company?.name,
createOneRecord({ companyId: company?.id,
name: company.name, position: position,
companyId: company.id, [selectFieldMetadataItem.name]: columnDefinition.value,
position: position, });
[selectFieldMetadataItem.name]: columnDefinition.value,
});
}
}, },
[ [
columnDefinition, columnDefinition,
@@ -47,11 +47,19 @@ export const useAddNewOpportunity = (position: string) => {
); );
const handleAddNewOpportunityClick = useCallback(() => { const handleAddNewOpportunityClick = useCallback(() => {
setIsCreatingCard(true); if (isOpportunitiesCompanyFieldDisabled) {
handleEntitySelect();
} else {
setIsCreatingCard(true);
}
setHotkeyScopeAndMemorizePreviousScope( setHotkeyScopeAndMemorizePreviousScope(
RelationPickerHotkeyScope.RelationPicker, RelationPickerHotkeyScope.RelationPicker,
); );
}, [setHotkeyScopeAndMemorizePreviousScope]); }, [
setHotkeyScopeAndMemorizePreviousScope,
isOpportunitiesCompanyFieldDisabled,
handleEntitySelect,
]);
const handleCancel = useCallback(() => { const handleCancel = useCallback(() => {
resetSearchFilter(); resetSearchFilter();

View File

@@ -0,0 +1,17 @@
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
export const useIsOpportunitiesCompanyFieldDisabled = () => {
const { objectMetadataItem: opportunityMetadataItem } = useObjectMetadataItem(
{
objectNameSingular: CoreObjectNameSingular.Opportunity,
},
);
const isOpportunitiesCompanyFieldDisabled =
!opportunityMetadataItem.fields.find(
(field) => field.name === CoreObjectNameSingular.Company,
)?.isActive || false;
return {
isOpportunitiesCompanyFieldDisabled,
};
};

View File

@@ -25,6 +25,7 @@ export default defineConfig(({ command, mode }) => {
? path.resolve(__dirname, './tsconfig.build.json') ? path.resolve(__dirname, './tsconfig.build.json')
: path.resolve(__dirname, './tsconfig.dev.json'); : path.resolve(__dirname, './tsconfig.dev.json');
const checkers: Checkers = { const checkers: Checkers = {
overlay: false, overlay: false,
}; };