Skip to content

refactor: [M3-9994] - Remove recompose from NodeBalancers #12240

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

82 changes: 0 additions & 82 deletions packages/manager/src/components/PromiseLoader/PromiseLoader.tsx

This file was deleted.

5 changes: 0 additions & 5 deletions packages/manager/src/components/PromiseLoader/index.ts

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const node: NodeBalancerConfigNodeFields = {
label: '',
mode: 'accept',
modifyStatus: 'new',
port: 80,
port: '80',
weight: 100,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as React from 'react';

import { renderWithTheme } from 'src/utilities/testHelpers';

import NodeBalancerCreate from './NodeBalancerCreate';
import { NodeBalancerCreate } from './NodeBalancerCreate';

const queryMocks = vi.hoisted(() => ({
useNavigate: vi.fn(() => vi.fn()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {
import { scrollErrorIntoView } from '@linode/utilities';
import { useTheme } from '@mui/material';
import useMediaQuery from '@mui/material/useMediaQuery';
import { useNavigate } from '@tanstack/react-router';
import { createLazyRoute, useNavigate } from '@tanstack/react-router';
import { append, clone, compose, defaultTo, lensPath, over } from 'ramda';
import * as React from 'react';

Expand Down Expand Up @@ -98,7 +98,7 @@ const defaultFieldsStates = {
configs: [createNewNodeBalancerConfig(true)],
};

const NodeBalancerCreate = () => {
export const NodeBalancerCreate = () => {
const flags = useFlags();
const { isGeckoLAEnabled } = useIsGeckoEnabled(
flags.gecko2?.enabled,
Expand Down Expand Up @@ -303,7 +303,7 @@ const NodeBalancerCreate = () => {
createNodeBalancer(nodeBalancerRequestData)
.then((nodeBalancer) => {
navigate({
params: { id: String(nodeBalancer.id) },
params: { id: nodeBalancer.id },
to: '/nodebalancers/$id/summary',
});
// Analytics Event
Expand Down Expand Up @@ -810,4 +810,8 @@ export const fieldErrorsToNodePathErrors = (errors: APIError[]) => {
}, []);
};

export default NodeBalancerCreate;
export const nodeBalancerCreateLazyRoute = createLazyRoute(
'/nodebalancers/create'
)({
component: NodeBalancerCreate,
});

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,38 +1,34 @@
import { useNodebalancerDeleteMutation } from '@linode/queries';
import {
useNodebalancerDeleteMutation,
useNodeBalancerQuery,
} from '@linode/queries';
import { Notice, Typography } from '@linode/ui';
import { useMatch, useNavigate } from '@tanstack/react-router';
import * as React from 'react';
import React from 'react';

import { TypeToConfirmDialog } from 'src/components/TypeToConfirmDialog/TypeToConfirmDialog';

import type { APIError, NodeBalancer } from '@linode/api-v4';

interface Props {
isFetching: boolean;
nodeBalancerError: APIError[] | null;
open: boolean;
selectedNodeBalancer: NodeBalancer | undefined;
id: number;
onClose: () => void;
onSuccess?: () => void;
}

export const NodeBalancerDeleteDialog = ({
isFetching,
nodeBalancerError,
open,
selectedNodeBalancer,
}: Props) => {
const navigate = useNavigate();
const match = useMatch({
strict: false,
});
const { error, isPending, mutateAsync } = useNodebalancerDeleteMutation(
selectedNodeBalancer?.id ?? -1
);
export const NodeBalancerDeleteDialog = (props: Props) => {
const { id, onSuccess, onClose } = props;

const {
data: nodebalancer,
error: entityError,
isLoading,
} = useNodeBalancerQuery(id);

const { error, isPending, mutateAsync } = useNodebalancerDeleteMutation(id);

const label = selectedNodeBalancer?.label;
const label = nodebalancer?.label;

const onDelete = async () => {
await mutateAsync();
navigate({ to: '/nodebalancers' });
onSuccess?.();
};

return (
Expand All @@ -42,23 +38,15 @@ export const NodeBalancerDeleteDialog = ({
name: label,
primaryBtnText: 'Delete',
type: 'NodeBalancer',
error: nodeBalancerError,
error: entityError,
}}
errors={error ?? undefined}
errors={error}
expand
label={'NodeBalancer Label'}
loading={isPending || isFetching}
loading={isPending || isLoading}
onClick={onDelete}
onClose={
match.routeId === '/nodebalancers/$id/settings/delete'
? () =>
navigate({
params: { id: String(selectedNodeBalancer?.id) },
to: '/nodebalancers/$id/settings',
})
: () => navigate({ to: '/nodebalancers' })
}
open={open}
onClose={onClose}
open
title={`Delete ${label ?? 'Unknown'}?`}
typographyStyle={{ marginTop: '20px' }}
>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { Drawer } from '@linode/ui';
import { createLazyRoute, useNavigate, useParams } from '@tanstack/react-router';

Check warning on line 2 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerAddFirewallDrawer.tsx

View workflow job for this annotation

GitHub Actions / ESLint Review (manager)

[eslint] reported by reviewdog 🐢 Replace `·createLazyRoute,·useNavigate,·useParams·` with `⏎··createLazyRoute,⏎··useNavigate,⏎··useParams,⏎` Raw Output: {"ruleId":"prettier/prettier","severity":1,"message":"Replace `·createLazyRoute,·useNavigate,·useParams·` with `⏎··createLazyRoute,⏎··useNavigate,⏎··useParams,⏎`","line":2,"column":9,"nodeType":null,"messageId":"replace","endLine":2,"endColumn":50,"fix":{"range":[45,86],"text":"
import React from 'react';

import { AddFirewallForm } from 'src/features/Linodes/LinodesDetail/LinodeNetworking/LinodeFirewalls/AddFirewallForm';

const NodeBalancerAddFirewallDrawer = () => {
const { id } = useParams({
from: '/nodebalancers/$id/settings/add-firewall',
});
const navigate = useNavigate();

const onClose = () => {
navigate({ to: '..' });
};

return (
<Drawer onClose={onClose} open title="Add Firewall">
<AddFirewallForm
entityId={id}
entityType="nodebalancer"
onCancel={onClose}
/>
</Drawer>
);
};

export const nodeBalancerSettingsAddFirewallLazyRoute = createLazyRoute(
'/nodebalancers/$id/settings/add-firewall'
)({
component: NodeBalancerAddFirewallDrawer,
});
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
nodeBalancerConfigFactory,
nodeBalancerConfigNodeFactory,
} from '@linode/utilities';
import { QueryClient } from '@tanstack/react-query';
import { waitForElementToBeRemoved } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import * as React from 'react';
Expand All @@ -10,12 +11,16 @@
import { http, HttpResponse, server } from 'src/mocks/testServer';
import { renderWithTheme } from 'src/utilities/testHelpers';

import NodeBalancerConfigurations from './NodeBalancerConfigurations';
import { NodeBalancerConfigurations } from './NodeBalancerConfigurations';

const props = {
grants: undefined,
configId: undefined,

Check warning on line 18 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx

View workflow job for this annotation

GitHub Actions / ESLint Review (manager)

[eslint] reported by reviewdog 🐢 Use null instead. Raw Output: {"ruleId":"sonarjs/no-undefined-assignment","severity":1,"message":"Use null instead.","line":18,"column":13,"nodeType":"Identifier","messageId":"useNull","endLine":18,"endColumn":22}
configs: [],
nodeBalancerLabel: 'nb-1',
nodeBalancerRegion: 'us-east',
nodeBalancerId: 1,
queryClient: new QueryClient(),
params: {
nodeBalancerId: '1',
},
Expand Down Expand Up @@ -55,7 +60,7 @@
}
);

expect(getByTestId(loadingTestId)).toBeInTheDocument();

Check failure on line 63 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx

View workflow job for this annotation

GitHub Actions / test-manager

src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx > NodeBalancerConfigurations > renders the NodeBalancerConfigurations component with one configuration

TestingLibraryElementError: Unable to find an element by: [data-testid="circle-progress"] Ignored nodes: comments, script, style <body> <div> <div> <div class="MuiBox-root css-1yuhvjn" > <button aria-disabled="false" class="MuiButtonBase-root MuiButton-root MuiButton-outlined MuiButton-outlinedSecondary MuiButton-sizeMedium MuiButton-outlinedSizeMedium MuiButton-colorSecondary MuiButton-root MuiButton-outlined MuiButton-outlinedSecondary MuiButton-sizeMedium MuiButton-outlinedSizeMedium MuiButton-colorSecondary css-b4oyne-MuiButtonBase-root-MuiButton-root-StyledConfigsButton" data-qa-add-config="true" data-testid="button" tabindex="0" type="button" > Add a Configuration </button> </div> </div> </div> </body> ❯ Object.getElementError ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/config.js:37:19 ❯ ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:76:38 ❯ ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:52:17 ❯ getByTestId ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:95:19 ❯ src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx:63:12

await waitForElementToBeRemoved(getByTestId(loadingTestId));

Expand Down Expand Up @@ -112,7 +117,7 @@
}
);

expect(getByTestId(loadingTestId)).toBeInTheDocument();

Check failure on line 120 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx

View workflow job for this annotation

GitHub Actions / test-manager

src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx > NodeBalancerConfigurations > renders the NodeBalancerConfigurations component with no configurations

TestingLibraryElementError: Unable to find an element by: [data-testid="circle-progress"] Ignored nodes: comments, script, style <body> <div> <div> <div class="MuiBox-root css-1yuhvjn" > <button aria-disabled="false" class="MuiButtonBase-root MuiButton-root MuiButton-outlined MuiButton-outlinedSecondary MuiButton-sizeMedium MuiButton-outlinedSizeMedium MuiButton-colorSecondary MuiButton-root MuiButton-outlined MuiButton-outlinedSecondary MuiButton-sizeMedium MuiButton-outlinedSizeMedium MuiButton-colorSecondary css-b4oyne-MuiButtonBase-root-MuiButton-root-StyledConfigsButton" data-qa-add-config="true" data-testid="button" tabindex="0" type="button" > Add a Configuration </button> </div> </div> </div> </body> ❯ Object.getElementError ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/config.js:37:19 ❯ ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:76:38 ❯ ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:52:17 ❯ getByTestId ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:95:19 ❯ src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx:120:12

await waitForElementToBeRemoved(getByTestId(loadingTestId));

Expand Down Expand Up @@ -140,7 +145,7 @@
}
);

expect(getByTestId(loadingTestId)).toBeInTheDocument();

Check failure on line 148 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx

View workflow job for this annotation

GitHub Actions / test-manager

src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx > NodeBalancerConfigurations > adds another configuration

TestingLibraryElementError: Unable to find an element by: [data-testid="circle-progress"] Ignored nodes: comments, script, style <body> <div> <div> <div class="MuiBox-root css-1yuhvjn" > <button aria-disabled="false" class="MuiButtonBase-root MuiButton-root MuiButton-outlined MuiButton-outlinedSecondary MuiButton-sizeMedium MuiButton-outlinedSizeMedium MuiButton-colorSecondary MuiButton-root MuiButton-outlined MuiButton-outlinedSecondary MuiButton-sizeMedium MuiButton-outlinedSizeMedium MuiButton-colorSecondary css-b4oyne-MuiButtonBase-root-MuiButton-root-StyledConfigsButton" data-qa-add-config="true" data-testid="button" tabindex="0" type="button" > Add a Configuration </button> </div> </div> </div> </body> ❯ Object.getElementError ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/config.js:37:19 ❯ ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:76:38 ❯ ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:52:17 ❯ getByTestId ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:95:19 ❯ src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx:148:12

await waitForElementToBeRemoved(getByTestId(loadingTestId));

Expand Down Expand Up @@ -175,7 +180,7 @@
}
);

expect(getByTestId(loadingTestId)).toBeInTheDocument();

Check failure on line 183 in packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx

View workflow job for this annotation

GitHub Actions / test-manager

src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx > NodeBalancerConfigurations > opens the Delete Configuration dialog

TestingLibraryElementError: Unable to find an element by: [data-testid="circle-progress"] Ignored nodes: comments, script, style <body> <div> <div> <div class="MuiBox-root css-1yuhvjn" > <button aria-disabled="false" class="MuiButtonBase-root MuiButton-root MuiButton-outlined MuiButton-outlinedSecondary MuiButton-sizeMedium MuiButton-outlinedSizeMedium MuiButton-colorSecondary MuiButton-root MuiButton-outlined MuiButton-outlinedSecondary MuiButton-sizeMedium MuiButton-outlinedSizeMedium MuiButton-colorSecondary css-b4oyne-MuiButtonBase-root-MuiButton-root-StyledConfigsButton" data-qa-add-config="true" data-testid="button" tabindex="0" type="button" > Add a Configuration </button> </div> </div> </div> </body> ❯ Object.getElementError ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/config.js:37:19 ❯ ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:76:38 ❯ ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:52:17 ❯ getByTestId ../../node_modules/.pnpm/@testing-library[email protected]/node_modules/@testing-library/dom/dist/query-helpers.js:95:19 ❯ src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerConfigurations.test.tsx:183:12

await waitForElementToBeRemoved(getByTestId(loadingTestId));

Expand Down
Loading
Loading