Skip to content
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

#8980 Remove standalone mod api calls #9006

Merged
merged 9 commits into from
Aug 14, 2024
Merged
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
4 changes: 2 additions & 2 deletions end-to-end-tests/tests/telemetry/errors.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ test("can report errors to telemetry service", async ({
extensionId,
}) => {
const endpointCalledFromExtensionConsole =
"https://app.pixiebrix.com/api/extensions/";
"https://app.pixiebrix.com/api/registry/bricks/";
await test.step("Mock the extensions endpoint to return a bad response, and mock errorService calls", async () => {
await context.route(endpointCalledFromExtensionConsole, async (route) => {
await route.fulfill({
Expand All @@ -80,7 +80,7 @@ test("can report errors to telemetry service", async ({
});

await page.goto(getBaseExtensionConsoleUrl(extensionId));
await expect(page.getByText("Something went wrong.")).toBeVisible();
await expect(page.getByText("An error occurred")).toBeVisible();

const sentErrors = await getErrorsFromRequest(extensionId, context);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,8 @@ import type { Deployment } from "@/types/contract";
import type { OptionsArgs } from "@/types/runtimeTypes";
import type { IntegrationDependency } from "@/integrations/integrationTypes";
import { nowTimestamp } from "@/utils/timeUtils";
import { type UUID } from "@/types/stringTypes";

export type ActivateModComponentParam = {
modComponentId?: UUID;
modComponentDefinition: ModComponentDefinition;
modDefinition: ModDefinition;
deployment?: Deployment;
Expand All @@ -54,7 +52,6 @@ export type ActivateModComponentParam = {
export function mapModComponentDefinitionToActivatedModComponent<
Config extends UnknownObject = UnknownObject,
>({
modComponentId,
modComponentDefinition,
modDefinition,
deployment,
Expand All @@ -64,7 +61,7 @@ export function mapModComponentDefinitionToActivatedModComponent<
const timestamp = nowTimestamp();

const activatedModComponent = {
id: modComponentId ?? uuidv4(),
id: uuidv4(),
// Default to `v1` for backward compatability
apiVersion: modDefinition.apiVersion ?? "v1",
_recipe: pickModDefinitionMetadata(modDefinition),
Expand Down
10 changes: 1 addition & 9 deletions src/activation/useActivateMod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import { Events } from "@/telemetry/events";
import { reloadModsEveryTab } from "@/contentScript/messenger/api";
import { autoCreateDatabaseOptionsArgsInPlace } from "@/activation/modOptionsHelpers";
import { type ReportEventData } from "@/telemetry/telemetryTypes";
import { type UUID } from "@/types/stringTypes";

export type ActivateResult = {
success: boolean;
Expand All @@ -44,13 +43,11 @@ export type ActivateModFormCallback =
*
* @param formValues The form values for mod configuration options
* @param modDefinition The mod definition to activate
* @param options Internal options/flags
* @returns a promise that resolves to an ActivateResult
*/
(
formValues: WizardValues,
modDefinition: ModDefinition,
options?: { forceModComponentId?: UUID },
) => Promise<ActivateResult>;

type ActivationSource = "marketplace" | "extensionConsole";
Expand Down Expand Up @@ -83,11 +80,7 @@ function useActivateMod(
const [createDatabase] = useCreateDatabaseMutation();

return useCallback(
async (
formValues: WizardValues,
modDefinition: ModDefinition,
{ forceModComponentId }: { forceModComponentId?: UUID } = {},
) => {
async (formValues: WizardValues, modDefinition: ModDefinition) => {
const isReactivate = activatedModComponents.some(
(x) => x._recipe?.id === modDefinition.metadata.id,
);
Expand Down Expand Up @@ -161,7 +154,6 @@ function useActivateMod(

dispatch(
modComponentsSlice.actions.activateMod({
forceModComponentId,
modDefinition,
configuredDependencies: integrationDependencies,
optionsArgs,
Expand Down
46 changes: 0 additions & 46 deletions src/data/service/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import {
type PendingInvitation,
type RetrieveRecipeResponse,
type RemoteIntegrationConfig,
type StandaloneModDefinition,
UserRole,
} from "@/types/contract";
import { type components } from "@/types/swagger";
Expand All @@ -45,7 +44,6 @@ import {
type UnsavedModDefinition,
} from "@/types/modDefinitionTypes";
import baseQuery from "@/data/service/baseQuery";
import type { ModComponentBase } from "@/types/modComponentTypes";
import { type InstalledDeployment } from "@/utils/deploymentUtils";
import { type Me, transformMeResponse } from "@/data/model/Me";
import { type UserMilestone } from "@/data/model/UserMilestone";
Expand Down Expand Up @@ -227,47 +225,6 @@ export const appApi = createApi({
query: () => ({ url: "/api/bricks/", method: "get" }),
providesTags: ["EditablePackages"],
}),
getAllStandaloneModDefinitions: builder.query<
StandaloneModDefinition[],
void
>({
query: () => ({ url: "/api/extensions/", method: "get" }),
providesTags: ["StandaloneModDefinitions"],
}),
getStandaloneModDefinition: builder.query<
StandaloneModDefinition,
{ modComponentId: UUID }
>({
query: ({ modComponentId }) => ({
url: `/api/extensions/${modComponentId}/`,
method: "get",
}),
providesTags: (result, error, { modComponentId }) => [
{ type: "StandaloneModDefinitions", modComponentId },
"StandaloneModDefinitions",
],
}),
deleteStandaloneModDefinition: builder.mutation<
StandaloneModDefinition,
{ extensionId: UUID }
>({
query: ({ extensionId }) => ({
url: `/api/extensions/${extensionId}/`,
method: "delete",
}),
invalidatesTags: ["StandaloneModDefinitions"],
}),
saveStandaloneModDefinition: builder.mutation<
StandaloneModDefinition,
{ modComponent: ModComponentBase & { updateTimestamp: string } }
>({
query: ({ modComponent }) => ({
url: `/api/extensions/${modComponent.id}/`,
method: "put",
data: modComponent,
}),
invalidatesTags: ["StandaloneModDefinitions"],
}),
getModDefinition: builder.query<ModDefinition, { modId: RegistryId }>({
query: ({ modId }) => ({
// TODO: switch endpoint https://github.com/pixiebrix/pixiebrix-app/issues/4355
Expand Down Expand Up @@ -483,9 +440,6 @@ export const {
useGetMarketplaceTagsQuery,
useGetOrganizationsQuery,
useGetZapierKeyQuery,
useGetStandaloneModDefinitionQuery,
useGetAllStandaloneModDefinitionsQuery,
useDeleteStandaloneModDefinitionMutation,
useGetEditablePackagesQuery,
useGetModDefinitionQuery,
useCreateModDefinitionMutation,
Expand Down
10 changes: 2 additions & 8 deletions src/extensionConsole/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ import Sidebar from "@/extensionConsole/Sidebar";
import { Route, Switch } from "react-router-dom";
import { ConnectedRouter } from "connected-react-router";
import EnvironmentBanner from "@/layout/EnvironmentBanner";
import ActivateModDefinitionIdPage from "@/extensionConsole/pages/activateMod/ActivateModDefinitionIdPage";
import ActivateStandaloneModDefinitionIdPage from "@/extensionConsole/pages/activateMod/ActivateStandaloneModDefinitionIdPage";
import SetupPage from "@/extensionConsole/pages/onboarding/SetupPage";
import UpdateBanner from "@/extensionConsole/pages/UpdateBanner";
import registerBuiltinBricks from "@/bricks/registerBuiltinBricks";
Expand All @@ -55,6 +53,7 @@ import ReduxPersistenceContext, {
import IDBErrorDisplay from "@/extensionConsole/components/IDBErrorDisplay";
import { DeploymentsProvider } from "@/extensionConsole/pages/deployments/DeploymentsContext";
import DatabaseUnresponsiveBanner from "@/components/DatabaseUnresponsiveBanner";
import ActivateModPage from "@/extensionConsole/pages/activateMod/ActivateModPage";

// Register the built-in bricks
registerEditors();
Expand Down Expand Up @@ -86,15 +85,10 @@ const AuthenticatedContent: React.VFC = () => {
<div className="content-wrapper">
<ErrorBoundary ErrorComponent={IDBErrorDisplay}>
<Switch>
<Route
exact
path="/extensions/install/:modComponentId"
component={ActivateStandaloneModDefinitionIdPage}
/>
<Route
exact
path="/:sourcePage/activate/:registryId"
component={ActivateModDefinitionIdPage}
component={ActivateModPage}
/>

<Route exact path="/settings" component={SettingsPage} />
Expand Down
8 changes: 2 additions & 6 deletions src/extensionConsole/pages/activateMod/ActivateModCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ import Markdown from "@/components/Markdown";
import { getModActivationInstructions } from "@/utils/modUtils";
import { type ModDefinition } from "@/types/modDefinitionTypes";
import { isInternalRegistryId } from "@/utils/registryUtils";
import { type UUID } from "@/types/stringTypes";
import { assertNotNullish } from "@/utils/nullishUtils";

const WizardHeader: React.VoidFunctionComponent<{
Expand Down Expand Up @@ -76,8 +75,7 @@ const WizardHeader: React.VoidFunctionComponent<{
const ActivateModCard: React.FC<{
modDefinition: ModDefinition;
isReactivate: boolean;
forceModComponentId?: UUID;
}> = ({ modDefinition, isReactivate, forceModComponentId }) => {
}> = ({ modDefinition, isReactivate }) => {
const dispatch = useDispatch();

const {
Expand Down Expand Up @@ -141,9 +139,7 @@ const ActivateModCard: React.FC<{
);

const onSubmit: OnSubmit<WizardValues> = async (values) => {
const { success, error } = await activateMod(values, modDefinition, {
forceModComponentId,
});
const { success, error } = await activateMod(values, modDefinition);

if (success) {
notify.success(`Activated ${modDefinition.metadata.name}`);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

import React from "react";
import { render } from "@/extensionConsole/testHelpers";
import ActivateModDefinitionIdPage from "@/extensionConsole/pages/activateMod/ActivateModDefinitionIdPage";
import { waitForEffect } from "@/testUtils/testHelpers";
import { screen } from "@testing-library/react";
import registerDefaultWidgets from "@/components/fields/schemaFields/widgets/registerDefaultWidgets";
Expand All @@ -37,6 +36,7 @@ import useActivateMod, {
type ActivateModFormCallback,
} from "@/activation/useActivateMod";
import { minimalSchemaFactory } from "@/utils/schemaUtils";
import ActivateModPage from "@/extensionConsole/pages/activateMod/ActivateModPage";

registerDefaultWidgets();

Expand Down Expand Up @@ -81,16 +81,16 @@ beforeEach(() => {
activateModHookMock.mockReturnValue(activateModCallbackMock);
});

const ActivateModDefinitionIdPageWrapper: React.FC = () => (
const ActivateModDefinitionPageWrapper: React.FC = () => (
<MemoryRouter>
<ActivateModDefinitionIdPage />
<ActivateModPage />
</MemoryRouter>
);

describe("ActivateModDefinitionIdPage", () => {
describe("ActivateModDefinitionPage", () => {
test("renders", async () => {
setupMod(defaultModDefinitionFactory());
const { asFragment } = render(<ActivateModDefinitionIdPageWrapper />);
const { asFragment } = render(<ActivateModDefinitionPageWrapper />);
await waitForEffect();
expect(asFragment()).toMatchSnapshot();
});
Expand All @@ -101,7 +101,7 @@ describe("ActivateModDefinitionIdPage", () => {
extensionPoints: [modComponentDefinitionFactory({ services: null })],
}),
);
const { asFragment } = render(<ActivateModDefinitionIdPageWrapper />);
const { asFragment } = render(<ActivateModDefinitionPageWrapper />);
await waitForEffect();
expect(asFragment()).toMatchSnapshot();
});
Expand Down Expand Up @@ -134,7 +134,7 @@ describe("ActivateModDefinitionIdPage", () => {
});
setupMod(modDefinition);

const { asFragment } = render(<ActivateModDefinitionIdPageWrapper />);
const { asFragment } = render(<ActivateModDefinitionPageWrapper />);
await waitForEffect();
expect(asFragment()).toMatchSnapshot();
await userEvent.click(screen.getByText("Activate"));
Expand All @@ -155,7 +155,7 @@ describe("ActivateModDefinitionIdPage", () => {
});
setupMod(modDefinition);

const { asFragment } = render(<ActivateModDefinitionIdPageWrapper />);
const { asFragment } = render(<ActivateModDefinitionPageWrapper />);
await waitForEffect();
expect(asFragment()).toMatchSnapshot();
await userEvent.click(screen.getByText("Activate"));
Expand All @@ -167,8 +167,6 @@ describe("ActivateModDefinitionIdPage", () => {
integrationDependencies: [],
},
modDefinition,
// Is provided for standalone mod activation
{ forceModComponentId: undefined },
);
});

Expand All @@ -191,7 +189,7 @@ describe("ActivateModDefinitionIdPage", () => {
});
setupMod(modDefinition);

render(<ActivateModDefinitionIdPageWrapper />);
render(<ActivateModDefinitionPageWrapper />);
await waitForEffect();
await userEvent.click(screen.getByText("Activate"));
await waitForEffect();
Expand All @@ -210,7 +208,7 @@ describe("ActivateModDefinitionIdPage", () => {
},
};
setupMod(mod);
const { asFragment } = render(<ActivateModDefinitionIdPageWrapper />);
const { asFragment } = render(<ActivateModDefinitionPageWrapper />);

await waitForEffect();

Expand Down
Loading
Loading