TWNTY-3794 - ESLint rule: only take explicit boolean predicates in if statements (#4354)

* ESLint rule: only take explicit boolean predicates in if statements

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Merge main

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Fix frontend linter errors

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Fix jest

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Refactor according to review

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Refactor according to review

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

* Fix lint on new code

Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>

---------

Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com>
Co-authored-by: v1b3m <vibenjamin6@gmail.com>
Co-authored-by: Toledodev <rafael.toledo@engenharia.ufjf.br>
This commit is contained in:
gitstart-app[bot]
2024-03-09 10:48:19 +01:00
committed by GitHub
parent 40bea0d95e
commit 17511be0cf
164 changed files with 655 additions and 367 deletions

View File

@ -8,6 +8,7 @@ import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope';
import { EditableFilterChip } from '@/views/components/EditableFilterChip';
import { useViewBar } from '@/views/hooks/useViewBar';
import { ViewFilter } from '@/views/types/ViewFilter';
import { isNonNullable } from '~/utils/isNonNullable';
type EditableFilterDropdownButtonProps = {
viewFilterDropdownId: string;
@ -39,7 +40,7 @@ export const EditableFilterDropdownButton = ({
filterDefinition.fieldMetadataId === viewFilter.fieldMetadataId,
);
if (filterDefinition) {
if (isNonNullable(filterDefinition)) {
setFilterDefinitionUsedInDropdown(filterDefinition);
setSelectedOperandInDropdown(viewFilter.operand);
setSelectedFilter(viewFilter);

View File

@ -7,6 +7,8 @@ import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
import { useViewBar } from '@/views/hooks/useViewBar';
import { GraphQLView } from '@/views/types/GraphQLView';
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
import { isNonNullable } from '~/utils/isNonNullable';
import { isNullable } from '~/utils/isNullable';
import { useViewScopedStates } from '../hooks/internal/useViewScopedStates';
@ -50,11 +52,11 @@ export const ViewBarEffect = () => {
newViews[0] ??
null;
if (!currentView) return;
if (isNullable(currentView)) return;
setCurrentViewId(currentView.id);
if (currentView?.viewFields) {
if (isNonNullable(currentView?.viewFields)) {
loadViewFields(currentView.viewFields, currentView.id);
loadViewFilters(currentView.viewFilters, currentView.id);
loadViewSorts(currentView.viewSorts, currentView.id);

View File

@ -5,6 +5,7 @@ import { useRecoilValue } from 'recoil';
import { useFilterDropdown } from '@/object-record/object-filter-dropdown/hooks/useFilterDropdown';
import { Filter } from '@/object-record/object-filter-dropdown/types/Filter';
import { useViewScopedStates } from '@/views/hooks/internal/useViewScopedStates';
import { isNonNullable } from '~/utils/isNonNullable';
type ViewBarFilterEffectProps = {
filterDropdownId: string;
@ -31,11 +32,11 @@ export const ViewBarFilterEffect = ({
} = useFilterDropdown({ filterDropdownId });
useEffect(() => {
if (availableFilterDefinitions) {
if (isNonNullable(availableFilterDefinitions)) {
setAvailableFilterDefinitions(availableFilterDefinitions);
}
if (onFilterSelect) {
if (isNonNullable(onFilterSelect)) {
setOnFilterSelect(() => onFilterSelect);
}
}, [

View File

@ -4,6 +4,7 @@ import { useRecoilValue } from 'recoil';
import { useSortDropdown } from '@/object-record/object-sort-dropdown/hooks/useSortDropdown';
import { Sort } from '@/object-record/object-sort-dropdown/types/Sort';
import { useViewScopedStates } from '@/views/hooks/internal/useViewScopedStates';
import { isNonNullable } from '~/utils/isNonNullable';
type ViewBarSortEffectProps = {
sortDropdownId: string;
@ -25,10 +26,10 @@ export const ViewBarSortEffect = ({
});
useEffect(() => {
if (availableSortDefinitions) {
if (isNonNullable(availableSortDefinitions)) {
setAvailableSortDefinitions(availableSortDefinitions);
}
if (onSortSelect) {
if (isNonNullable(onSortSelect)) {
setOnSortSelect(() => onSortSelect);
}
}, [

View File

@ -1,6 +1,7 @@
import { useMemo } from 'react';
import { useParams, useSearchParams } from 'react-router-dom';
import { useApolloClient } from '@apollo/client';
import { isNonEmptyString } from '@sniptt/guards';
import qs from 'qs';
import { useRecoilCallback } from 'recoil';
import z from 'zod';
@ -15,6 +16,7 @@ import { ObjectRecord } from '@/object-record/types/ObjectRecord';
import { ViewFilter } from '@/views/types/ViewFilter';
import { ViewFilterOperand } from '@/views/types/ViewFilterOperand';
import { isNonNullable } from '~/utils/isNonNullable';
import { isNullable } from '~/utils/isNullable';
const filterQueryParamsSchema = z.object({
filter: z.record(
@ -69,7 +71,7 @@ export const useFiltersFromQueryParams = () => {
field: fieldMetadataItem,
});
if (!filterDefinition) return null;
if (isNullable(filterDefinition)) return null;
const relationObjectMetadataNameSingular =
fieldMetadataItem.toRelationMetadata?.fromObjectMetadata
@ -94,8 +96,8 @@ export const useFiltersFromQueryParams = () => {
const relationRecordNames = [];
if (
relationObjectMetadataNamePlural &&
relationObjectMetadataItem &&
isNonEmptyString(relationObjectMetadataNamePlural) &&
isNonNullable(relationObjectMetadataItem) &&
Array.isArray(filterValueFromURL)
) {
const queryResult = await apolloClient.query<

View File

@ -8,6 +8,7 @@ import { Sort } from '@/object-record/object-sort-dropdown/types/Sort';
import { savedViewSortsScopedFamilyState } from '@/views/states/savedViewSortsScopedFamilyState';
import { ViewSort } from '@/views/types/ViewSort';
import { getViewScopedStateValuesFromSnapshot } from '@/views/utils/getViewScopedStateValuesFromSnapshot';
import { isNullable } from '~/utils/isNullable';
import { useViewScopedStates } from './useViewScopedStates';
@ -42,7 +43,7 @@ export const useViewSorts = (viewScopeId: string) => {
return;
}
if (!currentViewSorts) {
if (isNullable(currentViewSorts)) {
return;
}
if (!savedViewSortsByKey) {

View File

@ -1,5 +1,6 @@
import { useCallback } from 'react';
import { useSearchParams } from 'react-router-dom';
import { isNonEmptyString } from '@sniptt/guards';
import { useRecoilCallback, useRecoilState, useSetRecoilState } from 'recoil';
import { v4 } from 'uuid';
@ -9,6 +10,7 @@ import { ViewFilter } from '@/views/types/ViewFilter';
import { ViewSort } from '@/views/types/ViewSort';
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
import { isNonNullable } from '~/utils/isNonNullable';
import { isNullable } from '~/utils/isNullable';
import { ViewScopeInternalContext } from '../scopes/scope-internal-context/ViewScopeInternalContext';
import { currentViewFieldsScopedFamilyState } from '../states/currentViewFieldsScopedFamilyState';
@ -112,7 +114,7 @@ export const useViewBar = (props?: UseViewProps) => {
viewId: currentViewId,
});
if (!availableFieldDefinitions) {
if (isNullable(availableFieldDefinitions)) {
return;
}
@ -152,7 +154,7 @@ export const useViewBar = (props?: UseViewProps) => {
viewId: currentViewId,
});
if (!availableFilterDefinitions) {
if (isNullable(availableFilterDefinitions)) {
return;
}
@ -267,11 +269,11 @@ export const useViewBar = (props?: UseViewProps) => {
viewScopeId: scopeId,
});
if (savedViewFilters) {
if (isNonNullable(savedViewFilters)) {
set(currentViewFiltersState, savedViewFilters);
onViewFiltersChange?.(savedViewFilters);
}
if (savedViewSorts) {
if (isNonNullable(savedViewSorts)) {
set(currentViewSortsState, savedViewSorts);
onViewSortsChange?.(savedViewSorts);
}
@ -388,7 +390,7 @@ export const useViewBar = (props?: UseViewProps) => {
return;
}
if (viewEditMode === 'create' && name) {
if (viewEditMode === 'create' && isNonEmptyString(name)) {
await createView(name);
// Temporary to force refetch

View File

@ -3,6 +3,7 @@ import { ColumnDefinition } from '@/object-record/record-table/types/ColumnDefin
import { mapArrayToObject } from '~/utils/array/mapArrayToObject';
import { moveArrayItem } from '~/utils/array/moveArrayItem';
import { isNonNullable } from '~/utils/isNonNullable';
import { isNullable } from '~/utils/isNullable';
import { ViewField } from '../types/ViewField';
@ -25,11 +26,11 @@ export const mapViewFieldsToColumnDefinitions = ({
const correspondingColumnDefinition =
columnDefinitionsByFieldMetadataId[viewField.fieldMetadataId];
if (!correspondingColumnDefinition) return null;
if (isNullable(correspondingColumnDefinition)) return null;
const { isLabelIdentifier } = correspondingColumnDefinition;
if (isLabelIdentifier) {
if (isLabelIdentifier === true) {
labelIdentifierFieldMetadataId =
correspondingColumnDefinition.fieldMetadataId;
}