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

@ -1,5 +1,6 @@
import React from 'react';
import styled from '@emotion/styled';
import { isNonEmptyString } from '@sniptt/guards';
import { useRecoilValue } from 'recoil';
import { useOnboardingStatus } from '@/auth/hooks/useOnboardingStatus.ts';
@ -17,6 +18,7 @@ import { Button } from '@/ui/input/button/components/Button.tsx';
import { SubMenuTopBarContainer } from '@/ui/layout/page/SubMenuTopBarContainer';
import { Section } from '@/ui/layout/section/components/Section.tsx';
import { useBillingPortalSessionQuery } from '~/generated/graphql.tsx';
import { isNonNullable } from '~/utils/isNonNullable';
const StyledH1Title = styled(H1Title)`
margin-bottom: 0;
@ -44,13 +46,13 @@ export const SettingsBilling = () => {
onboardingStatus === OnboardingStatus.Canceled;
const openBillingPortal = () => {
if (data) {
if (isNonNullable(data)) {
window.location.replace(data.billingPortalSession.url);
}
};
const openChat = () => {
if (supportChat.supportDriver) {
if (isNonEmptyString(supportChat.supportDriver)) {
window.FrontChat?.('show');
} else {
window.location.href =

View File

@ -1,6 +1,7 @@
import { useEffect, useMemo } from 'react';
import { useNavigate, useParams } from 'react-router-dom';
import styled from '@emotion/styled';
import { isNonEmptyString } from '@sniptt/guards';
import { useFieldMetadataItem } from '@/object-metadata/hooks/useFieldMetadataItem';
import { useGetRelationMetadata } from '@/object-metadata/hooks/useGetRelationMetadata';
@ -154,12 +155,12 @@ export const SettingsObjectFieldEdit = () => {
try {
if (
validatedFormValues.type === FieldMetadataType.Relation &&
relationFieldMetadataItem?.id &&
isNonEmptyString(relationFieldMetadataItem?.id) &&
hasRelationFormChanged
) {
await editMetadataField({
icon: validatedFormValues.relation.field.icon,
id: relationFieldMetadataItem.id,
id: relationFieldMetadataItem?.id,
label: validatedFormValues.relation.field.label,
});
}

View File

@ -28,6 +28,7 @@ import { Breadcrumb } from '@/ui/navigation/bread-crumb/components/Breadcrumb';
import { View } from '@/views/types/View';
import { ViewType } from '@/views/types/ViewType';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { isNullable } from '~/utils/isNullable';
const StyledSettingsObjectFieldTypeSelect = styled(
SettingsDataModelFieldTypeSelect,
@ -95,7 +96,7 @@ export const SettingsObjectNewFieldStep2 = () => {
onCompleted: async (data: ObjectRecordConnection<View>) => {
const views = data.edges;
if (!views) return;
if (isNullable(views)) return;
setObjectViews(data.edges.map(({ node }) => node));
},
@ -111,7 +112,7 @@ export const SettingsObjectNewFieldStep2 = () => {
onCompleted: async (data: ObjectRecordConnection<View>) => {
const views = data.edges;
if (!views) return;
if (isNullable(views)) return;
setRelationObjectViews(data.edges.map(({ node }) => node));
},

View File

@ -1,6 +1,7 @@
import { useEffect, useState } from 'react';
import { useNavigate, useParams } from 'react-router-dom';
import styled from '@emotion/styled';
import { isNonEmptyString } from '@sniptt/guards';
import { DateTime } from 'luxon';
import { useRecoilState } from 'recoil';
@ -25,6 +26,7 @@ import { SubMenuTopBarContainer } from '@/ui/layout/page/SubMenuTopBarContainer'
import { Section } from '@/ui/layout/section/components/Section';
import { Breadcrumb } from '@/ui/navigation/bread-crumb/components/Breadcrumb';
import { useGenerateApiKeyTokenMutation } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable';
const StyledInfo = styled.span`
color: ${({ theme }) => theme.font.color.light};
@ -101,15 +103,15 @@ export const SettingsDevelopersApiKeyDetail = () => {
};
const regenerateApiKey = async () => {
if (apiKeyData?.name) {
if (isNonEmptyString(apiKeyData?.name)) {
const newExpiresAt = computeNewExpirationDate(
apiKeyData.expiresAt,
apiKeyData.createdAt,
apiKeyData?.expiresAt,
apiKeyData?.createdAt,
);
const apiKey = await createIntegration(apiKeyData.name, newExpiresAt);
const apiKey = await createIntegration(apiKeyData?.name, newExpiresAt);
await deleteIntegration(false);
if (apiKey && apiKey.token) {
if (isNonEmptyString(apiKey?.token)) {
setGeneratedApi(apiKey.id, apiKey.token);
navigate(`/settings/developers/api-keys/${apiKey.id}`);
}
@ -117,7 +119,7 @@ export const SettingsDevelopersApiKeyDetail = () => {
};
useEffect(() => {
if (apiKeyData) {
if (isNonNullable(apiKeyData)) {
return () => {
setGeneratedApi(apiKeyId, null);
};

View File

@ -18,6 +18,7 @@ import { SubMenuTopBarContainer } from '@/ui/layout/page/SubMenuTopBarContainer'
import { Section } from '@/ui/layout/section/components/Section';
import { Breadcrumb } from '@/ui/navigation/bread-crumb/components/Breadcrumb';
import { useGenerateApiKeyTokenMutation } from '~/generated/graphql';
import { isNonNullable } from '~/utils/isNonNullable';
export const SettingsDevelopersApiKeysNew = () => {
const [generateOneApiKeyToken] = useGenerateApiKeyTokenMutation();
@ -54,7 +55,7 @@ export const SettingsDevelopersApiKeysNew = () => {
expiresAt: expiresAt,
},
});
if (tokenData.data?.generateApiKeyToken) {
if (isNonNullable(tokenData.data?.generateApiKeyToken)) {
setGeneratedApi(newApiKey.id, tokenData.data.generateApiKeyToken.token);
navigate(`/settings/developers/api-keys/${newApiKey.id}`);
}